Re: Serielle Schnittstellenprogrammierung Kategorie: Programmierung C (von Wolfgang - 26.04.2009 22:45) | ||
Als Antwort auf Re: Serielle Schnittstellenprogrammierung von Oliver - 26.04.2009 21:20 | ||
| ||
Hallo Oliver, Vorsicht: was logisch klingt, muss deswegen noch lange nicht stimmen - es war wirklich nur eine Idee von mir! Also: ich habe in der Beschreibung nachgesehen, und da steht, dass das CC-Pro 128 Application Board den von mir erwähnten Schnittstellentreiber bereits hat. Davon könntest Du dich überzeugen, indem Du mit einem Voltmeter die Spannung am TxD-Pin (das wäre Pin2, falls es sich um eine Sub-D-Buchse/ Female handelt, oder Pin3, wenn es ein Stecker/Male ist). Im Ruhezustand, wenn also nichts gesendet wird, sollten sowas um die -8V anliegen. Ohne den Treiber müssten das dagegen +5V sein. Die nominell sogar -12V macht der Treiber übrigens mittels 4 Kondensatoren selber aus den +5V, mit denen die Schaltung von aussen versorgt wird. Nun ist also spannend, wie Deine CC1-Unit aussieht: ist das auch ein Application Board? Ich kenne nur die alte 'M-Unit', und die hat den Schnittstellentreiber bestimmt nicht, soda� ich mir Fehler von der von Dir geschilderten Art vorstellen könnte. Was Du tun kannst?: PullUps helfen nicht, und in der Software kannst Du die von mir gemutmasste Invertierung, falls sie denn gegeben ist, nicht wieder 'hinbiegen'. Du hast schon den richtigen Riecher bewiesen: die Start- und Stop-Bits bauen die Controller selbsttätig ein, und selbst wenn Du die 8 Daten- Bits negieren würdest, dann blieben Start und Stop falsch herum, und die ganze Byte-Erkennung würde nicht funktionieren. Du musst wirklich herausfinden, ob Deine CC-Unit, wie Du sie nennst, auch einen Treiber hat - also wieder die Spannung an deren TxD-Pin messen. Wenn da (in Ruhe) auch eine deutlich negative Spannung anliegt, dann war meine These Unsinn und Du hast ein anderes Problem. Wenn da +5V sind, dann war mein Schuss aus der Hüfte ein Treffer und Du musst einen Schnittstellentreiber dazwischen- hängen... Falls Du das selber nicht herausfinden kannst, dann Versuch' doch mal etwas genauer zu beschreiben, was die CC1-Unit für eine Platine ist (z.B. falls es die noch zu kaufen gibt, Bestellnummer), dann kann man da vielleicht nachforschen. Ist es nur ein Mini-Platinchen mit gerade dem Controller drauf, oder ist das auch so ein Application board mit vielen zusätzlichen Elementen? Erzähl doch mal: hast du ein Oszilloskop, um die Signale ansehen zu können? Sagt dir ein Schaltplan etwas? Hast Du einen Lötkolben? Nicht verzweifeln: Dein Problem hat bestimmt eine Lösung! Gru�, Wolfgang > oha, deine Erklärung klingt logisch und kommt warscheinlich nicht von ungefähr. Ich kenn mich leider mit > der Materie nicht so gut aus... > Aber 2 Fragen tun sich mir nun auf... > 1. woher sollen die 12V kommen, beide Controller arbeiten nur mit 5 V. insofern denke ich, dass das nicht > so tragisch ist / war (ich werde weitere Tests natürlich lassen ;-) > > 2. was kann ich nun tun? um das signal zu invertieren, kann ich RxD und TxD mit nem Pull-Up-Widerstand > versehen, oder? Und kann ich das Signal nicht per Software "umdrehen" ? Das Problem ist hierbei, dass > ich das start und stop-Bit nicht auslesen kann (zumindest nicht über die RS232-Schnittstellen-Befehle) > > Oder ist das eher der Holzweg und es geht viel einfacher? > > Gru� Oliver > > > Hallo Oliver, > > > > gleich vorweg: wass ich hier schreibe, ist nicht genau überprüft, sondern nur so'ne Vermutung, die mir > > beim Lesen Deines Beitrags in den Sinn kommt: > > > > Kann es sein, das einer Deiner beiden Controller einen (invertierenden) Schnittstellen-Treiber > > (z.B. MAX232) hat, der andere aber nicht? Dann sähe jeder Receiver das Inverse dessen, was der > > andere Transmitter gesendet hat, mit dem Erfolg, dass nicht nur die Datenbits andersherum > > herauskommen, sondern auch Start- und Stop-Bit jeweils den falschen Pegel haben. Letzteres > > könnte evtl. auch erklären, dass scheinbar nur 7 Bit übertragen werden. > > > > Falls meine Idee zutrifft, so ist das auch hardware-mässig gefährlich: der Treiberbaustein liefert nominell > > +/-12V, die für die Pins des ohne (Gegen-)Treiber arbeitenden Controllers hochgefährlich sind. > > > > Gru�, Wolfgang > > > > > Hallo > > > Ich bin gerade dabei über die serielle Schnittstelle eine Kommunikation zwischen dem CC-Pro 128 App > Board > > > und der (ur)alten CC1-Unit zu programmieren. > > > > > > Allerdings ist mir ein Fehler aufgefallen, und ich glaube der liegt an meinem Board, was anderes fällt mir > nicht mehr ein -.- > > > > > > Hier eine Tabelle mir den Werten die ich vom alten Board sende und mit dem CC-Pro empfange: > > > > > > 0 0 > > > 1 127 > > > 2 63 > > > 3 126 > > > 4 31 > > > 5 125 > > > 6 62 > > > 7 124 > > > 8 15 > > > 9 123 > > > 10 61 > > > 11 122 > > > 12 30 > > > 13 121 > > > 14 60 > > > 15 120 > > > 16 7 > > > 17 119 > > > 18 59 > > > 19 118 > > > 20 29 > > > 21 117 > > > > > > usw. > > > > > > Wie man sehen kann, sind sie nicht wie gewollt gleich ;-) > > > > > > Die Parameter sind > > > Serial_Init(0, SR_8BIT | SR_1STOP | SR_NO_PAR , SR_BD9600 ); > > > > > > Auch mit einer noch langsameren Baudrate kommt das selbe Ergebnis raus, die Kabel sind nur ca 20cm lang, > > > und das Programm zum Senden auf dem alten Board funktionier auch, bei Anschluss eines PCs kommen auf dem > > > Terminal die richtigen Zeichen an. Es muss also am Pro-Board liegen. > > > > > > Mir ist au�erdem aufgefallen, dass wenn ich mit SR_7BIT statt SR_8BIT starte, die selben (falschen) Zahlen bekomme. > > > Au�erdem ist keine einzige der empfangenen Zahl grö�er wie 127. Was dafür spricht, dass das 8. Bit fehlt. > > > > > > Ist das nun ein Fehler meinerseits oder ist wirklich was defekt ? > > > > > > Ach ja, ich wollte das ganze noch mit der 2. seriellen schnittstelle testen, allerdings empfängt diese gar keine Werte, > > > was auch seltsam ist... > > > > > > Danke für jeden Tipp > > > > > > Gru� Oliver > > > | ||
Antwort schreiben Antworten: Re: Serielle Schnittstellenprogrammierung (von Oliver - 27.04.2009 22:40) Re: Serielle Schnittstellenprogrammierung (von Wolfgang - 28.04.2009 16:18) Re: Serielle Schnittstellenprogrammierung (von Oliver - 3.05.2009 23:36) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum