Re: Probleme bei Ausgabe (Msg..) Kategorie: Programmierung C (von PeterS - 1.06.2010 10:08) | |
Als Antwort auf Re: Probleme bei Ausgabe (Msg..) von Josef - 30.05.2010 20:23
| |
> > > Hallo zusammen, > > > > > > ich habe beim Ausgeben mit Msg ..... Probleme. > > > Bei dem unten angefügten Testprogramm werden die ersten Zeilen abgeschnitten. > > > Wenn ich das prg in der Schliefe laufen lasse funktionierts ab dem zweiten Durchlauf. > > > > > > float val[1]; > > > word EEPROM_Adr; // In dieser Variablen werden die EEPROM > > > // Adressen gespeichert. > > > byte EEPROM_Data; // Deklaration von Variablen > > > int n; > > > > > > void schreiben (byte in[]) > > > { > > > for (n=0; n<4; n++) > > > { > > > // Wert zum Schreiben in das EEPROM wird festgelegt. > > > EEPROM_Data=in[n]; > > > EEPROM_Write(EEPROM_Adr, EEPROM_Data); > > > Ausgabe(EEPROM_Adr, EEPROM_Data); > > > Msg_WriteText("in_write[n]"); Msg_WriteHex(in[n]); Msg_WriteChar(13); > > > EEPROM_Adr++; > > > } > > > } > > > void lesen (byte in[]) > > > { > > > EEPROM_Adr=0; // Wertzuweisung der Variablen EEPROM_Adr. > > > // Msg_WriteChar(13); // Ausgabe: Wagenrücklauf > > > > > > for (n=0; n<4; n++) > > > { > > > // Der Wert der EEPROM_Adr wird aus dem EEPROM gelesen und in der > > > EEPROM_Data=EEPROM_Read(EEPROM_Adr); > > > in[n]=EEPROM_Data; > > > Ausgabe(EEPROM_Adr, EEPROM_Data); > > > Msg_WriteText("in_read[n]"); Msg_WriteHex(in[n]); Msg_WriteChar(13); > > > EEPROM_Adr++; > > > } > > > } > > > void Ausgabe(word adr, byte data) > > > { > > > Msg_WriteHex(adr); // Ausgabe der Adresse > > > Msg_WriteChar(':'); // Ausgabe: : > > > Msg_WriteHex(data); // Ausgabe des Adressinhaltes > > > Msg_WriteChar(0x20); // Ausgabe: Leerzeichen > > > } > > > > > > void main(void) > > > { > > > int i; > > > Msg_WriteText("Test EEPROM"); Msg_WriteChar(13); > > > // for (i=0; i<3; i++) > > > // { > > > EEPROM_Adr=0; > > > // Msg_WriteText("Schleife: "); Msg_WriteInt(i); Msg_WriteChar(13); > > > val[0]=9654.000; > > > Msg_WriteText("VAL1: "); Msg_WriteFloat(val[0]); Msg_WriteChar(13); > > > Msg_WriteText("vor schreiben "); Msg_WriteChar(13); > > > schreiben(val); > > > val[0]=0.0; > > > Msg_WriteText("VAL2: "); Msg_WriteFloat(val[0]); Msg_WriteChar(13); > > > Msg_WriteText("vor lesen "); Msg_WriteChar(13); > > > lesen(val); > > > Msg_WriteFloat(val[0]); Msg_WriteChar(13); > > > // } > > > } > > > > > > AUSGABEFENSTER: > > > Interpreter gestartet - 4kb RAM > > > 016 in_write[n]0016 > > > 0003:0046 in_write[n]0046 > > > VAL2: 0.00000 > > > vor lesen > > > 0000:0000 in_read[n]0000 > > > 0001:00D8 in_read[n]00D8 > > > 0002:0016 in_read[n]0016 > > > 0003:0046 in_read[n]0046 > > > 9654.00000 > > > > > > Zeit: 60ms > > > Interpreter gestoppt > > > > > > Z.B.: Test EEPROM wird nicht geschrieben. > > > Vielleicht hatte schon jemand dises Problem > > > Danke > > Hallo Josef, > > > > ich kenne das Problem. > > manchmal werden Ausgaben verschluckt. > > > > Benutze mal ein delay vor der ersten Ausgabe.... > > > > > > Grü�e Jörg > Danke Jörg > funktioniert Die Msg_xxx() Funktionen haben einen Puffer, der überlaufen kann. Bei einer USB Verbindung ist das unkritisch, aber bei einer seriellen Bootloader Verbindung kann man den Puffer überlasten. Gruss Peter Gruss Peter | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum