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   497 / 840
(#) rockersrac válasza zombee hozzászólására (») Dec 1, 2012 /
 
Szóval, ha jól értem, simán betölthetem az atmega8 programját a 88-ba? Egyébként én is órát építeni terveztem vele, emiatt örültem meg a két ic-nek(eredetileg a vfd kijelzők miatt hoztam el a paneleket, és későbbiek folyamán tudatosult bennem, hogy ez a két ic is rajta van. )
A hozzászólás módosítva: Dec 1, 2012
(#) Adam329 hozzászólása Dec 1, 2012 /
 
Azt, hogyan lehet megoldani, hogy a program futása ugyanazon gomb lenyomására induljon és álljon meg? Azt meg tudtam csinálni, hogy egy gomb lenyomására indul és egy másik lenyomására leáll.
(#) Gamo hozzászólása Dec 2, 2012 /
 
Sziasztok!
Egy egyszerű kapcsolást szeretnék megépíteni, hogy ismerkedhessek az AVR-ekkel.
Azonban a rajzban szereplő AT90S1200 IC-t nem tudom beszerezni.
A kérdésem, hogy tudtok-e ajánlani olyan helyettesítő IC-t, ami lábkompatibilis és software kompatibilis az AT90S1200-el.
Vagy esetleg egy beszerzési forrást az említett alkatrészre...
Előre is köszönöm!
(#) zombee válasza Gamo hozzászólására (») Dec 2, 2012 /
 
Ismerem, a gyári STK500 frissítő IC-je is ilyen.
Ennek leszármazottja az ATTiny2313, teljesen lábkompatíbilis vele.
Elvileg hex-ben is kompatíbilis(tehát nem kell a kódot újrafordítani),
de ha van rá lehetőség, inkább fordítsd újra a meglepetések elkerülése végett!
(#) Istvanpisti válasza Adam329 hozzászólására (») Dec 2, 2012 / 1
 
Szia !
Én úgy szoktam, hogy az AVR egyik lábán bekapcsolom a felhúzó ellenállást, és ide csatlakozik egy tranzisztor, ami ezt a lábat földre húzza, ha lenyomtuk a gombot. Egy másik lábon vezérelek egy mások tranzisztort, ami egy P-FET gate-jét húzza a GND-re, amitől az vezetni fog. Ezzel a FET-tel van párhuzamosan a gomb. (móricka rajz mellékelve)
A működés a következő:
Bekapcsolás :
Ha megnyomjuk a gombot, akkor megkapja a tápot és elindul a program, amiben rögtön p. 1000ms-ig várunk. Ha az idő letelte előtt elengedjük a gombot, akkor visszaáll az alap állapot, ha tovább nyomtuk, akkor a uC bekapcsolja az öntartást a Q1 tranzisztorral. Egy változóban jelezzük a bekapcsolt állapotot (on=1)
Kikapcsolás :
Egy Timer ISR-ben (nálam ált 100Hz) figyeljük a gomb megnyomását. Ha megnyomtuk és az on==1 akkor növelünk egy változót (on_off++), majd megnézzük, hogy ez a változó elért-e egy áltakunk beállított értéket (OFF_DELAY), ha igen akkor az on változót beállítjuk 0-ra.
A főprogramban figyeljük ezt a változót és ha 0, akkor elmentjük amit kell, majd az öntartó Q1 bázisára csatlakozó PIN-t L-re kapcsoljuk, amitől megszűnik a táp.
Az alábbi kis programrészletben az remélem követhető.


  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3. #include <util/delay.h>
  4.  
  5. #define F_CPU 8000000UL                                                         //8MHz az órajel
  6.  
  7. #define begomb                  (1 << PD6)
  8. #define ontart                  (1 << PD7)
  9. #define VCC_ON                  DDRD|=ontart;PORTD|=ontart      //az öntartás pin kimenet és H szint van rajta, aminek ahtására a
  10.                                                                                                         // Q1 tranzisztor földre húzza a T1 FET gate-jét
  11. #define VCC_OFF                 PORTD&=~ontart                  //az öntartás pinen L szint lesz a T1 nem vezet, kikapcsolja uC tápját
  12. #define OFF_DELAY               100                                                     // ekkor 1000msec-ig kell nyomni a gombot, hogy kikapcsoljon
  13.  
  14. volatile char on_off    =0;
  15. volatile char on                =0;
  16.  
  17.  
  18. int main (void)
  19. {
  20.         _delay_ms(1000);                                                //1000ms-ig vár, ha még mindig nyomjuk a BE gombot akkor továbblép
  21.         VCC_ON;                                                                 //öntartás bekapcsolása
  22.         on=1;                                                                   //az on változó beállítása
  23.         PORTD|=begomb;                                                  //a be/kikapcsoló gombot figyelő bit felhúzó ellenállásának bekapcsolása
  24.         //portok, timerek, egyebek inicializálása
  25.         while(1)
  26.         {
  27.                 //a program kód ide jön
  28.  
  29.                 if(!on)
  30.                 {
  31.                         //adatok mentése, ha kell, majd a tápfesz. kikapcsolása
  32.  
  33.                         VCC_OFF;
  34.                 }
  35.         }
  36. }
  37.  
  38. ISR(TIMERX_Y_vect)
  39. {
  40.         //amit akarsz még itt csinálni nálam 10ms-ként fut le (100Hz-es)
  41.         //lehet időt mérni, ADC-t indítani, gombokat figyelni, stb.
  42.  
  43.  
  44.  
  45.         //----------------------- kikapcsoló rutin --------------------
  46.         if(!(PIND & begomb))
  47.         {                               // ha nyomjuk a begombot
  48.                 if(on)         
  49.                 {                      
  50.                         //Ha bekapcsolt állapotban van
  51.                         if(on_off > OFF_DELAY)
  52.                         {               //Ha az OFF_DELAY*10ms-ig nyomtuk a BE gombot, akkor kikapcsol
  53.                                 on_off=0;
  54.                                 //  kikapcsolás...
  55.                                 on=0;
  56.                         } else on_off++;
  57.                 }
  58.         } else {on_off=0;}              //ha nem nyomtuk elég ideig a kikapcsloáshoz, akkor a változót lenullázzuk
  59.  
  60. }
A hozzászólás módosítva: Dec 2, 2012

kép1.jpg
    
(#) pokornyib hozzászólása Dec 2, 2012 /
 
Ma sikerült hozzájutnom egy avr programozóhoz. A AVR-Doper cikkben leírtak szerint telepítettem a programokat. (AVR Stúdió 4, WinAvr 2008-04-30, LibUSB) Programozni tudok, az oldalról letöltött .hex fájlt, viszont a lefordítás nem megy.
A program megnyitásakor az alábbit írja a Build:
  1. Loaded plugin STK500
  2. gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools.
  3. Loaded plugin AVR GCC
  4. Loaded partfile: C:\Program Files\Atmel\AVR Tools\PartDescriptionFiles\
  5. Error Code: -2147467259:

Ha pedig megpróbálom lefordítani a programot, akkor:
  1. rm -rf led.o  led.elf dep/* led.hex led.eep led.lss led.map
  2. Build succeeded with 0 Warnings...
  3. mmcu=attiny45 -Wall -gdwarf-2 -std=gnu99 -O1 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT led.o -MF dep/led.o.d  -c  ../led.c
  4. /usr/bin/sh: -Wall: command not found
  5. make: [led.o] Error 127 (ignored)
  6. mmcu=attiny45 -Wl,-Map=led.map led.o     -o led.elf
  7. /usr/bin/sh: -Wl,-Map=led.map: command not found
  8. make: [led.elf] Error 127 (ignored)
  9. avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  led.elf led.hex
  10. avr-objcopy: 'led.elf': No such file
  11. make: *** [led.hex] Error 1
  12. Build failed with 1 errors and 0 warnings...

Kárem segítsen valaki, aki jobban ért hozzá.
Köszönettel,
pokornyib
(#) sikolymester válasza pokornyib hozzászólására (») Dec 2, 2012 /
 
Melyik Avr Studio verzió, 4.18?
(#) zombee válasza pokornyib hozzászólására (») Dec 2, 2012 /
 
Telepítsd a WinAVR csomagot!
(#) Mikee91 válasza pokornyib hozzászólására (») Dec 3, 2012 /
 
Szia!
Nekem hasonló problémára ez volt a megoldás:
Project->Config Options->Custom Options-> Use AVR toolchainból kiszeded a pipát, avr-gcc helyére megkeresed ami nálam így van: "C:\WinAVR-20100110\bin\avr-gcc.exe", make helyére pedig: "C:\WinAVR-20100110\utils\bin\make.exe".
A hozzászólás módosítva: Dec 3, 2012
(#) Ami hozzászólása Dec 3, 2012 /
 
HI!

Lenne egy kérdésem. Illesztőt szeretnék programozáshoz, UART/COM portra ATMega8-16AU-hoz
Találtam egy ic-t Régi alaplapon. ST75185C

Ezt találtam róla:
Bővebben: Link PDF

És itt egy kapcsolás:
http://www.datasheetdir.com/ST75185C+RS-232

Fel lehet ezt használni programozásra?
A hozzászólás módosítva: Dec 3, 2012
(#) zombee válasza Ami hozzászólására (») Dec 3, 2012 /
 
Hát programozásra nem biztos hogy jó, de arra biztos hogy UART-on kommunikálj PC-vel.
DE: az IC-nek valahonnan kerítened kell +/-12V-ot, na meg az AVR-nek is +5V-ot.
Ráadásul, ha jól látom, az IC csak SMD tokba van. Tudok ajánlani egy jobbat, a neve MAX232.
Ez előállítja a +/- feszültségeket és csak egy +5V kell neki! És kapható DIP tokba is.

A tiédhez hasonló IC-vel egy SMD-beültetőgép javítása közben találkoztam:
az alaplapon mindkét COM portot hazavágta...
A hozzászólás módosítva: Dec 3, 2012
(#) MacGyver200 hozzászólása Dec 4, 2012 /
 
Sziasztok,

Egy gyors kérdésem lenne, valaki meg tudná mondani, hogy az alábbi (AVR_Doper) ISP programozó pontosan melyik mikrokontrollereknél használható, de például ATMega128 -nál használható? Nem láttam sehol sem egy teljes listát, kerestem google -ön is a sokadik oldalon, illetve itt is több cikket is végig olvastam, stb...

Előre is köszönöm.
(#) sikolymester válasza MacGyver200 hozzászólására (») Dec 4, 2012 /
 
Gyakorlatilag megegyezik az STK500-zal a kompatibilis eszközök köre.
Mellékeltem egy pdf nyomtatást a Studio 4.19-ből.
Az adapteres megjegyzéseket hagyd figyelmen kívül, az csak a bekötés miatt van.
Ami benne van a PDF-ben, azzal menni fog a dopered.

stk500.pdf
    
(#) MacGyver200 válasza sikolymester hozzászólására (») Dec 4, 2012 /
 
Köszönöm! Pont ezt keresetem
(#) TavIR-AVR válasza MacGyver200 hozzászólására (») Dec 5, 2012 /
 
Tipp: Doper csak emulálja az STK500-at, igy jónéhány esetben kompatibilitási gondok lépnek fel!
Keress inkább STK500-at (valódi HW USB) illetve MKII-t (AVR nagyobb tagját, az xMegát is ismeri!). Árban nem sok a különbség....
(#) Ami válasza zombee hozzászólására (») Dec 5, 2012 /
 
Kár....
+/- 12v, +5v nem gond.
ATMega8-16AU-hoz kéne valami programozó. nincs itt valakinek valami kit?
Usb -re jobb lenne.
(#) TavIR-AVR válasza Ami hozzászólására (») Dec 6, 2012 /
 
Programozótippek:

- Doper a maga szívásával és a tyúk/tojás esetével.
- LPTport: STK200 névejn 5 szál drót
- USB illesztőIC (FT245 vagy FT232RL): BitBang mód
- Egy komplett arduino lapka az ArduinoISP programmal
(#) TavIR-AVR válasza zombee hozzászólására (») Dec 6, 2012 /
 
A standard STK500 is eredetileg sorosportos és USB illesztőIC-vel lett ténylegesen USB-s .

Innentől 1 lépés az MKII illetve az integrált USB-t tartalmazó chipekre alapuló... (AT90USBxx, xxU2 ill xxU4 sorozatú chipek)
(#) ColT hozzászólása Dec 6, 2012 /
 
Hello!

Összeoztam egy Arduino klónt, 328P-vel, most a Duemilanove bootloadere ketyeg rajta, úgy tűnik, működik. (Legalábbis az SCK LED villog szépen másodpercenként.)
Paralell programmerrel programoztam fel, az Arduino IDE-ből. USB vagy soros hozzáférésem még nincs (nem ért ide a cucc, amit rendeltem...). A kérdés az lenne, hogy a Paralell programmerrel kiolvasott fuse értékeim jók-e?

Méghozzá ezt olvassa :
Extended: 0x5
High: 0xDA
Low: 0xFF

Ha nem jók, akkor gondolom a következő programírás felülírja a bootloadert...
Köszi, ha valaki tud segíteni!
A hozzászólás módosítva: Dec 6, 2012
(#) TavIR-AVR válasza ColT hozzászólására (») Dec 6, 2012 /
 
Feltelepített Arduino -> boards.txt állományban van...
(#) TavIR-AVR válasza TavIR-AVR hozzászólására (») Dec 6, 2012 /
 
atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05

duemilanove/328

A felülírást a lockbit védi!
atmega328.bootloader.lock_bits=0x0F
A hozzászólás módosítva: Dec 6, 2012
(#) Adam329 hozzászólása Dec 6, 2012 /
 
Hello!

Az alábbi kapcsolást és nyákot terveztem és meg is építettem. Ez volt az első alkalom, hogy ilyesmit csináltam. Az A/D átalakítóra érkező jelet szeretném vele elküldeni a PC-nek soros porton. Bár a terveken egy ATmega323 szerepel valójában ATmega1284-est használok, a lábkiosztása ugyanaz, csak több funkcióval rendelkezik. A forrasztás során nem zártam semmit rövidre, ezt leellenőriztem multiméterrel, az alkatrészek sem hibásak.
JTAG-el szerettem volna programozni de sajnos az AVR Studio 5 nem ismerte fel.
Először arra gyanakodtam, hogy a mikrovezérlő rossz de volt szerencsém kipróbálni egy kölcsön STK500 fejlesztő panelen, ami elég érdekes eredményeket adott. A LED-eket tudtam villogtatni, de a megszakítások és a soros port nem működtek valamiért.
Ennek mi lehet az oka? A mikrovezérlő teljesen új, egyszerű tesztprogramokat töltöttem csak fel rá amikor a fejlesztőpanelen teszteltem. A foglalatokból mindig óvatosan szedtem ki, nem hiszem, hogy meghibásodott volna. A Fuse és Lock bitekkel nem mertem szórakozni, mert úgy tudom annak kellemetlen következményei is lehetnek.
Rosszul kötöttem volna be valamit?
(#) Istvanpisti válasza Adam329 hozzászólására (») Dec 6, 2012 /
 
Szia !

Szerintem nem a MISO,MOSI,SCK-ra kell kötni, hanem a TDI,TDO,TCK...-ra
Bővebben: Link
Ebbe a problémába én is - mások is - belefutottak először. Sokat segít az adott kontroller leírása, bár elég hosszúak, nehéz benne - először- megtalálni amit keresni kell.
Az Atmel kontrollerei nem hibásodnak meg könnyen, eléggé strapabíró szerkezetek, sokszor még a fordított tápfeszültséget is túlélik.
A hozzászólás módosítva: Dec 6, 2012
(#) tecsa válasza Adam329 hozzászólására (») Dec 6, 2012 /
 
Az AVR studio 5 nem támogatja a Jtag ice-ot, t-brid-öt nem tudom programozni, ha valaki esetleg erre tud megoldást akkor szívesen elfogadom.
(#) thomas3 válasza tecsa hozzászólására (») Dec 6, 2012 /
 
AVR Studio 4-el feltudod programozni. Atmel Studi 5-ben megírt kódot lefordítod majd AVR Studio 4-el pedig felprogramozod az atmegádat.
(#) zombee válasza thomas3 hozzászólására (») Dec 6, 2012 /
 
Önök egy "adj pofont a sz**nak" típusú rovatunkat olvasták, köszönjük.

Egyébként nem értem, mitől jobb az 5-ös?
A hozzászólás módosítva: Dec 6, 2012
(#) thomas3 válasza zombee hozzászólására (») Dec 6, 2012 /
 
Kicsit vegyél már vissza az arcozásból...
Ezt meg mért tőlem kérdezed? tecsa kérdésére válaszoltam, hogy mivel tudja felprogramozni. Ezzel a "kókány" megoldással megtudja tenni. De ha Neked van más ötleted akkor szívesen olvasom én is!de valószínűleg nincs mert akkor biztos írtad volna...
(#) thomas3 válasza tecsa hozzászólására (») Dec 6, 2012 /
 
Esetleg még avrdude-al feltudod programozni.
(#) tecsa válasza thomas3 hozzászólására (») Dec 6, 2012 /
 
A T-bird panelon ott a Jtagice, így 4-es verziók valamelyikét használom, amikor valami mást programozok akkor használom az 5ös verziót. Az kicsit jobban tetszik.

Bocsi a hülye kérdésekért, valamit ebből is tanulok.
(#) Adam329 hozzászólása Dec 7, 2012 /
 
Köszönöm a válaszokat. Remélem csak annyi a gond, hogy az AVR Studio 5 nem támogatja és nem kell újat csinálnom. Azért így kötöttem be a JTAG-et mert a legtöbb példában amit a neten találtam is így volt és azokban nem panaszkodtak arra, hogy nem működik.
Egyébként a kapcsolás többi része jó? Kérlek ellenőrizzétek le arra az esetre, hogyha újat kell építenem.
Következő: »»   497 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.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