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   214 / 840
(#) Menyét válasza pittyu2 hozzászólására (») Ápr 26, 2010 /
 
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.
(#) pittyu2 válasza Menyét hozzászólására (») Ápr 26, 2010 /
 
Nagyon köszönöm a segítségedet.Nagyon rá izgultam erre a quadróra, de lassan haladok.
(#) Axel válasza (Felhasználó 4577) hozzászólására (») Ápr 27, 2010 /
 
Szia!

Köszi a választ! Még azt megkérdezném, hogy bipoláris tranyó is jó lenne ugye?
(#) tibibalogh520 válasza Axel hozzászólására (») Ápr 27, 2010 /
 
Igen az is jó, csak ne felejtsd ki az áramkorlátozó ellenállást a bázissal sorba kötve (1kilós mehet bele).
(#) gabi20 hozzászólása Ápr 27, 2010 /
 
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
(#) adamtui_93 hozzászólása Ápr 27, 2010 /
 
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!

mega48.rar
    
(#) trudnai válasza gabi20 hozzászólására (») Ápr 27, 2010 /
 
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...
(#) (Felhasználó 4577) válasza adamtui_93 hozzászólására (») Ápr 27, 2010 /
 
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.
(#) gabi20 válasza trudnai hozzászólására (») Ápr 27, 2010 /
 
Köszi így már érthető
(#) adamtui_93 válasza (Felhasználó 4577) hozzászólására (») Ápr 28, 2010 /
 
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
(#) gabi20 hozzászólása Ápr 28, 2010 /
 
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?
(#) poznamokus válasza gabi20 hozzászólására (») Ápr 29, 2010 /
 
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
(#) gabi20 válasza poznamokus hozzászólására (») Ápr 29, 2010 /
 
Az a gond hogy most egy olyan feladatot akarok megoldani amihez 16 regiszter nem elég. Nem tudom mit csináljak
(#) ATtiny válasza gabi20 hozzászólására (») Ápr 29, 2010 /
 
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.
(#) gabi20 válasza ATtiny hozzászólására (») Ápr 29, 2010 /
 
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?
(#) trudnai válasza gabi20 hozzászólására (») Ápr 29, 2010 /
 
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:
  1. lds r2,$FF00 ; Load r2 with the contents of data space location $FF00
  2.        add r2,r1    ; add r1 to r2
  3.        sts $FF00,r2 ; Write back
(#) ATtiny válasza gabi20 hozzászólására (») Ápr 29, 2010 /
 
Nos a legegyszerűbb ha keresel a neten egy SRAM használati útmutatót. Pl ez egész jó: Bővebben: Link
(#) gabi20 hozzászólása Ápr 29, 2010 /
 
Köszönöm a válaszokat, átnézem a linkeket amiket küldtetek
(#) gtk válasza gabi20 hozzászólására (») Ápr 29, 2010 /
 
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.”
(#) gabi20 válasza gtk hozzászólására (») Ápr 29, 2010 /
 
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
(#) trudnai válasza gtk hozzászólására (») Ápr 30, 2010 /
 
Idézet:
„[quote]„ Igaz hogy assemblyben lehet a legrovidebb kodot irni ? Igaz, de ez ma mar a kutyat sem erdekli.””
[/quote]

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.
(#) gtk válasza trudnai hozzászólására (») Ápr 30, 2010 /
 
Gondoltam hogy nem hagyod annyiban
Idézet:
„Hobbista tehat tobbnyire csak kedvtelesbol szorakozik ASM-mel.”
Pontosan ezert irtam hogy minek az ASM erolkodes.
(#) Kotesz hozzászólása Ápr 30, 2010 /
 
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?
(#) ATtiny válasza Kotesz hozzászólására (») Ápr 30, 2010 /
 
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.
(#) Kafka válasza ATtiny hozzászólására (») Ápr 30, 2010 /
 
-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.
(#) Kotesz válasza ATtiny hozzászólására (») Ápr 30, 2010 /
 
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.

gsm.png
    
(#) Kafka válasza Kotesz hozzászólására (») Ápr 30, 2010 /
 
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?
(#) Kotesz válasza Kafka hozzászólására (») Ápr 30, 2010 /
 
Pc-Avr tökéletes
Gsm-Pc működik (simco progi)
Gsm- Avr nem működik
(#) trudnai válasza Kotesz hozzászólására (») Máj 1, 2010 /
 
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.
(#) Kafka válasza Kotesz hozzászólására (») Máj 1, 2010 /
 
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?
Következő: »»   214 / 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