User manual
326Bibliotheken
© 2013 Conrad Electronic
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
5.20.5 Serial_Init_IRQ (Mega)
Serielle Funktionen Beispiel
Syntax
void Serial_Init_IRQ(byte serport, byte ramaddr[], byte recvlen,
byte sendlen, byte par, word divider);
Sub Serial_Init_IRQ(serport As Byte,ByRef ramaddr As Byte,recvlen As Byte,
sendlen As Byte, par As Byte, divider As Word)
Beschreibung
Die serielle Schnittstelle wird für die Benutzung im Interrupt Modus initialisiert. Der Anwender muss eine
globale Variable als Puffer bereitstellen. In diesem Puffer werden die empfangenen Daten, sowie die zu
sendenden Daten abgelegt. Für die Größe des Puffers gibt es ein #define SERIAL_BUF. Möchte man ein
byte Array definieren mit X bytes Empfangspuffer und Y bytes Sendepuffer, schreibt man "byte buf
[SERIAL_BUF(X,Y)];" (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 Zei-
chenlä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 spezi-
fiziert.
Der vom Benutzer zur Verfügung gestellte RAM Puffer muss während der Benutzung der seriellen
Schnittstelle reserviert bleiben. Da lokale Variablen nach Verlassen der Funktion freigegeben werden, ist
es meistens sinnvoll den Puffer als globale Variable zu deklarieren.
Man kann den DoubleClock Modus des Atmel AVR einschalten. Siehe das Kapitel Divider.
Wenn im seriellen Interrupt Modus gearbeitet wird, immer Serial_ReadExt() benutzen. Serial_Read()
funktioniert nur im normalen (polled) Modus.
Parameter
serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)
ramaddr Adresse des Puffers
recvlen Größe des Empfangspuffers
sendlen Größe des Sendepuffers