User manual
182Bibliotheken
© 2008 Conrad Electronic
Tabelle par Definitionen:
Definition
Funktion
SR_5BIT
5 Bit Zeichenlänge
SR_6BIT
6 Bit Zeichenlänge
SR_7BIT
7 Bit Zeichenlänge
SR_8BIT
8 Bit Zeichenlänge
SR_1STOP
1 Stop Bit
SR_2STOP
2 Stop Bit
SR_NO_PAR
no Parity
SR_EVEN_PAR
even Parity
SR_ODD_PAR
odd Parity
6.15.4 Serial_Init_IRQ
Serielle Funktionen Beispiel
Syntax
void Serial_Init_IRQ(byte serport,byte ramaddr[],byte recvlen,byte sendlen,byte par,byte div);
Sub Serial_Init_IRQ(serport As Byte,ByRef ramaddr As Byte,recvlen As Byte,sendlen As Byte,
par As Byte,div As Byte)
Beschreibung
Die serielle Schnittstelle wird für die Benutzung im Interrupt Modus initialisiert. Der Anwender muß eine
globale Variable als Puffer bereitstellen. In diesem Puffer werden die empfangenen Daten, sowie die zu
sendenden Daten abgelegt. Die Größe des Puffers muß die Größe des Empfangspuffers plus die Größe
des Sendepuffers plus 6 sein (siehe auch Beispiel). Der Sende- und der Empfangspuffer kann maximal
255 Zeichen aufnehmen.
Für par wird der Wert durch Oderieren der vordefinierten Bitwerte zusammengestellt. Man oderiert erst
Zeichenlänge, dann Anzahl der Stopbits und dann Parity. Z.B. "SR_7BIT | SR_2STOP | SR_EVEN_PAR" für
7 Bit pro Zeichen, 2 Stop Bit und gerade Parität. Diese Werte sähen in BASIC Syntax wie folgt aus:
"SR_7BIT Or SR_2STOP Or SR_EVEN_PAR". Die Baudrate wird als Teilerwert angegeben, wie in der
Tabelle spezifiziert.
Man kann den DoubleClock Modus des Atmel AVR einschalten. Dies geschieht, wenn das High Bit
im Teiler gesetzt wird. Beim DoubleClock muß gegenüber der normalen Tabelle der Teiler verdoppelt
werden, um die gleiche Baudrate zu erhalten. Dafür sind dann "krumme" Baudraten besser einstellbar. Z.
B. MIDI: Der neue Wert SB_MIDI (=0x803a) liegt jetzt sehr nahe an 31250baud. Beispiel für 19200baud:
Der Teiler für 19200baud ist 0x002f. Für den DoubleClock Modus verdoppelt man nun den Teiler (=
0x005e). Nun das Hi-Bit setzen, und man kann anstatt 0x2f auch 0x805e für 19200baud benutzen .
Wenn im seriellen Interrupt Modus gearbeitet wird, immer Serial_ReadExt() benutzen. Serial_Read()