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 48-88-168 ezek lábkompatibilisek,tehát gond nélkül beleteheted. Hogy a 328 as is az e azt most nem tudom, meg kell nézni.
Ahogy láttam ezekhez van előre fordított hex fájl, tehát csak be kell égetni a megfelelőt és kész.
Nagyon köszönöm a segítségedet.Nagyon rá izgultam erre a quadróra, de lassan haladok.
Szia!
Köszi a választ! Még azt megkérdezném, hogy bipoláris tranyó is jó lenne ugye?
Igen az is jó, csak ne felejtsd ki az áramkorlátozó ellenállást a bázissal sorba kötve (1kilós mehet bele).
Sziasztok!
Valaki meg tudná mondani hogy AVR - ben mi a különbség a direkt és indirekt címzés körül? Az angol nyelvű dokumentációt nem teljesen értem, más leírást pedig nem találtam. Előre is kösz
Hali úgy döntöttem meg próbálom át írni ezt a programot ATmega32-re de sajna nem tudom mit írjak át mert még azt sem találtam meg benne hogy az usb-vel melyik portokon kommunikál. Valaki mondja meg hogy egyáltalán át kell-e irni rajta valamit és hogy hol van az usb-s kommunikációs portjának beállítása? előre is köszi!
Direkt cimzes: A programba bele egeted a memoria kozvetlen (direkt) cimet... Indirekt: Egy memoria cimzo regsziter segitsegevel kozvetett (indirekt) modon cimzel memoriat. Azaz hasonlo, mint pl C-ben a mutato (pointer). Te annyit mondasz meg, hogy melyik cimzo regiszter tartalmazza a memoria rekesz cimet, igy ha ki akarod olvasni a memoria erteket elobb a memopria cimzo aramkornek ki kell olvasnia a cimzo regiszter tartalmat, majd annak erteket tolti be memoria cimkent es igy ki tudja olvasni az altala kijelolt rekesz tartalmat. Ezaltal kesobb ennek a cimzo regiszternek az erteket valtoztatva mas es mas memoria rekeszhez ferhetsz hozza... Pl egy ciklusban vegig olvashatsz egy buffert...
Nézd, senki se fogja helyetted átírni, ilyen összetett programot pedig időigényes átnézni, ráadásul hardver is kell hozzá.
Ha pedig nem értesz hozzá, akkor inkább oldd meg máshogy, ajánlottam az FT232-t, Flux-al egy kis ügyességgel beforrasztható, NyÁK-ot pedig csináltathatsz, a hirdetések közt találsz olyat, aki megcsinálja neked. Egyébként ott van ATmega16, 168, 8, 88-ra lefordítva ugyan ez, nem tudom ezek miért nem jók, miért kell neked pont 32. Erre a célra teljesen felesleges ilyet használni, az FT232 sokkal jobb, és többet is tud. Gondolom meg se nézted egyik forráskódot se, mert az usbconfig.h-ban vannak a beállításai.
Hali azért kellet volna ATmega32 mert olyanom van a c fájlokat átnéztem arra nem is gondoltam hogy a h ban lesz figyelmetlen voltam azért köszi
Sziasztok!
Megint AVR - es problémám van: Ugye az ATmega8 - ban 32 darab általános felhasználású regiszter van. Az r16 - tól r31 - ig minden regiszert el tudok érni, azonban ha r0 - r15 címtartományból választok egy regisztert, akkor fordításkor ez a hibaüzenet jelenik meg: "Illegal argument type or count" . Van valakinek valami ötlete hogy mi lehet a probléma?
Hát már nem emlékszem, hogy mi az oka, de R0-R15 nem használható így. Rég kódoltam már assemblyben, de anno mondták egyetemen, hogy ezek nem használhatók
Az a gond hogy most egy olyan feladatot akarok megoldani amihez 16 regiszter nem elég. Nem tudom mit csináljak
Használd a Stack -et. Erre van kitalálva. Az SRAM is azért van, hogy változókat tároljon benne az ember. Csak akkor kell, csak és kizárólag, a regiszterekre támaszkodni, ha valami olyan kódot kell írni, ahol nem engedhető meg a verem műveletek vagy az SRAM műveletek miatti plusz idő. Nagyon kevés az ennyire kicentizett időzítést igénylő feladat.
Kösz a választ de nem teljesen értem.
A stack az ugye a veremtár, ami arra szolgál hogy megszakítások vagy szubrutinhívások visszatérési címét tárolja. Azt mondod hogy ezt használjam mint általános felhasználású regiszetrt? És az SRAM - ot hogy lehet AVR studioban elérni?
A stack arra is hasznalhato, hogy szubrutinok / fuggvenyek lokalis valtozoit tarolja.
Az AVR utasitas keszlete leirja, hogy hogyan kell. Itt egy pelda a doksibol kiollozva:
Nos a legegyszerűbb ha keresel a neten egy SRAM használati útmutatót. Pl ez egész jó: Bővebben: Link
Igazan nem szeretnek belekotyogni. Ne vegyetek rossz neven, de minek ez az asm erolkodes ?
Egyszer olvastam egy blogon egy hasonlot ASM-vel kapcsolatosan: Idézet: „Igaz hogy assemblyben lehet a legrovidebb kodot irni ? Igaz, de ez ma mar a kutyat sem erdekli.”
Szerintem ha valaki meg akarja ismerni az MCU belső szerkezetét, működédét akkor mindenképpen le kell ereszkedni a regiszterek és bitek szintjére, erre pedig az asm a legjobb
Idézet: [/quote]„[quote]„ Igaz hogy assemblyben lehet a legrovidebb kodot irni ? Igaz, de ez ma mar a kutyat sem erdekli.”” Ez igy azert nem igaz. Egy ASM fejlesztesnel valoszinuleg nagyobb a fejlesztesi es karbantartasi koltseg, mivel tobb ideig tart kezzel kioptimalizalni a kodot, adott esetben ledebuggolni stb. Cserebe kapsz egy rovidebb kodot ami kisebb, olcsobb kontrollerben elfer. Magyaran a gyartasi koltsegeket lefaraghatod. Az okolszabaly altalaban az, hogy ha a raforditott ido megengedi, es ha a gyartasi koltsegeken jelentos megtakaritast erhetunk el, akkor ASM fele kell tendalni. A kepletet azonban meg egy dolog befolyasolhatja, es ez a jarulekos uzemeltetesi koltsegek es parameterek. Egy ASM-el pl kisebb orajellel vagy kevesebb aktiv CPU uzemmel lehet elerni ugyanazt. Magyaran egy akkumulatorral/elemmel uzemeltetett keszuleknel lehet javitani a fogyasztason ami esetlegesen kedvezoen befolyasolhatja a keszulek piaci erteket. Vannak akik persze ilyen es ehhez hasonlo meghfontolasokbol vegyes fejlesztesekbe kezdenek: Kritikus reszek ASM-ben, kezzel kioptimalizalva vannak, masok pedig magas szintu nyelveken (tipikusan C). Vannak akik ezeket a kritikus kodreszleteket megrendelik vagy megveszik mas fejlesztoktol (pl. ha valaki kinal egy gyors FFT konyvtarat, faraghatnak vele a fejlesztesi koltsegeken). Megint masok maradnak magas szintu nyelveken, azonban kihasznaljak a fordito altal nyujtotta optimalizacios lehetosegeket (pragmak, forditasi direktivak, tarolasi osztalyok stb). Ehhez azonban jol kell ismerni a forditot, es erteni, ismerni kell az ASM kodot, hogy a compiler kimenetet tanulmanyozva az optimalizacio elvegezheto legyen. Nyilvan hobbi celokra ezek a dolgok messze tullonek a celon, es legtobb esetben nem kell speci eszkozokhoz vagy modszrekhez nyulni. Hobbista tehat tobbnyire csak kedvtelesbol szorakozik ASM-mel.
Gondoltam hogy nem hagyod annyiban
Idézet: Pontosan ezert irtam hogy minek az ASM erolkodes. „Hobbista tehat tobbnyire csak kedvtelesbol szorakozik ASM-mel.”
Avr-t és gsm-et kötnék össze a mellékelt kép szerintBővebben: Link
Bascomban irtam a programot és a pc szimulátor tökéletesen szimulálja a gsm-avr kapcsolatot de a gsm- nem komunikál az AVR-rel! A port sebesség és osc beállítások jók. A gsm simco-n keresztül tökéletesen kommunikál a pc-vel. A Max232 rx-tx lábaira tettem egy led-et amivel az adatfolyamot lehet ellenőrizni. Az tx led folymatosan világít Van valakinek ötlete?
Rosszul kötötted be a MAX232-t. HA úgy van bekötve ahogy a rajzodon van. A MAX 232 GND -je a 15-ös láb ezt sehol nem látom. A Tápot meg a 16-os lábán kapja, úgyszntén sehol nincs... Ezenfelül a V+ és V- lábak is rosszul vannak bekötve. A V- láb és a föld közé egy kondi kell. A föld felé van a kondi +lába. A V+ lábra is kell egy kondi és a föld közé. Itt a kondi +lába a V+ lábar jön. Ehhez képest te egészen rosszul kötötted be. V- lábon a kondi fordítva van és a V+ lábat meg felkötötted egy kondival a tápra?! Szerintem nézd meg a max 232 -es adatlapot.
-a tápot és gnd-t szerintem automatikusan bekötötte neki az eagle. (névazonosság miatt), de szerencsésebb lenne azt jelölni.
-a kondenzátort lehet kötni a tápra és a földre is egyaránt. -de a polaritása valóban fordítva van.
köszönöm a segítséget kijavítottam a hibát de a hiba továbbra is fent áll.A rajzon látható tx led folyamatosan világít és nincs komunikáció a gsm és az AVR között.
PC-vel működik? PC-AVR. Terminállal próbáld ki, küldés fogadás külön külön. Ha ez megy akkor a hiba a gsm-ben lehet. Talán: GSM-PC megy? Ha igen milyen kábellel? Null-modem kábel? Esetleg Rx-Tx csere?
Ha az a dioda vilagot akkor ott nagy gond van, ugyanis az Anodja van a foldre kotve...
Amugy a GSM modulod milyen jelekkel dolgozik? Hasznal a PC-d valamilyen hardveres handshake-et -- tehat a GSM modulod esetleg igenyli ezt? (rajzodon nincs semmi ilyesmi) Ja, es nem tudom mi az a "simco progi" -- az olyan, mint az "ize-bize"? Jo lenne, ha valamire hivatkozol belinkeled, vagy elmagyarazod mi az egyaltalan.
Próbáld ki a GSM-PC kapcsolatot úgy, hogy azt a kábelt amit használsz nem dugod a soros portra, hanem fogsz három szál vezetéket és azzal kötöd össze csak a 2,3,5-ös pontot. Vagyis ebből kiderülhet hogy a simco ill. a gsm igényel-e bármi mást mint Rx,Tx. Ilyenkor is megy?
Más: a C9 milyen szerepet tölt be? A C7 miért a resetre van kötve és nem a tápra? Bár ez még nem nagyon lenne akadály. Tx led világítás:ha nem küldesz semmit a Tx-en akkor az a kimenet nulla.A MAX232 invertál és jelszintet illeszt (-3-25V közé), tehát itt most nálad negatív feszültség van. Ezért világit a Tx. led. De ebben a logikában nem vagyok biztos kérem erősítsen meg valaki. Rx, Tx ledeket biztos ami biztos alapok próbáld meg külön ellenállással használni. Ha jó a fenti logikám akkor csak polaritást kellene fordítani (led), hogy busz-logikai nullát vagy egyet figyeljen. Amikor AVR-PC kapcsolat van és adsz ill. veszel akkor hogy viselkednek ezek a ledek? A led világítást az váltja ii, hogy rádugod a GSM-et? |
Bejelentkezés
Hirdetés |