Hallo Zusammen, Ich habe ein kleines Problem mit folgendem C-Code. Das Problem tritt sowohl bei einem PIC18F2550 (den ich hier bei mir habe) aber auch bei einem ATMEGA32 auf. Problem: Das ganze funktioniert so halb. Wenn ich den µC starte sendet er alles ganz normal nacheinander. Wenn ich ihn aber mit einem Reset irgendwo zwischen drin stoppe, z.B. bei der Zahl 14, und ich den Reset Knopf wieder los lasse beginnt er nicht bei der Zahl 0 sonder bei der Zahl 15. Danach sendet er genau 7 Stellen, also 15,...,21 und daraufhin folgt dann wieder 150,0,1,...,31 Die Routine "RS_232_Data" wird aus einem anderen Programmteil immer wieder aufgerufen. - Baud = 9600 - Interner Oszillator ist mit 8 Mhz getaktet Hat das schon mal jemand von euch gehabt oder eine Erklärung dafür?
1 | void RS_232_Data (void) |
2 | {
|
3 | unsigned char x; |
4 | unsigned char i; |
5 | unsigned char Signal [31] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; |
6 | x = 31; //Anzahl der zu senden Bytes |
7 | i = 0; |
8 | while (PIR1bits.TXIF == 0); //Bereit zum senden eines neuen Bytes? |
9 | TXREG = 150; //sende Startbyte |
10 | while (x>0) |
11 | {
|
12 | while (PIR1bits.TXIF == 0);//Bereit zum senden eines neuen Bytes? |
13 | TXREG = Signal[i]; //alle Bytes der reihe nach Senden |
14 | x=x-1; |
15 | i++; |
16 | }
|
17 | }
|
Ich hoffe mir kann jemand weiterhelfen :) Gruß Florian