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
Ez a fajta programozó a bizonytalan működése miatt, már kiment a divatból!
A biztos működéshez sorsportnak általában kel a 10V. Mindenesetre a szalagkábelt vedd a lehető legrövidebbre! (Bár 3. hazavágott Mega után bizonnyal álló szőrszálakkal vágod a kukába!) ![]()
És a Reset láb 10K felhúzás + 100n szűrés nagyon kel!
A Tápfesz lábakra a 100n kerámia kondi is kötelező!
DC motorokat vezérelnék vele. Szoftveres PWM-mel megoldható, hogy miközben kommunikál az AVR UART-on, aközben is működjön a PWM? Több szállal kéne gondolom. Lehet AVR-eken több szálat használni?
Ahogy csabeszq is írja megoldható!
Ha ragaszkodsz az ATtiny87-hez assemblerben írnám, Így szabadon használhatók a belső regiszterek. (5V, 16MHz-en) egészen gyors lenne. UART kezelése mehet megszakításban.
Ki indulásnak ez is megteszi:
PWM: why does COM1A0 need to be set before PWM B will work És a: while (1) { Ki egészíteném a SW-PWM kezeléssel.}
Sziasztok!
Egy ltc1864-es modulból szeretnék adatokat nyerni, egyelőre sikertelenül. A kontroller még mindig az Atmega2561. Az SS = PB0, SCK = PB1, MOSI = PB2, MISO = PB3 lábakkal rendelkező chip-et a következőképpen inicializáltam:
A PG0 láb végzi az ltc1864-es megszólítását, így az SS-nek tulajdonképpen semmi szerepe nincs. Bármennyit is kerestem, sehol nem találok olyan leírást, amikor a master olvas a slave egységről. Nekem a MISO konfigurálásra lenne szükségem, és minden bizonnyal nem jól csinálom, mert a modulról semmi nem jön át. Az ltc1864 modul adatlapja itt érhető el: lct1864 Minden segítséget előre is nagyon szépen köszönök!
Lehet, hogy itt a hiba, mert az utána következő sorok nem jönnek át a bluetooth kapcsolaton.
Olvasni pedig így próbálom:
A start_conversion() és a stop_conversion makrók a PG0 lábat mozgatják. A stop alacsony szintre húzza a lábat. A hozzászólás módosítva: Jan 24, 2015
Próbálom slave-ként inicializálni az adatlap szerint, de úgy sem jönnek az adatok. Az órajelet mindig a master adja, úgy tudom. Javítsatok ki, ha tévedek! Nekem arra lenne szükségem, hogy az Atmega2561 által adott ütemben az ltc1864-ről átjöjjenek az adatok a MISO lábon át. És nem jön semmi.
![]() Idézet: Ez egesz biztosan nem lesz igy jo, mert ez a betu erteket hozzaadja a "\r\n" szovegre mutato memoriacimhez es az igy kapott cimet adja at az USART_String fuggvenynek. Tehat, ha betu 0, akkor a \n\r-t irja ki, ha betu 1, akkor csak a \r-t, ha betu 2, akkor semmit, viszont, ha betu erteke tobb, mint 2, akkor akarmit is kiirhat.„USART1_String(betu+"\n\r");” Ha az SPI-n nem lathato karakter kodja erkezik, akkor a terminalon sem fog latszani.
A hozzászólás módosítva: Jan 24, 2015
Az a baj, hogy nem jön semmi. És nem is lép tovább. Az utána következő bármit nem írja ki. Ha kiveszem az SPI-re vonatkozó sorokat, akkor a kiírás átjön. A fő problémám az lenne, hogy hogyan tudok masterként beolvasni a MISO lábra adatokat úgy, hogy az órajelet a kontroller adja, mert ezt a modult nem lehet másképp kiolvasni. Nagyon köszönöm, hogy foglalkozol a problémámmal!
Most ilyesmivel próbálkozom, de ez sem hozott eddig eredményt. A hozzászólás módosítva: Jan 24, 2015
Milyen tipusu AVR-t hasznalsz? Valami nem jo. Vagy hasznalsz ISR-t, es akkor ne figyeld az SPIF bitet, vagy ne engedelyezd az interruptot (SPIE), es akkor figyeld az SPIF-et. A ketto egyutt nem lesz jo. Az SPI orajel sebesseget hol allitod be?
A hozzászólás módosítva: Jan 24, 2015
Az (1<<SPR0) fck/16-ot állít be. A kontroller órajele 7372800 Hz. Amikor az SPDR-be adatot írok, az átvitel során ide jönnek a fogadott adatok? Jól gondolom? Körbeforgatja? Ebben az esetben interrupt is lehetne a megoldás. Most kivettem, de ugyanúgy nem jön semmi. ![]() A hozzászólás módosítva: Jan 24, 2015
Ja, az jo. Akkor egyszeruen vedd ki az SPIE-t, felteve, hogy az SPI_MasterTransmit() fuggvenyed nem valtozott;
Nem 16 bitet kéne olvasnod a PG0 váltások közt ?
De annyit. Ám arra gondoltam, hogy a felét is meg lehet jeleníttetni. De lehet, hogy neked lesz igazad! Lehet, hogy a felső byte üres.
![]()
Úgy sem jó.
![]() ![]() LTC1864 AVR FREAKS Most néztem oszcilloszkóppal (kár, hogy eddig nem jutott az eszembe) és a MISO a lábon van jel. A hozzászólás módosítva: Jan 24, 2015
Ígéretesnek tűnik.
![]() ![]() ![]()
Szerintem inkább olvasd ki az egész adatot, és dobd el, ami nem kell. ADC-nél is van olyan, hogy addig nem lép tovább, míg ki nincs olvasva a felső és alsó byte is, így akadályozza meg, hogy két különböző mérés alsó és felső byte-ját kapd vissza.
Van ilyen is, van olyan is... Ugy kell kezelni, ahogy az adatlap irja!
Ilyen felépítésű program akkor megfelelő lenne, igaz?
A hozzászólás módosítva: Jan 25, 2015
Idézet: „
A nullat hiaba shifteled, az nulla marad.
Az elv jó, a gyakorlat kicsit bonyolultabb!
Ha maradunk az ATtiny87-nél, és szeretnénk magasabb külső órajelről meghajtani? Akkor megnézve a lábkiosztást nem lesz 1 portón összefüggő 8 bitünk. Sajnos a Pin címzés számítás bonyolultabb lesz az n++-nál Esetleg ha kristály helyett oszcilátórt használsz, felszabadul
A leirt kod nem tul bonyolult, legfeljebb ami fordul belole.
A hozzászólás módosítva: Jan 25, 2015
Lehet, hogy a dinamikus pincímzéstől eltekintek, végül is adott számú portról van szó.
Ha szoftveres PWM-et használok, akkor már ATMega8-ra gondoltam, mert sok leírás van hozzá.
Sziasztok!
Szerintetek az jó megoldás egy 16-bites számláló két csatornáját használva, ha:
És a TIMER3_COMPA_vect és TIMER3_COMPB_vect rutinjaiban kezelném le a dolgokat?
Hi!
Ismertek esetleg olyan ingyenes programot, ami a nem szöveges fájlok adatait meg tudja jeleníteni bináris és hexadecimális formátumban? Bocsánat ha nem pont ebbe a csoportba való a kérdés. Nem vagyok nagy fórumozó.
Valamit nem értek.
Ha az
értéket eléri, a TCNT3 nem nullázódik le? Ebben az esetben az
hogyan fog teljesülni? CTC módról van szó. Output Compare. A hozzászólás módosítva: Jan 25, 2015
|
Bejelentkezés
Hirdetés |