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

Re: RS232 Kategorie: Programmierung C (von PeterS - 2.08.2009 23:44)
Als Antwort auf RS232 von Josef - 2.08.2009 20:00
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, CC-Pro 128 Application Board, Pro-Bot128
> 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 - 4.08.2009 19:36)
    Re: RS232 (von PeterS - 4.08.2009 23:44)
        Re: RS232 (von Josef - 5.08.2009 16:55)
            Re: RS232 (von Olaf Breuer - 23.01.2011 16:48)