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 regisztert a chip határozza meg, nem a Bascom.
Valószínű a chipedben nincs ilyen regiszter. A bascomot javasolt frissíteni, a 11.9.0 kb 1.5 éves!
Atmega8 chip-et használok,az adatlap szerint van GICR regisztere... A BASCOM-ra valóban ráférne egy frissítés
Mivel AVR -ben kezdő vagyok, azért kérdezek ilyen alapdolgokat. Nem tudom hogy kell érteni [quote]A regisztert a chip határozza meg, nem a Bascom... Bocs ha nagyon butaságot kérdezek... Idézet: „" c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from won't work as designed"” Ez pedig az időzítőnek a header fájlát hiányolja. Így teljes, és így nem lesz már warning:
Amúgy ha kíváncsi vagy az időzítő függvényeknek az intervallumára, akkor benne van a header fájlban . Itt van: WinAVR-20100110\avr\include\util\delay.h, vagy üsd bé gugliba.
Bascombol 1.11.9.8 demo a legfrisebb, ill a regisztráltból a 1.12.0.0.
A m8def.dat állomány alapján (chipleíró) a GICR régi neve: GIMSK. Miért kellkézzel írnod a regisztert? Ez az INT1 és az INT0 kezelésért felel, ami a Bascom alaputasításaival is elérhető....
Siker ! A GICR helyett GIMSK-t írva a prg. lefordul, és működik ! Egyébként nem kell valami csoda bonyolult prg.-ra gondolni, két nyomógombbal kigyújtok,majd eloltok egy LED-et.
Utánanézve a GIMSK = &B11000000 tényleg az INT0 és az INT1 aktiválása. Nem tudom a BASCOM milyen alaputasításait lehetne használni.. Köszönöm a gyors segítséget ! (Meg fogom próbálni a BASCOM-ot frissíteni, de úgy néz ki,egyelőre ezzel a verzióval is boldogulok)
Kösz, kipróbáltam, ahogy írtad, valóban egyszerűbb és logikusabb ! Köszönöm linket, itt tényleg mindent megtaláltam ! ( Ha nem vagyok ilyen lusta, én is rákereshettem volna...) Most megyek a Tavir-AVR-re, és mindent kikukkolok belőle !
Szia !
Szia! Ez így nem fog helyesen végbemenni.. Az ha az 'if' feltételkezelés több parancsot hajt végre, akkor { } közé kell tenni, különben csak a közvetlenül utána levőt veszi figyelembe, és ami következik azt már nem.
Így fog kinézni a kód:
és a kapcsos zárójel után nem kell pontosvesszőt írni, kivéve, ha tömb értéket adsz meg pl:
Kösznöm, így már megy, de azt a bizonyos értéket nem sikerült megtalálnom maximum kísérletezek...
Ja, és például egy egyszerű led villogtató program lefordított .hex- nek mekkora mérete van.Én 10kb-ot látok az lehetséges?
Lehetseges, fugg attol milyen opciokkal forditottal, sot attol is, hogy hasznaltal-e _delay_ms() fuggvenyt! Mivel az alapertelmezesben float (ill. double) tipusu parametert var, es ha csak nem '1'-et adsz meg neki, akkor berantja az egesz float point aritmetikai konyvtarat -- az pedig nagyon-nagy!
Mellesleg a HEX ben binaris, Notepaddel nyisd meg es nezd meg hogy nez ki.
Szia!
Ennyiből nem tudom megfejteni,mi is a célja a programrészletnek, a hiba helyére utaltam csak. Mondjuk if nélkül a sornak nem sok értelme van, de ; -vel a végén szintaktikailag helyes...
Ez egy hőfokszabályzó lenne, csak eredetileg az előre definiált gombok vannak benne.
3gomb van a hőfok program átállításra, de én egy gombra szeretném leredukálni. Eddig, amit kipróbáltam annyi tett, hogy le nem nyomot gomb mellett is váltogatta a hőfokot, és a két kijelzési formát. Az eredeti és a módosított forráskódot csatoltam.
Köszi a választ ki is próbálom, de valahogy nem tudom elképzelni, hogy egy ilyen egyszerű program 10kb-t foglal és az attiny45 flash memóriája csak 4kb. Szóval ez nem fog rámenni.Amúgy a programot egy az egyben Topi cikkjéből másoltam ki, és főleg ezért nem értem, hogy hogy lehet ez...
A .hex file merete nem azonos a program meretevel !
Azt nezd meg hogy mikor leforditod mennyi bytetot ir ki.
Az szeretnem ha tudnatok ajanlani nekem egy konyen megepitheto programozot amivel tudom programozni a atf16v8 .
Koszi elore is
Értem...De nem a .hex fájlt másolja be a flashbe? Amúgy ha jegyzet tömbben nyitom meg, akkor nem csak 1 és 0 van, hanem: A,F....ez kezd egyre furábbá válni....
Üdv mindenkinek!
A problémám a következő: Upgradeltem az ubuntumat 10.04-re. Azóta az eeprom olvasó illetve író függvények nem fordulnak le egy linkelési hiba miatt:
Bármilyen CPU-ra forgatáskor ezt kapom. Van-e bárkinek bármi ötlete azon kívül, hogy takarítsam le és pörgessek új avr-libc-t?
Pont emiatt HEX! Hexadecimális számokat tartalmaz, azaz 0-tól F-ig.
A méretet fordítás után kiírja a programod. A windows meg a minimális foglalási területet írja ki, ami a féjlrendszer tulajdonsága.
OK! Köszi a választ, tudom hogy idegesítőek a hozzá nem értő emberek hülye kérdései, de csak így lehet valamire jutni.Amúgy most jut eszembe(a hozzá nem ertő emberekről), hogy nem tudja valaki, hogy az avrStudio miért csak a sorszámok és a programon belüli "//" megjegyzések kitörlése után hajlandó lefordítani?
Ha tudod melyik libben van, megadod a forditaskor a lib elereset.
Nem lehet hogy valamelyik globalis valtozot felulirta az upgraddel, es amiatt van? Nezd meg (fejbol nem tudom, elfelejtettem hogy melyik globalis valtozo az pontosan,..)
En mar megneztem volna hogy mi az az az Intel HEX formatum. Mindjart latnad is, hogy nem csak a kodot tartalmazza.
(Lehet hogy van akinek tetszik az oldal hosszu kod, de mellekelni ertelmesebb talan.)
Sziasztok.
Tegnap összekötöttem egy ATMEGA88-20PU AVR -t soros porton a számítógéppel, egy buherált szintillesztővel (holnap beszerzek egy MAX 232, vagy egy USB-TTL szintillesztőt). Ez alapján a mintaprogram alapján dolgoztam Bővebben: Link (mintakód a lap alján) A kódon csak annyit módosítottam (mert nem működött) hogy nem cseréli meg a kis és nagy betűket, hanem közvetlenül azt küldi vissza amit kapott, és csökkentettem BAUDRATE 110 -re. Ha HyperTerminal -al betűt küldök akkor ugyan azt a betűt vissza is kapom, de ha számot vagy ékezetes karaktert, akkor mindenféle írásjel jön vissza. Ha az eredeti programot futtatom, akkor nem cseréli meg a kis és nagybetűket, hanem az is mindenféle írásjelet stb-t dob vissza. Ha az AVR -be beírok egy betűt (vagy a kódját pl "a" vagy DEC"97" vagy HEX "61) teljesen mást kapok, és nem csak a betűt alakítja rosszul, hanem a két HEX érték sem stimmel. Jelenleg a belső RC-t használom 8MHZ-n (ezért, meg a buherált szintillesztő miatt BAUDRATE 110), de ha ez a baj, akkor a betűket miért küldi vissza helyesen? Mi lehet a baj ?
Igazából lövésem sincs mit kellene és hova.
Itt bukik:
Tehát az avr-g++-al linkelné össze a tárgykódokat? Az /usr/lib/avr/lib mappa megvan, benne vannak dolgok, eepromra hajazó dolgot nem találtam. Ha linux alatt tolod csinálsz nekem egy ls -R -t a /usr/lib/avr/lib mappában? Gyanús nekem, hogy semmi eepromos cucc nincs nekem ott.
No némi avrfreaks olvasás után lefordult.
A megoldás: Az eeprom könyvtár függvényeit az avr-libc a libc.a állományba fordítja be, és ezt kellett a linker (esetemben avr-g++) parancsának végére bigyeszteni. Valószínűleg az van, hogy a /usr/lib/avr/lib mappában a ATTiny2313 és társai libje van a gyökéren. A többi avr libjei külön külön mappában figyelnek. Az Atmega32-é pld a /usr/lib/avr/lib/avr5/libc.a. Ezzel direktben linkelve fordul. Öröm.
A kód tuti jól megy, 9600 bauddal kell csatlakozni terminálban. Minden OK a kóddal. Én is használtam, meg prog. laboron ezt használtuk, mikor ismerkedtünk a "nanoboard" nevű csodával
Az aszinkron kommunikáció bizonyos esetekben nagyon érzékeny tud lenni a beállított sebességre. Ezért célszerű mindkét oldalon pontosan beállítani pl. a 9600 baud rate-et (és ehhez mérten, használni az ajánlott, speciálisabb értékű kvarcokat is). Emlékeim szerint azokkal a kódokkal nekem sem volt gondom, mikor mi is NanoBoard-oztunk.
Sot, nem csak attol nagy a HEX, mert binaris helyett hexa szamokkal kodolja a tartalmat, hanem mert mas egyeb informaciokat is tartalmaz, mint pl memoria cim.
Bovebb leiras az Intel HEX formatumrol
Köszönöm! Amúgy nem én raktam be azt a nagy kódot.
|
Bejelentkezés
Hirdetés |