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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum