Donnerstag, 19. Mai 2011

Schnittstellenproblem 500kbps RS485 via COM-Port gelöst


Gestern kam mein Silabs CP2103 Evaluation-Kit an... Das sollte meine Übertragungsratenprobleme auf die Laufschrift (siehe letzter Post) ändern...



Hat's auch tatsächlich getan. Über den Digi-Ausgang GPIO_2 wird die jeweilige Datenrichtung des Datentransfers ausgegeben, RxD und TxD hab ich an den Jumpers in der Mitte abgezwackt (bevor sie auf den Line Driver der RS232 gehen)

GPIO_2 liefert folgende Pegel:
HI ... Lesend
LO ... Daten transmittierend

Jetzt war noch das kleine Problem, dass wir für den Max485 die Pegel genau andersrum brauchten. Also einen Inverter (über 74hc02 hingepfuscht) gebaut, das Signal am GPIO_2 abgegriffen, Invertiert und auf unser galvanisch getrenntes Max485-Modul gespeist.

Das Logikgatter sowie die Max-Platine hab ich extra mit 5V versorgt gehabt, möchte das aber auch noch über USB machen, damit hier ein unabhängiges Gerät vorliegt.

Außerdem wurde für die GFI-Platine IN-20 noch eine neue Software geschrieben (LED-Steuerung von alter übernommen, I2P-Protokoll implementiert). Hat ganz toll funktioniert, nur etwa auf den halben der existierenden Platinen auf einer Laufschrift (8x3 IN20) nicht

=> NOTE: Schau immer zuerst ob nicht auch innerhalb eines Produkts verschiedene Quarze (hier 8 und 16 Mhz) bestückt sind ;)

Geplant für die nahe Zukunft ist eine PCB mit CP2103, die die folgenden Funktionen / Bestückungen aufweist:
~ hohe Datenraten (bis 1Mbit oder knapp darunter)
~ Betrieb über Wannenstecker 5V RS232 für uC-Anwendungen
~ Betrieb über Max485
~ Betrieb über galv. getrennten Max485

~ USB-self-powered
~ Messpunkte für Debugzwecke
~ Befestigungsborungen
~ wenn möglich nur SMD-Bauteile damit auch klebbar

Dienstag, 17. Mai 2011

Hello world!


Habe mich soeben entschlossen einen Blog zu führen, damit meine ganzen Erkenntnisse die ich beim Programmieren gewinne nicht wieder in der Versenkung verschwinden, da ich sie sowieso nicht aufschreiben würde...

Zusätzlich ist es wahrscheinlich auch meinem Deutsch nicht abträglich, da ich feststellen musste, dass ich mittlerweile anfange meine handschriftlichen Notizen in der GroßKleinSchreibweise (wie heißt die noch gleich) zu verfassen und schockierenderweise schon mal unbewusst ein ; - daher der Blogname - gesetzt habe..

Wie dem auch sei, das Tagesgeschäft:


Musste heute feststellen, dass man nicht davon ausgehen sollte, dass Motherboards (Via VB 7001, mein aktueller Industrie-PC) für schnelle serielle Übertragungen geeignet sind. Der "übliche" PC-UART-Quarz beträgt nur 1,8432 MHz und mit dem obligatorischen Prescaler 16 kommt man da auf sage und schreibe 115200 bps


Tja, denkt man sich, da man schon Ubutunu Server (Konsolenversion) auf der Maschine hat, probiert man es mal wie folgt:

setserial /dev/ttyS0 spd_warp ... Laut Doku des Befehls sollte schließlich bei einer von der Anwendung geforderten Baudrate von 38k4 jetzt 460 kbps rausschießen - denkste, es kommen genau 10 kbps raus...

Mit dem ganzen möchte ich via RS485 LED-Platinen (Pixelmatrix 32x8 mit Mega88 20MHz) steuern, und zwar bis knapp 100 Stück..

Geplanter Ausweg aus dem Dilemma wird eine Adapterplatine USB<>CP2103<>Max485 sein, da dieser über die GPIO2 (user programmable IO). Leitung ein Transmit-Signal ausgibt, wann immer Daten über die USB gesendet werden, sonst lesend. Ergo: Optimal geeignet.