Názory ke článku AVR – USART
21. 11. 2006
Nevíte někdo, zda existuje nějakej jednočip, kterej by měl vícero sériových řadičů? Před časem jsem potřeboval 1x synchronní a 1x async, přičemž finální řešení spočívalo v tom, že synchronní řadič byl softwarově emulován (AT89C51). Kdyby se ovšem našlo něco, co by ten řadič mělo jaxi v hardwarové podobě, bylo by to zajimavé.
Existují i mezi AVR typy, kde je více sériových řadičů, například ATMEGA162
9. 12. 2006
Mám problém s kódem v příkladu. Jediný rozdíl, že mám ATMega8 proto jsem jen vložil správný soubor s definicemi (.INCLUDE "m8def.inc") ale program mi nejak nefunguje. HW se zdá v pořádku. Ověřil sem ho tímto kódem:
test: SBIS PINB, 1
CBI PORTB, 0
SBIC PINB, 1
SBI PORTB, 0
RJMP test
TX z COM portu pripojen na PB1, RX na PB0, v terminálu se mi vracely zapsané znaky.
Predpokládám, že kód z příkladu má také vracet odeslané znaky zpět. Ovšem se mi ho nepodařilo rozchodit. Nepozdávají se mi některé kroky:
1) rutina PRIJEM_DAT je volána instrukcí RCALL, ale chybí návrat zpět (RET)
2) Příznak TXC v UCSRA nastane až po odeslání nějakého znaku. Tudíž čekat na něj před odesláním prvního znaku není dobrý nápad.
Mně samotnému se ještě nepodařilo vytvořit funkční spojení s PC, takže berte mé připomínky s rezervou.
Na závěr ještě malé upozornění na překlep:
"URSEL – povolí zápis do registru UCSRS" Patří UCSRC.
Ahoj, mrknu na to co by to mohlo delat. Delam jen s ATMEGA16. Je tam opravdu chybka s tim RET. Priklad co sem zkousel sem blbe zkopiroval. Opravim a dam vedet....
Tak sem opravil priklad. Nevim jak je to mozny, ale puvodni reseni ac melo, nechodilo. Nahradil sem teda symbolicky oznaceni konstantami a funguje to...
Caw, chcem sa spýtať či by si my toto vedel trošku vysvetliť alebo nejaky navod k PIC, lebo ja nemôžem použiť AVR