Äh USART ist ungleich RS232!
USART ist nur die Universelle Hardware im Controller. Der kann halt serielle Daten verschicken. Dabei nimmt er sich aber den Standard RS232, also z.B. 1 Startbit, 8 Datenbits, 1 Stopbit, keine Parität und 9600Baud.
Grundsätzlich hat RS232 kein Adressen und ist auch nicht als Mehr-Teilnehmer-Bus ausgelegt. Dh. du hast auch keinen Bus, wo du später noch 3 andere Geräte dranhängen kannst, dafür muss dann schon I2C oder SPI her (wobei SPI 2 Leitungen +1 für jeden Slave braucht).
Das USART einzurichten ist recht einfach und in den Datenblättern vom Controller bei Atmel sehr gut beschrieben. Dort ist Beispielcode für Assembler und C. Wichtig ist halt: richtige Baudrate wählen, muss bei beiden gleich sein. Nen netten Rechner hab ich hier gefunden http://www.gjlay.de/helferlein/avr-uart-rechner.html
Danach läuft es eigentlich immer so ab, wie im Datenblatt.
z.B. für die Initialisierung
Code:
USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRnA,UDREn
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDRn,r16
ret
Und für ein Sendung
Code:
USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRnA,UDREn
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDRn,r16
ret
Über die im Datenblatt beschriebenen Flags kannst du dann einen Interrupt auslösen lassen, wenn der SendeBuffer leer ist und wenn die Sendung abgeschickt wurde, beim Empfangen kannst du anzeigen lassen, ob ne neue Nachricht da ist oder ob Fehler aufgetaucht sind.
Wie das genau geht, ist sehr gut im Datenblatt beschrieben.
Lesezeichen