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

Re: Serielle Daten in die CC schreiben Kategorie: Programmierung C (von Endress - 11.12.2009 22:39)
Als Antwort auf Re: Serielle Daten in die CC schreiben von PeterS - 10.12.2009 17:36

> > > > > Hallo Ulli,
> > > > >
> > > > > danke für die schnelle Antwort.
> > > > >
> > > > > Mir ist dann doch recht schnell ein Licht aufgegangen:
> > > > > Mit dem Projectboard gibt es scheinbar Probleme, weil die IDE
> > > > > noch auf eine Rückmeldung von der CC wartet, wenn man das Programm
> > > > > startet und sobald der serielle Bus vom Controller aus initialisiert
> > > > > wird, ist der dicht und die IDE schmiert ab.
> > > > >
> > > > > Mit dem Applicationboard tritt der Fehler nicht auf...
> > > > >
> > > > > Gruss, Endress
> > > > >
> > > >
> > > >
> > > > Hi,
> > > >
> > > > also abschmieren ist mir nicht bekannt, aber du darfst natürlich nicht UART und Debugger
> > > > zur gleichen Zeit verwenden. Also auch nicht die MsgWrite... Befehle sondern musst SerialWrite...
> > > > verwenden.
> > > >
> > > > Grü�e Ulli
> > >
> > > Hallo,
> > >
> > > ich habe die den Code auf dem Applicationboard zum laufen gebracht und wollte das heute
> > > auf dem Projectboard umsetzen. Ergebnis: IDE schmiert unmittelbar beim Init des Seriellen
> > > Ports ab. Ich habe alles auskommentiert, was irgendwie auf den seriellen Bus schreibt.
> > >
> > > Ich möchte ungern das Applicationboard verbauen..
> > >
> > > #define PortC0 16
> > > #define PortC1 17
> > > #define PortC2 18
> > >
> > >
> > > char buffer[80],zeichen_str[50],Daten_Buffer[10];
> > > int zeichen,Buffer_Index,exitcode,Buffer_Cnt;
> > > byte command;
> > >
> > >
> > > void main(void)
> > > {
> > >     SPI_Disable();
> > >
> > >     //LCD_Init();
> > >     //LCD_ClearLCD();
> > >
> > >     command=0;
> > >     exitcode=1;
> > >
> > >     Port_DataDirBit(PortC0,1);
> > >     Port_DataDirBit(PortC1,1);
> > >     Port_DataDirBit(PortC2,1);
> > >
> > >
> > >     Serial_Init_IRQ(0,buffer,120,120,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600);
> > >
> > >     do
> > >     {
> > >           Buffer_Index=0;
> > >
> > >           Buffer_Cnt=Serial_IRQ_Info(0,RS232_FIFO_RECV);
> > >
> > >           if(Buffer_Cnt!=0)
> > >           {
> > >
> > >             do
> > >             {
> > >                 Buffer_Index=Buffer_Index+1;
> > >                 zeichen = Serial_ReadExt(0);
> > >
> > >
> > >                 if(zeichen!=13)    // alles ausser Return
> > >                 {
> > >                     Daten_Buffer[Buffer_Index]=zeichen;
> > >                     if(zeichen==256)   // Buffer leer dann Ende
> > >                     {
> > >                         exitcode=0;
> > >                     }
> > >                     else
> > >                     {
> > >                         // LCD_ClearLCD();
> > >                         command = Daten_Buffer[1];
> > >                         Str_WriteInt(command,zeichen_str,0);
> > >                         // Serial_WriteText(0,zeichen_str);
> > >                         // LCD_WriteText(zeichen_str);
> > >
> > >                         /*
> > >                             Relais 1 AN = 1  Aus = 2
> > >                             Relais 2 AN = 3  Aus = 4
> > >                             Relais 3 An = 5  Aus = 6
> > >                             Alle Relais AUS = 0
> > >                         */
> > >
> > >                         switch(command)
> > >                         {
> > >                             case 49:
> > >                             Port_WriteBit(PortC0,1);
> > >                             break;
> > >
> > >                             case 50:
> > >                             Port_WriteBit(PortC0,0);
> > >                             break;
> > >
> > >                             case 51:
> > >                             Port_WriteBit(PortC1,1);
> > >                             break;
> > >
> > >                             case 52:
> > >                             Port_WriteBit(PortC1,0);
> > >                             break;
> > >
> > >                             case 53:
> > >                             Port_WriteBit(PortC2,1);
> > >                             break;
> > >
> > >                             case 54:
> > >                             Port_WriteBit(PortC2,0);
> > >                             break;
> > >
> > >                             case 48:
> > >                             Port_WriteBit(PortC0,0);
> > >                             Port_WriteBit(PortC1,0);
> > >                             Port_WriteBit(PortC2,0);
> > >                             break;
> > >                         };
> > >                     }
> > >                 }
> > >             }while(exitcode);
> > >         }
> > >     }while(true);
> > > }
> > >
> > >
> >
> > Hi,
> >
> > deine IDE schmiert nach dem Start per Software bzw. per Hardwarerest ab?
> > Benutzt du einen USB zu UART Konverter oder die RS232?
> > Wenn du den USB zu UART Konverter verwendest würde ich evtl. mal die
> > aktuellen Treiber von SiLabs teste, aber dieses Problem war mich bis jetzt unbekannt.
> > Vieleicht kann unser Peter was dazu sagen?
> >
> > https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
> >
> >
> > Grü�e Ulli
>
> Hi,
>
> ich zitiere hier gerne immer mal die Doku um Benutzer zum Lesen anzuregen:
> "Die Grö�e des Puffers mu� die Grö�e des Empfangspuffers plus die Grö�e des
> Sendepuffers plus 6 sein. Der Sende- und der Empfangspuffer kann maximal 255
> Zeichen aufnehmen."
>
> Also die GröÃ?e der Variable "buffer" auf 246 erhöhen:   char buffer[246];
>
> Gruss Peter

Hallo Peter ,

vielleicht sehe ich das falsch, aber in Ullis Buch steht
"Dim buffer(80) As Byte"

Ulli ?

Es erklärt aber in meinen Augen  immernoch nicht warum das Programm auf dem
Applicationboard funktioniert, aber nicht auf dem Projectboard.

Gruss, Endress





    Antwort schreiben


Antworten:

Re: Serielle Daten in die CC schreiben (von PeterS - 12.12.2009 12:11)
    Re: Serielle Daten in die CC schreiben (von UlliS - 12.12.2009 12:42)
        Re: Serielle Daten in die CC schreiben (von Endress - 14.12.2009 12:55)