Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega128
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)