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
Én nem használom a "nanoboard" -ot, LPT-s égetőm és házi szintillesztőm van.. Lehet hogy a kód csak "nanoboard"-al megy?
Sziasztok!
Az lenne a kérdésem hogy AVR Studioban hogyan lehet beprogramozni az EEPROM tartalmát?
Mire elolvastam megoldottad,...
Csinalhatsz egy szimbolikus lnket a lib-re, abba a konyvtarba ahol keresi.
Sziasztok! Megint elő jött a probléma "Entering programming mode: FAILED". Az előtt jó volt, utána elmentem 1 órára(avr lecsatlakozás, gép kikapcs.) Mikor vissza jöttem , megcsináltam az új teszt programot és ráakartam volna égetni megint ezt írta ki... Nem tudom miért, semmit nem kötöttem át, csak az USB csatit csatlakoztattam rá az ISPre... Meghalt a chip? Magától elálltak a fuse bitek?!
Alakul a molekula. Symlinket nem csinálhatok, mert az /usr/lib/avr/lib mappában is van libc.a de abban 2313 és tiny13 meg tsai függvényei vannak belefordítva. És valóban ha ilyen procira forgatom a projektet, akkor sima ügy. Azóta felraktam az avr-gcc avrfreakses friss rilízét, de azzal sem megy.
Nem ertem miert van ket kulon libben,.. Akkor marad a direkt utvonal a forditonak,..(akar Makefileban megfelelo bejegyzessel)
Nalam igy nez ki. Ahogy nezem az avr5 -ben van a m32 procihoz a cucc.
Fura, neked is van minden családhoz egy-egy libc.a fájlod. Nálam is így van.
Makefileval nem akarok pöcsölni, 2010 van az ideóták korát éljük . Megoldani meg tudtam a problémámat, csak azt nem értem, hogy miért és mi romoltt el.
Sziasztok.
Továbbra is küzdök a soros kommunikációval, beszereztem egy MAX232 -es IC-t de a probléma ugyan az mint a házi szint illesztővel. Ha a PC-ről jövő adatot közvetlenül visszaküldöm az AVR ből módosítás nélkül akkor rendben megérkezik, kivéve ha szám vagy ékezetes betű, ezek esetében még a HEX adatok sem stimmelnek nem csak a karakter. Ha az AVR-ből a PC-re küldök pl. HEX 61 ("a" betű) akkor hol HEX D0-át hol HEX D1-et kapok vissza. (a HEX értékeket RS232 monitorral néztem) Jelenleg a próbák alatt tönkretettem a MAX232-es ic-t, így csak az AVR-ről a PC-be tudok adatokat küldeni.
(részben a Kandó wiki-s és részben "FIZIKUS" kódja) Még mindig a belső RC-t használom, mert nem sikerült a külső kvarcot elindítani (még nem találtam meg a fuse biteket) Lehet hogy ez a baj? (a házi szintillesztő már nem lehet, hisz a MAX232-es el is ezt csinálja) Mi lehet a baj, hogy lehetne megoldani? 8bites számokat szeretnék vele küldözgetni RS232-őn oda-vissza, de nagyon nem akar működni. Novarobot
Ugyan ott, ahol a flash-t programozod.
Elso ranezesre rogton egy szarvas hibat talaltam a 6. sorban:
A BAUDRATE-nek 9600-na kell lennie, az mukodik 8MHz-es kvarc-cal is (hogy a belso RC oszcillatorrol is megy-e, azt nem tudom, lehet hogy kisebb sebesseggel kene probalkoznod). Ha jol latom ATmega88-at hasznalsz, ahhoz nem nagyon ertek.
Ezt most nem egészen értem, először a BAUDRATE 9600-on volt, de át tettem 110 -re mert féltem hogy tul nagy lesz a sebesség.
Most akkor tegyem vissza 9600, vagy csökkentsem a sebességet? A BAUDRATE nem a kommunikáció sebessége? Amúgy be forrasztottam egy 7.372800MHz kristályt, két 22pF es kondival a földre kötve, csak a fuse biteket nem találom win AVR-ben ezért még nem tudtam életre kelteni. Novarobot Idézet: „a fuse biteket nem találom win AVR-ben” Abban nem is fogod. Telepítsd fel az AVR Studio-t, feltéve ha vele kompatibilis programozód van.
Csak ismételni tudom magam: a kando wikis kód jó. Magam is használtam 1 hete atmega88-cal belső osztcillátorral. 1:1-ben beletolva a wikis kódot. Semmit nem állítottam rajta.
A soros illesztésnél/ win soros terminál sebességbeállításánál keresendő a hiba. Idézet: „Köszi a segítséget, Kandó-s vagy? vagy csak ismerted a wiki oldalukat?” Mai naptól elvileg már nem. Végeztem
Gratula, nekem még 2 évem van hátra.
5. perce kaptam meg az új MAX232, most beszerelem, tán ha megoldja a problémát.
Beszereltem a MAX232, és biztos hogy a AVR-nél van a hiba!
Ha a MAX232 ttl szintű RX DX vezetékeit az AVR kiiktatásával összekötöm akkor tökéletesen működik, de ha az AVR-t beiktatom, ugyan az a hiba (110-es BAUDRATE mellett, mert ha 9600 a BAUDRATE akkor csak "€" azaz HEX 80 = DEC 128 jeleket kapok.) Annyi változás van, hogy most az eredeti kandós kóddal is ugyan azt a karaktert kapom vissza, amit elküldtem (nem cseréli meg a kis és nagy betűket ahogy kéne neki), és most megy az ékezetes karakterekkel is, de a szám karakterekkel továbbra sem. Ha fiszen az AVR felől küldök DEC 97-et ("a" betű) akkor továbbra is hol DEC 209 hol DEC 208 -at kapok. Mi lehet még a baja? (visszatértem az eredeti kandós-wiki kódhoz). A kristály rá van kötve a kimenetre, de még használni nem tudom ez zavarhatja? (sajnos az AVR-Studiót nem használhatom mert STK200/STK300 kompatibilis LPT-s programozóm van, és nemsokára szeretnék átérni Linuxra, ezért nem szeretnék már csak windowsos programot használni.) Mit tanácsoltok? Hol lehet még a hiba? Novarobot
Az aszinkron soros kommunikacio csak meghatarozott standard sebessegeken tortenhet csak, ha ettol onkenyesen eltersz, akkor az ado es a vevo nem lesz szinkronban es csak kriksz-krakszokat kapsz a vevo oldalon. ( A standard sebessegek: 2400, 4800, 9600, 14.4k, 19.2k, 28.8k, 38.4k, 57.6k, 76.8k, 115.2k stb...)
A 110 nincs koztuk (a 110 bps azt jelenti hogy masodpercenkent 110 bitet akarsz elkuldeni). A minimalis sebesseg 2400. Szerintem nincs szinkronban az AVR-ed es a PC-d, azert kapsz visza ertekelhetetlen adatot. A MAX232-t leellenorizheted, ha a Tx vonalat rakotod az Rx-re. Ekkor a hyperterminal-ban ugyanazt a betut kell visszakapnod amit leutsz.
Sziasztok!
A segítségeteket kérném. AVR Studio 4.18-ban írok egy programot és szeretnék létrehozni egy uniót amely tartalmaz egy 16bites változót és egy 2*8bites struktúrát. A célom ezzel az lenne, hogy ezzel megoldjam a 2*8bit<->16bit konverziót. Azonban a problémám, hogy nem működik. Debugolás közben a wach ablakban ezt látom "Not in scope" és ráadásul hiába rakok az adott sorra ahol értéket adok neki, breakpoint-ot meg sem áll ott. Lentebb látható a kód:
Segítenétek, hogy mit csinálok rosszul?
Kedves Mindenki!
Páran jó ötleteket adtak, mikor nem akart működni a Topi-féle programozó ( (#740589) ). Nekik még egyszer köszönöm! Csak gondoltam tudatom, hogy nem én voltam a láma, és nem is a program beállításai: egyszerűen a 0km-es ATTiny2313-as volt a ludas. Most hogy vettem egy másikat (illetve egy Tiny45-öst Alex javaslatára), minden megy, mint ahogy előre kellett volna. Köszönöm még egyszer a segítséget! Üdv :Zeemut
Hali
Mar bocsanat, de a 110 Baud is standard atviteli sebesseg. Ezt hasznaltak a telex gepeknel. Onnan indult a RS232. Ha Te csinalod a ket vegpontot akarmilyen Baud rate-t valaszthatsz, csak a ket vegponton meg kell egyeznie. Ha a rendszered birja akar 1 MBaud is lehet, de ha raersz, akkor akar 50 Baud is. Viszont ha PC-uC kapcsolat van akkor termeszetesen a PC altal hasznalt valamilyen standard Baud rate-t illik hasznalni. Udv Vili
A kérdés tárgytalan, más volt a probléma, bár magában a kódban is van némi hiba. Helyesen, ha esetleg másnak is szüksége lenne rá:
Lehet hogy az a baj, hogy nincs szinkronban a AVR a PC-vel.
Én mindkét oldalt (hiper terminalban és az AVR-en is) 110 BAUDRATE -re állítottam, ekkor a betűk a-z és A-Z ig + az ékezetes betűk is rendesen oda vissza át mennek, csak a számok nem, tehát nem hinném, hogy a BAUDRATE lenne a baj, mert ha átállítom más sebességre, egyáltalán nem jó. Ha az AVR ből küldök adatot, az egyáltalán nem megy, két érték érkezik meg hibátlanul a 0 és a 255 a többit hibásan veszi a PC. Azt nem értem, hogy ha pl 97-et küldök a PC-ből az AVR-be, és onnan rögtön vissza a PC-re akkor rendesen megérkezik, de ha egy ciklusból küldöm ugyan azt a 97 az AVR-ből akkor a PC nem ezt veszi hanem 209-et (ritkán 208-at). Keresek a kapott adatokban valami szabályszerűséget, mert nem véletlenek tűnik. kicsit olyan mint ha a biteket fordított sorrendbe kapná meg az AVR, vagy inkább mint ha el lenne sifteleve x bitel. Tényleg ötletem sincs (a biztonság kedvéért most cseréltem AVR-t de semmi) Nem lehet valahogy WIN-AVR ből elérni azokat a fuse biteket, nehogy mégis a kristály hiánya legyen a baja. Novarobot
Ciklusban 1-255 számokat küldtem az AVR-ről a PC-be
(A számok kettes számrendszerbe vannak, soronként 1-8, a 2. sorban 9-16 stb..., a 0 nem szerebel a táblázatban, de 0-ára is 11000000-át ad.) Látszik hogy nem véletlenszerű, csak nem látom benne a szabályt, és fogalmam sincs mi lehet a hiba. Jelenleg minden bit 11xxxxxx tehát 11 kezdődik, de ha nem ciklussal küldök számokat hanem PC-ről, akkor nem minden bit kezdődik 11, a legtöbb számot helyesen adja vissza, csak látszólag véletlenszerűen, de mindig ugyan azoknál a számoknál hibázik. Mi lehet még a baj? Novarobot Idézet: „a betűk a-z és A-Z ig + az ékezetes betűk is rendesen oda vissza át mennek, csak a számok nem,”
Idézet: „kicsit olyan mint ha a biteket fordított sorrendbe kapná meg az AVR, vagy inkább mint ha el lenne sifteleve x bitel.” Ha még mindig a kandós wiki kódra érted, akkor a válasz a kódban:
Ha nem arra vonatkozott, akkor nem szóltam és sajnos passzolom, hogy hol lehet a bibi.
Sajnos ez a kód részlet csak fogadáskor fut le, ha ciklusban küldök akkor nem.
Amúgy néztem, hogy nálam soha semmilyen körülmények között nem teljesül az if utasítás feltétele. Tehát az AVR visszaküldi az adatot a PC-be, de nem ismeri fel hogy pl.l amit visszaküldött az egy "a" betű volt (97). Azért köszi a segítséget , remélem azért valaki rájön mi a baj, és tud rajtam segíteni. Novarobot
MEGCSINÁLTAM MŰKÖDIK!!!
Valamiért az AVR-em nem 8MHZ hanem 1MHZ ketyeg, módosítottam a kódot 1 MHZ-re és működik! Jelenleg támogatja a 110 és a 2400 as kommunikációs sebességet gond nélkül! Köszönöm mindenkinek a segítséget pár kérdésem lenne még: 1. El lehet valahogy érni WIN-AVR ből a fuse biteket? (esetleg segít valaki elindítani a kristályt WIN-AVR el?) 2. Hogyan lehet 8MHZ-re állítani a belső RC-t (lehet e egyáltalán)? (Szintén WIN-AVR el) 3. Ha megszakításból megváltoztatom pl a PORTD értékét azt rendesen végrehajtja az AVR, de ha pl. egy saját globális változó értékét változtatom meg, akkor az csak a megszakításon belül változik. hogyan lehetne megszakításból módosítani a globális változók értékét? 4. Tud valaki valamilyen gyermeteg egyszerű RS232-es égetőt, melyet esetleg az AVR-STÚDIÓ is támogat (nem fontos, elsősorban Ubuntu alatt lesz használva), és még USb-RS232 es átalakítóval is működik? (gugliztam, de nem találtam számomra is érthető magyar leírást csak PIC-hez) Minden segítséget köszönök , és remélem tudtok válaszolni még erre a pár kérdésemre. Novarobot. Idézet: „Valamiért az AVR-em nem 8MHZ hanem 1MHZ ketyeg, módosítottam a kódot 1 MHZ-re és működik!” Igen, 1MHz-re van állítva gyárilag. Idézet: „1. El lehet valahogy érni WIN-AVR ből a fuse biteket? (esetleg segít valaki elindítani a kristályt WIN-AVR el?)” http://www.hobbielektronika.hu/forum/topic_hsz_744719.html?highligh...744719 Idézet: „2. Hogyan lehet 8MHZ-re állítani a belső RC-t (lehet e egyáltalán)? (Szintén WIN-AVR el)” Lásd 1. válasz. Idézet: „3. Ha megszakításból megváltoztatom pl a PORTD értékét azt rendesen végrehajtja az AVR, de ha pl. egy saját globális változó értékét változtatom meg, akkor az csak a megszakításon belül változik. hogyan lehetne megszakításból módosítani a globális változók értékét?” Próbáld meg volatile előtaggal deklarálni. pl:
Idézet: „4. Tud valaki valamilyen gyermeteg egyszerű RS232-es égetőt, melyet esetleg az AVR-STÚDIÓ is támogat (nem fontos, elsősorban Ubuntu alatt lesz használva), és még USb-RS232 es átalakítóval is működik? (gugliztam, de nem találtam számomra is érthető magyar leírást csak PIC-hez)” Hirtelen nem tudok, keresni kell. Miért nem jó pl egy Doper? Látom komolyabban foglalkozol az AVR-ekkel. Én a helyedben vennék egy gyári égetőt, pl AVR ISP mkII. Egy házilag megépített égető sosem lesz teljes értékű. Rendszeresen adnak ki szoftverfrissítéseket az mkII-höz és pl méri a tápfeszt is.
Köszi, a volatile előtag megoldotta a 3. problémát.
Az első kettőre biztos van megoldás, hisz Linuxon is megoldják valahogy nem? (Holnap megjön az USB-RS232 átalakítóm, és én is Ubuntu alatt szeretnék égetni, mert akkor végre a "műhelyben" is tudok a laptopról) Égetőnek, arra gondoltam hogy nem lehetne valahogy valamilyen "firmware" előre beégetni az AVR-be, és onnan a USART-on keresztül RS232-őn programozni? Esetleg megoldható hogy a 3Db ATMEGA88-20PU AVR-em közül az egyiket beprogramozni arra, hogy USART-ra kötött RS232 keresztül programozza a másik "rá" kötött AVR-t? (Sajnos még ezen a szinten nem vagyok, ezért csak komoly segítséggel tudom megvalósítani.) Az első AVR-emet múlthéten hétfőn vettem meg, és bár igyekszem gyorsan haladni, még nagyon kezdő vagyok. Novarobot Idézet: „Linuxon is megoldják valahogy nem?” Google... Idézet: „Holnap megjön az USB-RS232 átalakítóm” Gondolom Linuxos drivered van hozzá. Idézet: „Égetőnek, arra gondoltam hogy nem lehetne valahogy valamilyen "firmware" előre beégetni az AVR-be, és onnan a USART-on keresztül RS232-őn programozni?” Nézz szét az oldalon a cikkek közt |
Bejelentkezés
Hirdetés |