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 Jan - 14.02.2012 21:26)
Als Antwort auf Re: 2. Serielle Schnittstelle funktioniert nicht von Hans - 14.02.2012 15:49
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
> > > 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


    Antwort schreiben


Antworten:

Re: 2. Serielle Schnittstelle funktioniert nicht (von PeterS - 15.02.2012 12:54)
    Re: 2. Serielle Schnittstelle funktioniert nicht (von Jan - 18.02.2012 16:17)
        Re: 2. Serielle Schnittstelle funktioniert nicht (von Hans - 18.02.2012 16:38)