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?
ohne jetzt genauer ins Datenblatt geschaut zu haben:
ich vermute mal, dass beim Reset der Transmit Buffer nicht gelöscht
wird, da also noch 7 Bytes auf Ausgabe warten und dann auch brav
ausgegeben werden.
Da wird noch nach dem RESET irgendetwas nicht sauber initialisiert.
Nach Power On stimmt es, nach Reset nicht, ==> also hast du irgendwo
eine Initialisierung im Code vergessen.
Würde mal drauf tippen das der Ram nach dem Reset nicht so sauer ist wie
du es erwartest.
Insbesondere den Stack solltest du dir mal ansehen.