Fórum témák
» Több friss téma |
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
A cikknél a driverek között ott a 64 bites driver. Nekem kiválóan megy. Eredeti Win7 Home Premium x64.
avrcdc_inf.zip\avrcdc_inf\vista64 (ez w7 64 is)
Köszönöm, majd megpróbálom, egyenlőre 32 bit alatt vagyok. Bár nekem úgy tűnt, mintha nem a driverrel lenne baja hanem a digitális aláírást hiányolja. Mindegy, majd kipróbálom.
Sziasztok!
Olyan Veszprémi fórumtársat keresek aki segiteni tudna nekem egy Atmega8-as microcontroller felprogramozásában. Programozó az van (avr doper),csak még ezt a fajta controllert nem programoztam Köszönöm:Joco
Szia, nem veszprémi vagyok, de ha már a főrumba írtál, akkor segítek. Szóval ajánlani tudom az Nyolc lábbal AVR cikksorozatot, amely nagyon szépen leírja hogy kell programozni, és az avr doper bemutató oldala is leírja, hogy hogy kell felprogramozni egy avr-t. Ha pedig a szoftveres programozásra gondoltál, azt is szépen bemutatja a 8 lábú cikksorozat. Jó olvasgatást kívánok hozzá.
Köszönöm a válaszod.Átolvasgatom cikket.Igazából
ezektöl a fuse bit állitgatásoktól félek,nem igazán tiszta még elöttem ez a része.Ez idáig PIC programozással foglalkoztam.Véleményem szerint egyszerübb programozni őket,de sajnos most egy olyan feladat van,ahol Atmega8-as van az áramkörbe. Még egyszer köszönöm szépen a segitséged
AVRStudio-ban viszonylag egyszerű állítani mindent, mert rendes szöveges kiírás van, nem bitenként kell mindent beállítani. Órajelet is egy listából ki lehet választani és ha az ember nem nyom véletlenül félre, akkor gond nem lehet.
Sziasztok!
Eclipse + AVR plugin + JTAG ICE mkII. Debian Linux. Az mkII-vel nem tudom beírni a programot a kontrollerbe. Míg parancssorból a -Pusb működik, Eclipse alól ugyanez nem megy. Tud valaki erre megoldást? (Az STK500-zal be tudom tölteni a programot az Atmega16-ba.) Másik kérdésem az lenne, hogy az .elf-et át kell alakítani, .hex-szé, vagy így is beírható? (Ez utóbbi esetben valamit nem jól csináltam, mert nem jó a program.) Ha át kell alakítani akkor az avr-objcopy-val kell?
Hali!
Találtam egy "valamit"! link:Bővebben: Link A gond csak annyi, hogy hadilábon állok az idegen nyelvekkel. Google fordítoja számomra nem érthető modon adta vissza. Az oldal Link Segítsen valaki a megértésében! Még egy kérdés: Felhasználhato-e programletöltésre, ha van már bootloader a chipben? Köszi
Hat igazsag szerint ezekkel a dolgokkal anno annyit szivtam en is linux alatt, hogy mar tobb mint 6 eve konzolban programozok avr-t, a mcedit-et hasznalva szerkesztonek (Midnight Commander editor). Az avrdude nekem nem ment kozvetlen elfbol, ezert irtam ra egy bonyolultabb agyon include-olt Makefile rendszert, ami vegeredmenyben a kulonbozo teruleteket kulonvalasztotta binaris alomanyokka. A lenyeg a lenyeg igy tudod kinyerni az elf-bol a szukseges dolgokat:
ahol: OBJCOPY = $(Q)avr-objcopy TARGET_NAME = az elf file ami keletkezett TARGET_FLASH_IMAGE = az a fajl ahova a binaris flash memoria tartalom kerul TARGET_EEPROM_IMAGE = az a fajl ahova a binaris eeprom tartalom kerul TARGET_FUSES_HEX = az a fajl ahova a fuse bitek kerulnek hexadecimalis formaban (de nem intel hex csak sima hex) TARGET_LFUSE = az a fajl ahova az lfuse erteke kerul hexaban (pl 0xFF) TARGET_HFUSE = az a fajl ahova az lfuse erteke kerul hexaban (pl 0xFF) TARGET_EFUSE = az a fajl ahova az lfuse erteke kerul hexaban (pl 0xFF) ha Q = @ akkor az outputra nem kerul ki a parancs, ha Q = akkor kikerul.
Köszönöm szépen!
Abban reménykedtem, hogy menni fog Eclipse alól is, de ha nem, akkor marad a konzolos itt is. Vagy az AVR Studio. Ott mindig jó, bár a Windowst csak erre használom, semmi másra.
Ne add fel, lehet hogy fog menni, en mar nagyon sok eve nem probalkoztam, azota sok minden valtozhatott.
Ez egy usb-virtualis soros port illesztesnek a leirasa. Akkor hasznalhato letoltesre, ha tamogatja a bootloader(valoszinuleg nem), de ehhez tudni kene, hogy mifele bootloaderrol is van szo...
Köszi!
Igazából az usb-s kommunikáció érdekelne laptop és avr között. Persze "szájbarágva" kellene, mert totál kezdő vagyok.
Kipróbáltam, azzal sem ment, de már mindegy, mert visszaköltöztem 32 bitre.
Ez a kód miért nem akar menni ATMega8535-ön? A Fizikus cikkei alapján ollóztam össze, amelyekben ATMega8-ra van írva, de a fordító nem jelez hibát. Igazából a LED-et villogtatja is, de ha küldök neki valamit sorosan, akkor úgy marad a LED ahogy éppen volt, de nem küldi vissza az adatot, és itt vége. A LED lefagyásából arra következtettem, hogy addig jó, hogy megkapja az adatot, és megvan a megszakítás, de nem tudja visszaküldeni(próbáltam úgy is, hogy ne küldje vissza, hanem csak annyi legyen a megszakításban, hogy olvassa be, de úgy is ugyanez van). Miért?
Szerk.: most látom, hogy ha mindent kiveszek a megszakításból, akkor is lefagy.
Szia!
Ha kezdő vagy, akkor szerintem ne pont ezzel a projektel kezd a tanulást, hanem valami könnyebbel. De tudok ajánlani más alternatívát, amivel ugyan úgy megtudod valósítani az usb avr kommunikációt. Az FTDI chipjei közt nézz körül pl. az FTDI232RL megfelelő ilyesmire. Ez a chip biztosítja, hogy a pc usb portját átalakítsa az avr-nek UART kommunikációvá. Szóval az avr annyit lát az egészből, mint egy UART kommunikációból.
Az alábbi oldalakat ajánlom akkor neked, amennyiben ezeket alaposan átolvasod, akkor nem kellene gondod legyen.
AVR CDC232 LUFA LibUSB USB szabvány
A driver nincsen aláírva digitálisan, mivel az nem kevés pénzbe kerül. A 64 bites windows pedig biztonsági okokból nem engedi a nem aláírt driverek telepítését, mivel a legtöbb oprendszer összeomlást a hibás driverek okozzák.
Ellenben a windows indításánál az F8 billentyűt nyomkodva feljön egy indítási menü, ahol van egy olyan bejegyzés, hogy digitális aláírás megkövetelésének megtiltása (vagy valami ilyesmi).
Így szokták ha nem akarunk semmi egyebet se csinálni a while-al. Am én a helyedben a megszakítást megcserélném. Vagyis timer0-val villogtasd a ledet, és main-ben legyen az uart kommunikáció, és ellenőrzés céljából amit kap az avr azt kitenném egy portnyi ledre.
Köszönöm, de itt az a gond, hogy atmega8-cal ez tökéletesen működik, atmega8535-tel viszont nem. És nem tudom mit kell átírni, hogy jó legyen. Nézegettem az adatlapot, de nem értem el vele semmit(lehet, hogy rossz helyen néztem, meg azért ennyire még nem tudok angolul sajnos).
sikolymester: Ezt kipróbálom majd, hátha beválik, köszönöm.
Kipróbáltam, csak az a baj, hogy hiába jó, ha újra indítom, és akkor nem állítom be, akkor megint nem jó. Kár, hogy nem ugyanúgy tölti be mindig. Azért köszönöm.
A 'void' es a pontosvesszo nyilvan csak formai szepsegek -- pontosvesszo helyett en megis inkabb a kapcsos zarojeleket preferalom, hiszen ugy lehet latni, hogy nincs a ciklunak magja. Sot, lehet akkor oda egy megjegyzest is tenni, hogy nem kell semmit sem csinalni a ciklus magjaban -- es akkor meg olyan hiba sem lehet, hogy a pontosvesszo lemarad veletlen, es akkor a kovetkezo sor automatan vegrehajtodik, es nyilvan ha faradt az ember, akkor nehez kiszurni a pontosvesszo hianyat (hisz a hianya hibat nem okoz).
Na mindegy, ezek helyett en inkabb azt kifogasolnam, hogy nincs timeout betervezve, azaz ha a feltetel nem teljesul akkor az idok vegezeteig ott varakozik. Emiatt en mindig valami hasonlot szoktam alkalmazni:
Most a tobbi reszet a logikanak nem neztem!
Helló!
Leformáztam, újratelepítettem a win xp-met, és továbbra is gond van a doper programozóval. Felismeri, hogy új eszköz van rádugva, utána kiírja, hogy telepítve van az eszköz, és utána pedig az eszközt nem lehet felismerni szöveg jön a buborék ablakban, és ismeretélen eszközként látszik.... Innentől nem hiszem, hogy a pc-vel lenne a probléma, de az meg kizárt, hogy 2 programozó is ugyan akkor ugyan úgy hibásodik meg. Valakinek valami ötlete? Már én is csak arra tudok gondolni, hogy a 3,6V-os zenerek a hibásak, ugyanis csak az okozhat hibát az usb kommunikációban, vagy legalábbis nagyobb az esélye, mint hogy az avr belső szoftvere sérül meg.
A pc-nek nem csak szoftveres oldala van, hanem hardveres is. Másik gépben megy a programozó?
Megy másik gépen. Hárdveres oldalt hogy teszteljem le?
Kipróbáltam, és megszakítás nélkül, úgy, hogy a főprogram folyton beérkező adatra vár, és azonnal visszaküldi, úgy jó az UART. De ha már kell a megszakítás akkor nem. Pedig ha jól néztem az adatlapot, ennek ugyanannak kell lennie atmega8535-nél, mint atmega8-nál.
De akkor vajon miért nem megy?
Én tudom miért , (most jöttem rá).
ISR makrók ha ISR-ezel előtt érdemes itt megnézni hogy hogy is van pontosan a név. Atmega8 -> ISR(USART_RXC_vect) Viszont Atmega8535 -> ISR(USART_RX_vect) Most már menni fog.
Epp most akartam megnezni az ATmega8 es az ATmega8535 megszakitasok kozotti kulonbseget, de latom mar megeloztel!
Nagyon köszönöm, már működik! Jó kis oldal amit linkeltél, még kellhet máskor is, köszönöm!
Én ezeket a neveket általában a header-ből veszem ki. Első fordításnál a kiválasztott uC-nek megfelelő .h-t automatikusan belinkeli. Azt megnyitom és ott vannak benne a nevek
|
Bejelentkezés
Hirdetés |