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
Példaprogi1:
SPITransfer: out USIDR,r16 ldi r16,(1< ldi r16,(1< SPITransfer_loop: out USICR,r16 sbis USISR,USIOIF //3 rjmp SPITransfer_loop in r16,USIDR ret 1: flag és counter "kitakarítása" 2: 3wire mode, külső órajel, felfutó élre shiftel, USITC lépteti a countert, és USITC-bit 3: ha végzett átugorja az "rjmp SPITransfer_loop"-ot, ha nem akkor újra beírja r16-ot az USICR-be. Ahányszor beírja, lép a számláló, vált a portláb, és a shiftregiszter az órajel láb felfutó éleire shiftel. (a slave-nek a lefutóra kell) Amennyire én értem, elég lenne csak az USITC bitet beirogatni, de az +2 utasítás lenne >>>>>>>>>>
Példaprogi2:
ldi r16,(1< Itt csak a két változó tartalma érdekes. Trükkös megoldás ez USIWM0: 3wire mode USICS0: elméletileg a Timer/Counter0 overflow az órajel forrás USITC: portláb billegető USICLK: itt shiftel, és a számlálót billegeti ahol r16-ot írja USICR-be, ott csak a portláb billen át ahol r17-et írja USICR-be, ott shiftel, és a portláb is billen az átvitel végén a 4bites counter még csak a felénél jár! Remélem segítettem ezzel, és hogy az előzőt megszögelik a modik, meg hogy ez nem hullik szét. Üdv: Zsolt>>>>>>>>>>>>>>
Köszi, látszólag rendben működik, de nem tökéletes a dolog. Nem tudom hol a probléma, de leírom a jelenséget, hátha van rá ötletek:
Atmega128:slave -SPI ATtiny2313:master-USI Küldök mondjuk 0b11001100-t és van amikor ez is jön meg, de van amikor ugyanez jön meg, csak valamennyivel elshiftelve. pl.: 0b00110011 vagy 0b10011001 vagy 0b01100110 tehát látszólag össze-vissza, semmi szabályosat nem látok benne. Ha épp jót kapok meg és resetelem a mastert, akkor is van, hogy elcsúszik az egész. Nagyon fontos lenne, hogy működjön, mert a diplomamunkámhoz már csak ez a rész hiányzik és olyan pitiáner dolog, de mégse megy. Az Atmega128 FT232RL-en keresztül van összekötve a PC-vel és terminal programmal figyelem a kapott adatot. Csatolom a két forráskódot, hálás lennék, ha valaki mondana valami okosat, hogy mit rontok el. A master vár egy logikai 1-re az RTC-nek nevezett lábán, amit a slave küld, ha ez megjön, akkor kezdődik az adatcsere. Köszi
Sziasztok!
Most próbálok ismerkedni az AVR-ekkel, egészen pontosan egy atmega88-cal, de van egy kis gondom. Egy 2x16 karakteres LCD kijelzőt szeretnék meghajtani vele, és először egy olyan programot írtam, hogy írjon ki a kijelzőre egy nagy A betűt. Ennek a kódja ugyebár 0x41. Ezt szépen ki is teszem a PORTD-re de valami miatt ott már a 0x43 jelenik meg és egy nagy C betűt ír ki. A szimulátorban jól működik, de a valóságban már nem. A PD1-en a 0 helyett 1 jelenik meg. Mellékelem az asm-et, egy hozzáértő ránézne, és megosztaná velem, hogy mi a hiba? Előre is köszönöm
Nekem az a személyes tapasztalatom, hogyha valami a szimulátorban jól működik, de a valóságban nem, akkor az hardveres hiba. Esetleg próbáld ki úgy, hogy nem kötöd rá az LCD-t és akkor mi jön ki a PORTD,1 lábon. Vagy csak külön kapcsolgatod a PORTD,1-t, hogy az jól működik-e.
Másik ötlet, hogy mivel nem ismerem ezt a procit, nem tudom, de esetleg annak a lábnak lehet, valami külön funkciója és emiatt nem csinálja, amit te szeretnél és a fuse bitekkel kell operálni, nekem volt már ilyen.
Hello!
MEGA128: Ha slave, akkor SS pin bemenet, és az adatátvitelt LOW szint jelzi. Az init-ben illene beállítani a MISO-t kimenetnek. Nem egészen értem azt sem, hogy miért adsz #define-el álneveket a DDR-eknek. TINY2313: A kódja elég zavaros... ott most külső megszakítást használsz, vagy egy loop-ban figyelsz? Belerondítottam a kódodba... csatoltam. A MEGA adatlapja azt írja, hogy az SS pin vezérli a slave-nél az átvitelt. Ha ez kimaradt nálad, nem értem, hogyan ment át mégis adat?!?! Esetleg ha mutatnál kapcsolási rajzot, többet segíthetnénk. Üdv: Zsolt
#175489-ben tettem fel egy működő asm LCD routint,igaz 4-bites,de nem nehéz átírni 8-ra....
Sziasztok! Hol lehet AVR-t venni,mert sok helyen még nem is hallotak róla.
Pl itt
ATMEGA32 16 kellene.A HQ nál nem látok olyat
akkor itt
1100 Ft-ba kerül
Kszi, az SS vezérlése tényleg lemaradt, de így se megy, lehet, hogy valami hardveres hiba van. Azt hiszem inkább ezt a módot hagyom és megpróbálok mást.
Itt sok minden van: Bővebben: Link
kb 500Ft
Zeus, matrix64!
Köszönöm, még próbálkozom...
Hello!
Ahogy érzed... sok sikert! Üdv
Melyik uc használjam az Attiny85 helyett? Minél kisebb 8k-s kellene. Csak 4 portot használnék. A lényeg, hogy kapható legyen.
8K Flash és 4 láb használat... Huh.. Hát végignéztem a nyomtatott AVR katalógusomat, de a legkorábbi kapható 8 K-s az Atmega8 DIP28-as tokban...
Automotive kategóriában volt még pár 8K-s, de azok sem kaphatók nálunk.
Atmega48 A/D konverterét szeretném használni normal módban, de akárhogy nézem, 0-t olvasok ki belőle.
(Vref: Külső Aref,oszc: 16MHz) Esetleg lát vki vmi hibát benne?
Nem tudtok egy jó AVR szimulátort, ami minden funkciót tud? AVR Studio szimulátora pár dolgot nem tud.
Sziasztok!
ATTINY45-ötbe szeretnék programot égetni.Még nem használtam ilyen áramkört,nem igazán ismerem.Tudnátok ajánlani egy egyszerű programozót hozzá?A legegyszerűbb is jó,csak próbálgatom... Programnak AVR studio-t gondoltam.
Üdvözlüm a tisztelt Kollégákat!
Minhogy csak mostanság ismerkedem az AVR-ek programozásával, szeretném megtudakolni a témában jártasabbaktól, hogy mit szóltok ehhez az AVR programozóhoz, illetve hogy a fenti programozóhoz kell-e a külső, 5V-os táp? (Ha jól értelmeztem, akkor kell.) Szíves segítségeteket előre is köszönöm!
Üdv.!
Igen kell neki külső táp,amit a cél ák.-ból kap. Ez a kapcsolás az STK200 néven ismert, működő programozó !
Régen, hibamentesen használom.
Vagy ez az áramkör kapja a tápot a céláramkörből, vagy ez adja neki ( helyzettől függ ). Erre a célra egy 5V-os dugasztápot használok. Ha ismerkedsz, akkor megéri csinálnod egy JTAG debugger-t, amivel a fejlesztés fázisában nagyon kényelmesen lehet a programot bogarászni.
Szia!
Miért sts, miért nem out? Bocsi, csak már késő van.
http://www.helmix.at/hapsim/
A studio kiegészítéseként működik,nagyon jó.Többek között az LCD-t is tudja szimulálni.Aztán ott a VMLAB,ingyenes.Egy baja van,hogy a asm2-t nem ismeri.
Ha jól tudom, az az oka, hogy ezeket a portokat nem lehet közvetlenül elérni csak az SRAM-on keresztül. Minden esetre az AVR studio fordításkor hibaüzenet küld, ha out-ot írok.
Köszi mátrix!
Szia!
Köszi a választ. Mint írtam nem néztem utánna, csak valahogy az ugrott be. hogy ezeket a regisztereket out utasítással érem el. Bocsi a félrevezetésért!
Lehet, higy csak elírás,de a
ldi temp,0b00100001 ;ADLAR->8 bit,AD0_on sor nem azt jelenti, hogy az AD1 lesz az aktív bemenet? a 0b00100000 jelentené az AD0-t (szerintem) Ha megint félrevezetlek bocsi...
áá köszi 88-szor átnéztem és nem vettem észre, de igazad van!
|
Bejelentkezés
Hirdetés |