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 PeterS - 10.12.2009 17:36)
Als Antwort auf Re: Serielle Daten in die CC schreiben von UlliS - 9.12.2009 16:52

> > > > 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


    Antwort schreiben


Antworten:

Re: Serielle Daten in die CC schreiben (von Endress - 11.12.2009 22:39)
    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)