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

Re: 2. Serielle Schnittstelle funktioniert nicht Kategorie: CC-Pro Unit & Appl.Board (von Hans - 18.02.2012 16:38)
Als Antwort auf Re: 2. Serielle Schnittstelle funktioniert nicht von Jan - 18.02.2012 16:17
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> > > > > > Hallo User,
> > > > > >
> > > > > > ich habe folgendes Problem bei der Datenübertragung zwischen zwei Pro Application Boards (ein Sender,
> > > > > > ein Empfänger):
> > > > > > Wenn ich beide Boards über die 1. Schnittstelle (Serport 0) verbinde, kommen die Daten an.
> > > > > > Wenn ich die 2. Schnittstelle (Serport 1) nutze, nicht.
> > > > > > Ich benutze J4 als Anschlu� für die 2.Schnittstelle, TxD Board 1 ist an RxD Board 2 angeschlossen und
> > > > > > umgekehrt. GND sind miteinander verbunden. An den Lötstellen von J4 gemessen besteht entsprechende
> > > > > > Verbindung.
> > > > > > Auf beiden Boards kann ich im Ruhezustand (ohne Verbindungskabel) zwischen TxD und GND ~9V messen.
> > > > > > Die Jumper für Port D2 und D3 stecken.
> > > > > > Das Kabel ist kürzer als 1m bei einer Baudrate von 19200.
> > > > > > Beim Anpassen der beiden Programme habe ich bei der Initialisierung und den Befehlen jeweils für
> > > > > > Serport die 0 durch eine 1 ersetzt.
> > > > > >
> > > > > > WeiÃ? jemand Rat?
> > > > > >
> > > > > sprüh mal kontakt spray in die steckleiste  des Prozessors..............
> > > > >
> > > > > > GruÃ?, Jan
> > > >
> > > > schick doch mal n beispielprogramm, damit wir einen programmierfehler ausschlie�en können......
> > >
> > > Hallo Hans,
> > > hier die beiden Programme.
> > > Wenn ich serport als 0 setze und die beiden Boards über die serielle Schnittstelle 1 verbinde,
> > > kommen die Daten einwandfrei an. Der Zustand der LEDs und die Anzeige sind identisch.
> > > Bei serport = 1 und Verbindung über die 2. serielle Schnittstelle nicht.
> > > Der Cursor im Display des 2. Boards blinkt dann nur als Unterstrich...
> > >
> > > Erstes Programm:
> > >
> > > 'Programm dient zur Probe für ein grö�eres Projekt, bei dem Daten zwischen
> > > 'mehreren Mega128 ausgetauscht werden sollen.
> > > 'Es sendet 4 Byte über die serielle Schnittstelle an Board 2
> > > 'Byte 0 = Zustand LED 1
> > > 'Byte 1 = Zustand LED 2
> > > 'Byte 2 = zählt aufwärts
> > > 'Byte 3 = 1
> > >
> > > Dim S(4) = {0,0,0,1} As Byte
> > > #define serport 1
> > >
> > > Sub main()
> > >     Port_DataDirBit(PORT_SW1,PORT_IN)
> > >     Port_WriteBit(PORT_SW1,1)
> > >     Port_DataDirBit(PORT_SW2,PORT_IN)
> > >     Port_WriteBit(PORT_SW2,1)
> > >     Port_DataDirBit(PORT_LED1,PORT_OUT)
> > >     Port_WriteBit(PORT_LED1,PORT_OFF)
> > >     Port_DataDirBit(PORT_LED2,PORT_OUT)
> > >     Port_WriteBit(PORT_LED2,PORT_OFF)
> > >     Serial_Init(serport,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD19200)
> > >     LCD_Init()
> > >     LCD_ClearLCD()
> > >     LCD_CursorOff()
> > >
> > >     Do While True
> > >         S(0) = Port_ReadBit(PORT_SW1)
> > >         S(1) = Port_ReadBit(PORT_SW2)
> > >         S(2) = S(2) + S(3)
> > >         LCD_Locate(1,1)
> > >         LCD_WriteWord(S(0),3)              'Anzeige Wert von SW1
> > >         Port_WriteBit(PORT_LED1,S(0))      'Kontrolle der Eingabe SW1 per LED
> > >         LCD_Locate(2,1)
> > >         LCD_WriteWord(S(1),3)
> > >         Port_WriteBit(PORT_LED2,S(1))
> > >         LCD_Locate(1,6)
> > >         LCD_WriteWord(S(2),3)
> > >         LCD_Locate(2,6)
> > >         LCD_WriteWord(S(3),3)
> > >         Serial_Write(serport,S(0))
> > >         Serial_Write(serport,S(1))
> > >         Serial_Write(serport,S(2))
> > >         Serial_Write(serport,S(3))
> > >     End While
> > >
> > > End Sub
> > >
> > > Zweites Programm:
> > >
> > > 'Programm dient zur Probe für ein grö�eres Projekt, bei dem Daten zwischen
> > > 'mehreren Mega128 ausgetauscht werden sollen.
> > > 'Es empfängt 4 Byte über die serielle Schnittstelle von Board 1
> > > 'Byte 0 = Zustand LED 1 Board 1
> > > 'Byte 1 = Zustand LED 2 Board 1
> > > 'Byte 2 = zeigt Byte 2 von Board 1 an
> > > 'Byte 3 = zeigt Byte 3 von Board 1 an
> > >
> > > Dim S(4) As Byte
> > > #define serport 1
> > >
> > > Sub main()
> > >     Port_DataDirBit(PORT_LED1,PORT_OUT)
> > >     Port_WriteBit(PORT_LED1,PORT_OFF)
> > >     Port_DataDirBit(PORT_LED2,PORT_OUT)
> > >     Port_WriteBit(PORT_LED2,PORT_OFF)
> > >     Serial_Init(serport,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD19200)
> > >     LCD_Init()
> > >     LCD_ClearLCD()
> > >     LCD_CursorOff()
> > >
> > >     Do While True
> > >         S(0) = Serial_Read(serport)
> > >             LCD_Locate(1,1)
> > >             LCD_WriteWord(S(0),3)
> > >             Port_WriteBit(PORT_LED1,S(0))
> > >         S(1) = Serial_Read(serport)
> > >             LCD_Locate(2,1)
> > >             LCD_WriteWord(S(1),3)
> > >             Port_WriteBit(PORT_LED2,S(1))
> > >         S(2) = Serial_Read(serport)
> > >             LCD_Locate(1,6)
> > >             LCD_WriteWord(S(2),3)
> > >         S(3) = Serial_Read(serport)
> > >             LCD_Locate(2,6)
> > >             LCD_WriteWord(S(3),3)
> > >     End While
> > >
> > > End Sub
> > >
> > > Ich hoffe, Du oder jemand anderes findet den Fehler, warum der Datenaustusch nur über die 1.ser.
> > > Schnittstelle funktioniert.
> > >
> > > GruÃ?, Jan
> >
> > Hallo Jan,
> >
> > immer den einfachen Fall testen. Nimm doch das Demo Programm, das die serielle Eingabe
> > zurückschickt. Teste das mit einem Terminal auf dem PC und Schnittstelle 0. Danach im
> > Programm auf Schnittstelle 1 umstellen. Dann sieht man, ob das jeweile Board sauber
> > auf den USARTs funktioniert. Wenn das alles funktioniert hat, weiÃ? man das Software
> > und Hardware jeweils ok sind. Danach sieht man weiter.
> >
> > Gruss Peter
>
> Danke für die Tipps!
>
> Nachdem ich wie von Peter angeregt die Schnittstellen einzeln ausprobiert habe und das Problem mit
> der 2. Schnittstelle weiter bestand, habe ich vor lauter "Verzweiflung" die Prozessoren abgezogen
> und wieder aufgesteckt. Jetzt läuft alles :)
> Hans hatte also am Anfang die richtige Vermutung.
>
> Jan

Sprüh am besten doch noch etwas Kontakt spray in die Steck leiste.....


    Antwort schreiben


Antworten: