Hallo
Die 36kHz-Trägerfrequenz begrenzt die Ir-Übertragung auf 2400 Baud. Bei einem direkten Anschluß ohne IR kann man die Baudrate natürlich deutlich erhöhen. Günstig sind laut Datenblatt unter "Examples of Baud Rate Setting" in der Beschreibung des USART z.B. 38400, 19200 oder 9600 mit jeweils 0,2% Fehler bei 8MHz. In diesen Tabellen findet man auch die entsprechenden Werte für das UBRR-Register welche man in der Init()-Funktion der Library beim Setup des USART einsetzen kann:
Code:
/* Init function Processor will be initalized to work correctly */
void Init (void)
{
...
// prepare RS232
UCSRA = 0x00;
UCSRB = 0x00;
UCSRC = 0x86; // No Parity | 1 Stop Bit | 8 Data Bit
UBRRL = 0xCF; // 2400bps @ 8.00MHz
...
Die Werte aus der Tabelle:
2400 207 0xcf
9600 51 0x33
19200 25 0x19
38400 12 0x0c
Da das Highbyte von UBRR immer leer bleibt, reicht es, wenn man nur UBRRL mit dem jeweiligen Wert lädt. Btw. sieht man an den Werten auch den 0,2%-Rundungsfehler.
Wie man das USART-Setup des Mega8 komplett umkrempelt habe ich hier mal getestet. Der asuro "spricht" mit einer seriellen Maus mit 1200,7,n,2:
https://www.roboternetz.de/community...l=1#post237915
Bei dieser niedrigen Baudrate muss man auch UBRRH setzen und deshalb entsprechend berechnen.
Gruß
mic
Lesezeichen