Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   646 / 837
(#) kapu48 válasza szabi95 hozzászólására (») Feb 5, 2015 /
 
Még ezt ajánlom:
Generating the HEX file in AVR Studio 6

Az ATTINY13 alap Fusebit beállításai:
Bővebben: Link

Szerintem a CKDIV8 elöl kikelene veni a pipát!
De ehez már hozzáértő valaki kel!
A hozzászólás módosítva: Feb 5, 2015
(#) szabi95 válasza kapu48 hozzászólására (») Feb 5, 2015 /
 
Most ez jött ki de ez se olyan mint ami neked jött ki.

:1000000009C019C018C017C016C015C014C013C04D
:1000100012C011C011241FBECFE9CDBF10E0A0E671
:10002000B0E0E8EDF0E002C005900D92A036B10717
:10003000D9F720D04FC0E4CF009749F0E3ECF9E0C6
:100040003197F1F700C0000001970097B9F70895C4
:100050008BE087BB17B887E886B9089597B19C7F76
:1000600097B997B1892B87B9369A3699FECF84B163
:1000700095B10895EDDF82E0F1DF81599109843B6C
:10008000934018F0C19AC098F6CFC19AC09AC3980D
:1000900088E592E0D1DFC39A81E090E0CDDFC29A9B
:1000A00084E690E0C9DF82E0D9DFC29882569340AF
:1000B000833E910500F7C39AC198C09A82E0CEDFD3
:1000C000EC0181E090E0B8DFC256D340C33ED105D9
:0800D00090F3D1CFF894FFCFAB
:00000001FF
Inkább belemásolom a hex be ami neked jött ki és vagy működik vagy felrobban az akku
És kijött egy error is.
A hozzászólás módosítva: Feb 5, 2015

asd2.jpg
    
(#) kapu48 válasza szabi95 hozzászólására (») Feb 5, 2015 /
 
Nálam ez a kód:
  1. /*
  2.  * GccApplication2.c
  3.  *
  4.  * Created: 2015.02.04. 19:16:55
  5.  *  Author: Kapu48
  6.  */
  7.  
  8.  
  9. #include <avr/io.h>
  10. #include <util/delay.h>
  11.  
  12. #define F_CPU   4800000UL / 8  // Az alkalmazott órajel még kétséges!!???
  13.  
  14. #define PIN_RED                 PB1
  15. #define PIN_GRN                 PB0
  16. #define SHT_DWN                 PB3
  17. #define SHUNT                   PB2
  18.  
  19.  
  20. #define RED_ON()                PORTB |=  (1<<PIN_RED)
  21. #define RED_OFF()               PORTB &= ~(1<<PIN_RED)
  22. #define GRN_ON()                PORTB |=  (1<<PIN_GRN)
  23. #define GRN_OFF()               PORTB &= ~(1<<PIN_GRN)
  24.  
  25. #define DO_SHTDOWN()        PORTB |=  (1<<SHT_DWN)
  26. #define DO_CHARGE()         PORTB &= ~(1<<SHT_DWN)
  27. #define SHUNT_ON()          PORTB |=  (1<<SHUNT)
  28. #define SHUNT_OFF()         PORTB &= ~(1<<SHUNT)
  29.  
  30.  
  31. #define CELL_NUM                        6
  32. #define CELL_COMPLETED_V        CELL_NUM*1.41
  33. #define CELL_ERROR_V            CELL_NUM*1.78
  34.  
  35. const unsigned short CELL_COMPLETED_ADC     = 1024*CELL_COMPLETED_V/5/2;
  36. const unsigned short CELL_ERROR_MAX_ADC     = 1024*CELL_ERROR_V/5/2;
  37. const unsigned short CELL_ERROR_MIN_ADC     = 1024*1.42/5/2;
  38.  
  39. //-------------------------------------
  40. void m_delay_10ms(unsigned short val) {
  41.         //-------------------------------------
  42.         while(val--) _delay_ms(10);
  43. }
  44.  
  45. //-------------------------------------
  46. void init() {
  47.         //-------------------------------------
  48.         DDRB = (1<<PIN_RED)|(1<<PIN_GRN)|(1<<SHT_DWN)//kimenetek
  49.  
  50.         //Init ADC
  51.         ADMUX = 0x00;
  52.         ADCSRA =  (1<<ADEN)
  53.         |  (0<<ADATE)
  54.         |  (0<<ADSC)
  55.         |  (1<<ADPS2)
  56.         |  (1<<ADPS1)
  57.         |  (1<<ADPS0)
  58.         ;
  59. }
  60.  
  61. //-------------------------------------
  62. unsigned short ADConvert(unsigned char channel) {
  63.         //-------------------------------------
  64.         ADMUX &= ~(1<<MUX1|1<<MUX0);
  65.         ADMUX |= channel;
  66.         ADCSRA |= (1<<ADSC);
  67.         while(ADCSRA & (1<<ADSC));
  68.         return ADC;
  69. }
  70.  
  71. //-------------------------------------
  72. int main(void) {
  73.         //-------------------------------------
  74.         unsigned short adc;
  75.  
  76.         init();
  77.  
  78.         for(;;)  {
  79.                 adc = ADConvert(2);     //mérés
  80.                 if(adc>=CELL_ERROR_MAX_ADC || adc<CELL_ERROR_MIN_ADC) {
  81.                         //ERROR LED
  82.                         RED_ON();
  83.                         GRN_OFF();
  84.                 } else {
  85.                         //Sárga, töltődik...
  86.                         RED_ON();
  87.                         GRN_ON();
  88.  
  89.                         DO_CHARGE();            //töltés be
  90.                         m_delay_10ms(600);      //6mp töltés
  91.                         DO_SHTDOWN();           //töltés ki
  92.                         m_delay_10ms(1);        //vár töltés ki-re
  93.  
  94.                         SHUNT_ON();                     //sönt be
  95.                         m_delay_10ms(100);      //1mp sönt
  96.                         adc = ADConvert(2);     //mérés
  97.                         SHUNT_OFF();            //sönt ki
  98.  
  99.                         while(adc>=CELL_COMPLETED_ADC && adc<CELL_ERROR_MAX_ADC) {
  100.                                 DO_SHTDOWN();//töltés ki
  101.                                 RED_OFF();
  102.                                 GRN_ON();
  103.                                 adc = ADConvert(2);
  104.                                 m_delay_10ms(1);
  105.                         }//Completed - While
  106.                 }//Voltage Detect
  107.         }//for
  108. }


És az eredmény:
  1. :1000000009C021C020C01FC01EC01DC01CC01BC015
  2. :100010001AC019C011241FBECFE9CDBF10E0A0E661
  3. :10002000B0E0E8EEF0E002C005900D92A636B10710
  4. :10003000D9F710E0A6E6B0E001C01D92A636B107E0
  5. :10004000E1F71FD04FC0DCCF009741F0E3ECF9E0BF
  6. :100050003197F1F700C000000197C1F708958BE0D8
  7. :1000600087BB17B887E886B9089597B19C7F97B981
  8. :1000700097B1892B87B9369A3699FECF84B195B15D
  9. :100080000895EDDF82E0F1DF8159904023E0843B69
  10. :10009000920718F0C19AC098F5CFC19AC09AC39838
  11. :1000A00088E592E0D1DFC39A81E090E0CDDFC29A8B
  12. :1000B00084E690E0C9DF82E0D8DFC29882569340A0
  13. :1000C000833E9105F8F6C39AC198C09A82E0CDDFCD
  14. :1000D000EC0181E090E0B8DFC256D340C33ED105C9
  15. :0800E00090F3D0CFF894FFCF9C
  16. :0600E800910045046203D3
  17. :00000001FF


Done building target "Build" in project "GccApplication2.cproj".
Done building project "GccApplication2.cproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
(#) szabi95 válasza kapu48 hozzászólására (») Feb 5, 2015 /
 
Ha azt bemásolom és build-elem akkor az jön ki mint a legutóbb.
(#) kapu48 válasza szabi95 hozzászólására (») Feb 5, 2015 /
 
Akkor kezd elölről:
1.:Create a New C Project for GCC in Atmel Studio 6

Javítottam a kódon:
  1. #include <avr/io.h>
  2.  
  3. #define F_CPU   (4800000UL / 8)  // Az alkalmazott órajel még kétséges!!???
  4. #include <util/delay.h>
  5.  
  6. ...
A hozzászólás módosítva: Feb 5, 2015
(#) kapu48 válasza szabi95 hozzászólására (») Feb 5, 2015 /
 
Elnézést kérek!
Nálam Debugon állt a fordítás, Releasen már az eredmény hasonló a tieddel!
  1. :1000000009C021C020C01FC01EC01DC01CC01BC015
  2. :100010001AC019C011241FBECFE9CDBF10E0A0E661
  3. :10002000B0E0E0EEF0E002C005900D92A636B10718
  4. :10003000D9F710E0A6E6B0E001C01D92A636B107E0
  5. :10004000E1F71FD04BC0DCCF07C0EBEDF5E03197F7
  6. :10005000F1F700C0000001970097B9F708958BE011
  7. :1000600087BB17B887E886B9089597B19C7F97B981
  8. :1000700097B1982B97B9369A3699FECF84B195B13E
  9. :100080000895EDDF82E0F1DF81599040C19A23E0CD
  10. :10009000843B920710F0C098F5CFC09AC39888E5CA
  11. :1000A00092E0D2DFC39A81E090E0CEDFC29A84E68C
  12. :1000B00090E0CADF82E0D9DFEC01C29809C0C39AA0
  13. :1000C000C198C09A82E0D1DFEC0181E090E0BCDF12
  14. :1000D000C256D340C33ED10590F3D4CFF894FFCF9E
  15. :0600E000910045046203DB
  16. :00000001FF
(#) mucsa hozzászólása Feb 5, 2015 /
 
Üdv. urak.
Rövid, igen-nem kérdésem lenne:
Egy Atmega16A-PU kapcsolásban potmétert raknék.Eddig az 1K merült fel, helyette jó a 10K-s is?(nincs erről adat megadva)
..és még 1 kérdés:ha 2x megépítem, az win7 alatt ütközni fog? át kell írni valamilyen azonosítót a kódjában, vagy megoldja a win7?(C-ben van írva)
Köszikécske.
(#) mucsa válasza mucsa hozzászólására (») Feb 5, 2015 /
 
Első kérdés bonyolítva:
Vegyesen rakhatok rá potikat? Azért kérdem,mert nem vagyok tisztában a feszültség esések, áramkorlátokkal(első AVR-em). USBről lesz meghajtva,nem aktív hub és nem külső táp.
A vegyes potik azért merültek fel,mert egy tolópotit is raknék amiből csak 10K-sat találtam, a tekerős potik.
(#) kapu48 válasza mucsa hozzászólására (») Feb 5, 2015 / 1
 
Úgy látszik, most mindenkinek akad más munkája?

Ezért az én véleményem, ha több potit akarsz párhuzamosan bekötni 1 PC.USB tápra?
Akkor felejtős az 1K, Inkább 10K – 100K(A) lehetőleg egyformák.

A 2x megépítet egyforma rendszeredet a Win7 megtudja különböztetni, mivel valószínű 2 különböző USB portba fogod bedugni.
Neked lesz segítség az azonosításukban, ha nem egyformán jelentkeznek be.
(#) csabeszq válasza kapu48 hozzászólására (») Feb 5, 2015 1 / 1
 
Érdekes felvetés, mert szerintem az 1k-val azon túl, hogy 25mW-ot megeszik, semmi probléma nincs. Próbapanelen szoktam 1k-s potmétert tologatni, de mondjuk elemnél már nem feltétlen előnyös, mert jóval többet fogyaszt, mint az IC. Ha pedig 20 db ilyet beraksz, akkor már 0.5W-nál jársz.

A 100k-s potmétert már nem ajánlottam volna, a speckó is azt írja, hogy az ADC 10k-ra lett optimalizálva.

Idézet:
„The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or
less. If such a source is used, the sampling time will be negligible. If a source with higher impedance
is used, the sampling time will depend on how long time the source needs to charge the
S/H capacitor, with can vary widely. The user is recommended to only use low impedant sources
with slowly varying signals, since this minimizes the required charge transfer to the S/H
capacitor.”
A hozzászólás módosítva: Feb 5, 2015
(#) szabi95 válasza kapu48 hozzászólására (») Feb 6, 2015 /
 
Nekem is debug-on állt de itt is debug-on van.Ha átrakom release-re akkor is ugyan az jön ki. :

:1000000009C019C018C017C016C015C014C013C04D
:1000100012C011C011241FBECFE9CDBF10E0A0E671
:10002000B0E0ECECF0E002C005900D92A036B10714
:10003000D9F71FD049C0E4CF009741F0E3ECF9E0D5
:100040003197F1F700C000000197F6CF08958BE0DB
:1000500087BB17B887E886B9089597B19C7F97B991
:1000600097B1982B97B9369A3699FECF84B195B14E
:100070000895EDDF82E0F1DF81599109C19A843B57
:10008000934010F0C098F6CFC09AC39888E592E0EC
:10009000D3DFC39A81E090E0CFDFC29A84E690E09C
:1000A000CBDF82E0DADFEC01C298C256D340C33E18
:1000B000D10500F7C39AC198C09A82E0CEDFEC0167
:0C00C00081E090E0B9DFF1CFF894FFCFB1
:00000001FF

A program alapján meg tudod mondani hogy melyik lábra kell kötni a piros meg a zöld ledet?(egyik 5 ös lábra másik 6 osra)
A hozzászólás módosítva: Feb 6, 2015
(#) mucsa válasza csabeszq hozzászólására (») Feb 6, 2015 / 1
 
Köszönöm,mindkettőtöknek a törődést. 10k-sat veszek.
(#) kapu48 válasza szabi95 hozzászólására (») Feb 6, 2015 /
 
Eddigi írásaid szerint attiny13-ast használsz?
Adatlap lábkiosztás 2.oldal

A programod szerint:
  1. 1.      #define PIN_RED   PB1
  2. 2.      #define PIN_GRN   PB0
  3. 3.      #define SHT_DWN   PB3
  4. 4.      #define SHUNT     PB2


A Debug beállítást hibakeresésre használjuk.
A véglegesen használt kódot Release ként fordítsd le!
A hozzászólás módosítva: Feb 6, 2015
(#) kapu48 válasza szabi95 hozzászólására (») Feb 6, 2015 /
 
Így messziről nem tudom, mit szúrsz el?

Ennél jobban nem tudom elmutogatni a teendőket!

Hiszen már az elején mondtam, hogy ilyen kevés háttér ismerettel ez nem fog neked menni!
(#) szabi95 válasza kapu48 hozzászólására (») Feb 6, 2015 / 1
 
Köszi, nem tudtam hogy ez is benne van az adatlapban.
Idézet:
„Hiszen már az elején mondtam, hogy ilyen kevés háttér ismerettel ez nem fog neked menni!”

Ezért is kértem hogy valaki fordítsa le nekem.
Majd azt a hex-et használom ami neked jött ki.
Köszi a segítséget!
(#) Gj hozzászólása Feb 7, 2015 /
 
Üdv!
Hogyan működik az ATMega8 reset lába? Mit kell beállítani ahhoz, hogy ha alacsony/magas szintre kerül, akkor induljon újra? A dokumentációban nem sikerült megtalálnom.
(#) kapu48 válasza Gj hozzászólására (») Feb 7, 2015 /
 
Mert ez nem is lehetséges!

Legfeljebb 1 külső inverter segítségével.
(#) Gj válasza kapu48 hozzászólására (») Feb 7, 2015 /
 
Akkor mire is jó a reset láb?
(#) kapu48 válasza Gj hozzászólására (») Feb 7, 2015 /
 
Fordítva viszont jól működik!

Ha H/L szintre vált újra indítja a porcit.
(#) zombee válasza Gj hozzászólására (») Feb 7, 2015 / 2
 
És amíg LOW marad, addig a proci is RESET-ben marad. Ki van ez találva, hidd el nekem.

Programból szeretnéd újraindítani? Arra ott a watchdog...
(#) Gj hozzászólása Feb 7, 2015 /
 
Fizikailag egy gombbal szeretném. Magyarán egy felhúzóellenállás és a gomb meg húzza földre. Köszönöm!
(#) kovacsj hozzászólása Feb 7, 2015 / 1
 
Sziasztok! Köszönöm szépen mindenkinek a segítséget! Különösen killbill-nek és kapu48-nak, valamint zombee-nek tartozom köszönettel, de ugyanúgy hálás vagyok mindenkinek, aki segíteni próbált! Az eszköz (ltc1864) jól működik. Most egy kis ARM következik ismét. Ezzel is támadt egy új ötletem.
(#) kapu48 válasza Gj hozzászólására (») Feb 7, 2015 / 1
 
Szerintem a legjobb megoldás:
Bővebben: Link
(#) kovacsj hozzászólása Feb 7, 2015 /
 
Kövezzetek meg, de én figyelmetlenségből néhány segítséget leminősítettem az értékelésnél! És nem lehet visszavonni. (((((((((((((((((((((((((((((((((
Nem volt szándékos. Mea culpa! Maxima mea culpa! (((
A hozzászólás módosítva: Feb 7, 2015
(#) HiMen hozzászólása Feb 8, 2015 /
 
Kaptam egy házilag gyártott STK500 -at. ATMega32 szeretnék vele programozni.

A win8.1-em azonban "Ismeretlen USB eszköz (érvénytelen konfigurációleíró)" mond ha csatlakoztatom a géphez. Eddig 10 drivert töltöttem már le, de mindegyikre azt mondja, hogy "Már telepítette a legjobb illesztőprogramot az eszközhöz, a windows megállapította, hogy az eszköz illesztőprogramja naprakész"

Őrület!

Honan tudnék win8-as STK500 drivert letölteni?
(#) zombee válasza HiMen hozzászólására (») Feb 8, 2015 /
 
STK500 driver olyan nincs, mivel a szabvány soros porton működik. Neked az USB emulátorra kell driver. Véletlenül nem AVR-Doper? Mert ha igen akkor esélytelen.
(#) HiMen válasza zombee hozzászólására (») Feb 8, 2015 /
 
Ez a kütyü amit kaptam (stk500 azt mondták) USB csatlakozója van.
(#) zombee válasza HiMen hozzászólására (») Feb 8, 2015 /
 
Értem. Ha USB-s akkor lehet bármi. Azt kéne először megnézni hogy pontosan micsoda.
Pl. a win eszközkezelőben(devmgmt.msc) kellene megnézni a "VID/PID" értékét.
(#) mucsa hozzászólása Feb 9, 2015 /
 
Sziasztok.
Én is megkaptam az STK500-amat. Köszi.
AVRstudio6-tal töltenék egy meglévő hex-et, 1 atmega16-ra.
ISP módra gondoltam, az jó lesz? és aszerint jó az alábbi kacsolás? Az STK-mon van 10pin és 6 pin csatl. is. (TPI, PDI mód nem tudom mire jó, vagy azt kéne-e használnom)
Köszi ha valaki felvilágosít.

conn.jpg
    
(#) HiMen válasza zombee hozzászólására (») Feb 9, 2015 /
 
Mivel tegnap minden drivert telepítettem amit csak találtam a neten, mára amikor csatlakoztattam a kütyüt AVR-Doper -t irt ki rá az eszközkezelőben.

No meg felkijáltójelet ezzel:
"Az eszköz illesztőprogramjai nincsenek telepítve. (Kód: 28)
Nincs az eszközzel kompatibilis illesztőprogram.
Az eszköz illesztőprogramjának megkereséséhez kattintson a Frissítés gombra."

Azután ráeresztettem a könyvtárra, amiben összegyűjtöttem a sok ilyen-olyan drivert, erre ezt írta ki:

"A Windows talált illesztőprogramot az eszközhöz, de a telepítés során hiba történt. Virtual communications Port. A külső gyártótól származó INF fájl nem tartalmaz digitális aláírási információt"
No meg keressem meg a gyártót...

Device USB\VID_16C0&PID_05E1\avrdoper was configured.

Nekem nem kell digitális aláírás, ha meg nem lehet anélkül akkor minek tesznek fel olyat aminek nincs aláírása... ?! Nem igaz, hogy ennyit kell szenvedni egy sima programozóval.
Valamikor régen bedugtam négy madzagot a párhuzamos portba és kész. A Basic Stamp-nál még mindig így megy. Ha lenne párhuzamos portom, esküszöm azzal csinálnám és eszembe se jutna gondot csinálni magamnak USB-vel. De hát már csak USB -van, ezért szereztem be ezt a programozó kütyüt is...
Következő: »»   646 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem