PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Synchrone serielle Kommunikation - wie?



ThSteier
16.10.2006, 12:49
Hallo,

ich hoffe mal, die Frage paßt hier rein: gibt es eigentlich noch Controller, die auf der seriellen Schnittstelle auch noch richtige synchrone Kommunikation beherrschen? Oder war die gute alte Z80-SIO wirklich der letzte Baustein, mit dem man ohne größere Verrenkungen zB HDLC implementieren konnte?
Ich habe bisher nur spezielle ASICs und andere ICs für HighSpeed-Kommunikationsanwendungen gefunden, aber das wäre dann schon mit Kanonen auf Spatzen...

Sowohl ATMEL als auch Microchip schreiben zwar teilweise auch USART in ihre Produktübersichten - aber wenn man dann mal genauer in den jeweiligen Datenblättern nachliest, bleibt vom S außer reinen 7..9-Bit-Frames ohne eigentlich grundlegende Sachen wie Bitstuffing/-striping, NRZ(I)-Kodierung usw nicht viel übrig. Einfach 8 Bits nacheinander auf einen I/O rausschieben verdient IMHO das Prädikat "synchron" nicht wirklich... :(

Muß man sich wirklich erst in C oder Assembler einarbeiten (Zeit müßte man haben :() und die ganze Sache in Software implementieren, wenn man mal einen ganz normalen seriellen Datenstrom á la <Startframe><Nutzdaten><CRC><Stopframe> übertragen möchte? BASCOM dürfte (vor allem auf der Empfängerseite) für solche Sachen ja dann doch zu langsam sein...

Viele Grüße,
Thomas

ThSteier
16.10.2006, 14:08
Ich nochmal...

Um noch ein paar Hintergrundinfos zu liefern: konkret geht es mir um die Umsetzung des im Amateurfunk benutzten AX.25-Protokolls (physical layer (http://n1vg.net/packet/index.php) und Protokoll (http://www.tapr.org/pub_ax25.html)). Wenn alles irgendwann mal funktionieren sollte, wie ich es mir vorstelle ;) , wäre das auch gleich eine Option für mein hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=23743) angesprochenes Übertragungsproblem.

Sendeseitig läßt sich die Sache in Software ja noch relativ einfach lösen: Datenpaket zusammenstellen, Stuffbits rein, CRC berechnen, NRZI-kodieren und mittels SHIFTOUT ausgeben - fertig. Damit dürfte der Controller bei maximal 9600 Baud keine Schwierigkeiten haben.

Das eigentliche Problem liegt auf der Empfängerseite: eine zuverlässige Taktrückgewinnung und Synchronisation sind scheinbar nicht ganz trivial. Es finden sich zwar einige Projekte (TNC (http://de.wikipedia.org/wiki/Terminal_Node_Controller)s bzw in letzter Zeit vor allem APRS (http://de.wikipedia.org/wiki/APRS)-Tracker), die sich des Themas annehmen. Allerdings kommen dort entweder DSPs zum Einsatz (was meine Kenntnisse doch weit übersteigt) oder man benutzt Mikrocontroller mit fester Taktfrequenz und Polling-Routinen, die diversen Erfahrungsberichten zufolge häufig unter Synchronisations- und dadurch bedingten Übertragungsproblemen leiden. Was ich nun suche, ist eine Möglichkeit, den Takt zuverlässig aus dem Datenstrom zurückzugewinnen und den Empfängertakt zu synchronisieren - eben das, was die "alten" SIOs auf Wunsch automatisch erledigten.

Viele Grüße,
Thomas

PicNick
16.10.2006, 14:24
Was ist, wenn du beim Z80 SIO bleibst ? den gibt's doch eh' noch, glaub ich.

ThSteier
16.10.2006, 14:46
Ja, aber nur als DIP-40 - und durch das Busprinzip geht ein Mega8 nur für die Ansteuerung drauf. Schade eigentlich :(

Nett waren damals die TMPZ von Toshiba - das waren komplette Z80-Rechner (CPU, 2x PIO, 2x SIO, 4x CTC) im SMD-Gehäuse, die nur noch 'nen externen RAM brauchten. Aber meinen CEPAC-80 (http://www.geocities.com/capecanaveral/6368/cepac_ct.html) habe ich vor ein paar Jahren leider gegrillt, und die TMPZ84C015 gibt es scheinbar nirgends mehr. Eine Leerplatine hätte ich noch hier liegen...

Na, mal schauen - ich glaube, ich habe inzwischen (BTW - geht das eigentlich nur mir so, daß man sich ewig erfolglos den Kopf zerbricht und bein Schreiben kommen dann die Ideen?) einen Ansatz für das Taktproblem gefunden. Das muß ich mir aber erstmal in Ruhe durch den Kopf gehen lassen, bevor ich mich hier lächerlich mache oder das Fahrrad neu erfinde. ;)

Viele Grüße,
Thomas

Edit: Ich habe hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=24190) mal etwas zu einer möglichen Software-Lösung geschrieben. Aber ob der Ansatz funktioniert...?