Re: RS232 Kategorie: Programmierung C (von PeterS - 4.08.2009 23:44) | ||
Als Antwort auf Re: RS232 von Josef - 4.08.2009 19:36 | ||
| ||
> Hallo Peter, > > danke für die rasche antwort, ich habe mir auf deinen rat hin ein speicherskope besorgt und mich in die > schnittstlle gehängt. > Zur info, es handelt sich um eine schnittstelle von einem PV-Wechselrichter > der von einem datenlogger abgefragt wird und der datenlogger sendet fertig aufbereitet daten an den PC, wo > man laut hersteller mitlesen kann. > > zur definition die c-control pro bekommt die daten über einen max 232 auf die > 2te schnittstelle (0=GND, 1=+5V). > die folgende pegelbeschreibung ist auf pin x2_11 gemessen: > nun zu den pegeln auf der schnittstelle-> > Anfrage vom Datenlogger an wechselrichter (wird laufend gesendet) -> Startbit=0, 8 datenbits, > 1tes Stopbit=0, 2tes Stopbit=1 > > aufbereitete Daten vom logger (wird alle 4,5 sec gesendet) -> Startbit=0, 8 Datenbits, 2 Stopbits=1 > in diesem format kommen mehrere bytes. > > Ich habe auch das ganze mit einem vorgeschalteten inverter versucht -> hat auch nicht funktioniert. > > kann es sein, dass der von dir unten erzeugte frame error das problem darstellt? > > danke für deine anregungen Der frame error wird nicht von mir erzeugt, das macht der UART im Atmel selbst. Meines Erachtens müssen Stopbits high sein. Was Du hast wäre ein -> Startbit, 8Bit Daten, Parity = space, 1 Stopbit Der Atmel UART kann aber nur Parity = none, odd, even. Vielleicht kann man im 9 Bit Daten Modus ein Parity = space erzeugen. Aber wie schon gesagt, 9 Bit Daten werden momentan von den UART Library Routinen der C-Control Pro nicht unterstützt. Frag doch bitte mal den Hersteller des Geräts, was für ein serielles Format er erzeugt. Dann hättest Du Gewissheit, ob Du richtig gemessen hast. Gruss Peter Routinen > > Josef > > > > hallo zusammen > > > > > > habe mir ein ccontrol pro mega 128 gekauft um über eine serielle > > > schnittstelle daten einzulesen. > > > > > > die schnittstelle liefert mit 3200 baud 1 startbit 8 datenbits und 2 > > > stopbits, wobei das erste stopbit high und das zweite low ist. > > > > Hallo Josef, > > > > die Schnittstelle ist mit 2 Stopbits, das 1. high, das 2. low doch ziemlich exotisch. Ich > > kenne eigentlich nur, das beide Stopbits high sind. Der Receiver im Mega128 ignoriert laut > > Datenblatt das zweite Stop Bit. Allerdings wird bei 1. Stopbit low und 2. Stopbit high ein > > Frame Error erzeugt. > > > > Laut Datenblatt können die Atmel Mega auch nur high Stopbits erzeugen. Die Schnittstelle kann > > auch kein Mark oder Space Parity, allerdings kann man wohl pfuschen, in dem man 9Bit Daten > > angibt, und damit das Parity erzeugt. 9Bit Daten werden allerdings zur Zeit von der C-Control > > Pro Library nicht unterstützt. > > > > Schau doch mal im Oszi, was wirklich für Daten ankommen, die vom Mega128 gelesen werden sollen. > > Das klingt mir etwas abenteuerlich mit 2 unterschiedlichen Stopbits. > > > > Gruss Peter > > > > > > > > das program schaut so aus > > > // Hauptprogramm > > > // > > > void main(void) > > > { > > > byte c; > > > char Text1[37]; > > > char Text2[27]; > > > > > > Text1="-- Test serielle Schnittstelle --"; > > > Text2="-WR Schnittstellentest-"; > > > > > > Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,47); > > > //Init RS232: 19200, bps, 8 Bit, 1 Stop, NP > > > Serial_Init(1,SR_8BIT|SR_2STOP|SR_NO_PAR,287); //287 > > > //Init RS232: 3200, bps, 8 Bit, 2 Stop, NP > > > c=0; > > > > > > Serial_WriteText(0,Text1); > > > Serial_WriteText(0,Text2); > > > { > > > Serial_Write(0,c); > > > Serial_WriteText(0,"1"); > > > c=Serial_Read(1); > > > Serial_WriteText(0,"2"); > > > Serial_Write(0,c); > > > Serial_WriteText(0,"3"); > > > }while (1); > > > } > > > > > > > > > das programm bleibt bei Serial_WriteText(0,"1") also schreibt noch 1 raus hängen. > > > was auch noch eigenartig ist, es wird vom auf den monitor diese Zeile -> Wert von c > > > (Serial_Write(0,c);) nicht geschrieben; > > > er wartet auf daten von der schnittstelle. habe einen PC angehängt und 2 stopbits über > > > die RS 232 geschickt, das funktioniert mit jeder baurate. von der zweiten schnittstelle werden auch > > > am PC daten empfangen. > > > > > > hat vielleicht jemand eine idee? > > > > > > danke | ||
Antwort schreiben Antworten: Re: RS232 (von Josef - 5.08.2009 16:55) Re: RS232 (von Olaf Breuer - 23.01.2011 16:48) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum