(→Spezifikationen Layer-0 UART) |
(→Siehe auch) |
||
Zeile 52: | Zeile 52: | ||
==Siehe auch== | ==Siehe auch== | ||
+ | *[[Network MC/PC]] | ||
*[[Network Controller/PC Schichten]] | *[[Network Controller/PC Schichten]] | ||
− | |||
*[[Kommunikation/Protokolle]] | *[[Kommunikation/Protokolle]] | ||
*[[Betriebssystem für Bascom]] | *[[Betriebssystem für Bascom]] |
Version vom 28. Februar 2006, 20:20 Uhr
Inhaltsverzeichnis
Network Controller/PC Spezifikationen
Für das Projekt "Network Controller/PC" werden hier die ganz konkreten Spezifikationen angelegt. Als "Sprache" wird Pseudo-Code, an C angelehnt, verwendet.
Spezifikationen Layer-0 UART
- Maximale Frame-Size
#define FRAME_C_MAX 127
Das ist die maximale Netto-Länge zwischen STX und ETX, exklusive. Auch das scheint für µC etwas groß, aber es wird davon ausgegangen, daß die real benötigten Messages weit kürzer sein werden, d.h. das regelt sich vermutlich von selbst durch die Vereinbarungen und Restriktionen in den oberen Layern
- Kontrollzeichen
#define CTL_M_MASK 0xF8 #define CTL_M_ADON 0x10 #define CTL_C_BASE 0xA8 #define CTL_C_STX CTL_C_BASE + 1 #define CTL_C_ETX CTL_C_BASE + 2 #define CTL_C_PFX CTL_C_BASE + 3
- Code-Beispiel/Muster für Paket-senden
( transmit() stellt die Funktion für den tatsächlichen physischen Output dar).
static unsigned char bTxBcc; // Checksum für BCC // -------------------------------------------------------------- void TxStartFrame ( void ) { bTxBcc = 0 transmit ( CTL_C_STX ) } // -------------------------------------------------------------- void TxCloseFrame ( void ) { transmit ( bTxBcc ) transmit ( CTL_C_ETX ) } // -------------------------------------------------------------- void TxSendFrameByte ( unsigned char bTxChar) { bTxBcc ^= bTxChar if (bTxChar & CTL_M_MASK) == CTL_C_BASE) { transmit ( CTL_C_PFX ) transmit ( bTxChar | CTL_M_ADON ) } else { transmit ( bTxChar ) } }
- Die entsprechende Empfangsroutine ist etwas komplexer und wird wesentlich mehr vom Geschick und den Gewohnheiten des Programmieres bestimmt.