> Doch natürlich, darum gehts ja. Ich sende Werte, die ich später
> verwenden will.
Also du siehst definitiv mehrere LEDS (nicht nur PD0) an PORTD
zappeln, wenn du einen Haufen Zeichen vom PC zum AVR schickst. Nur der
AVR schickt nicht die Zeichen als Echo zurück, sondern auf dem PC
bekommst du immer nur 0x00 zurückgeliefert. Richtig von mir verstanden?
Du vermutest die auf dem PC empfangene 0x00 kommt daher, dass nach jedem
Zeichen, dass der AVR empfängt, beim Verlassen der ISR ein RESET
passiert und so beim nächsten Eintritt in die while-Schleife der
Defaultwert von temp (0x00, schonmal einen anderen Wert probiert?)
gesendet wird.
> Solche ähnlichen Probleme gabs doch schon öfters, dass die ISR immer an
> den Anfang der Interrupt-Vector-Tabelle springt. Wieso macht die das?
> Die erste Adresse da ist ja RESET.
Dieser Spekulation mag ich nicht folgen. Kannst du das mit dem RESET
belegen - blitzt PORTD typisch mit PD0 einmal mit 0.5s Dauer auf?
Ich nehme eher an, dass kein RESET passiert und eine andere
Fehlerursache vorliegt, z.B. eine Nichtbeachtung des notwendigen
volatile
Um auszuschliessen, dass du mit einer alten Version deiner Source
arbeitest (nämlich einer ohne volatile), würde ich mal vor dem
Flashen/Ausprobieren die Source speichern, alle automatisch erzeugten
Dateien löschen (make clean) und ein Rebuild All durchführen.
Und kannst du mal das frisch erzeugte Assemblerlisting (*.LSS) zeigen?
In dem kann man nachforschen, ob der Compiler temp korrekt als
volatile behandelt und entsprechenden Code erzeugt. Bitte gib auch an,
welche Version der Toolchain du benutzt. Eventuell braucht man zum
Nachvollziehen des Problems auch das Makefile oder die Projektdatei.
BTW. deine Debugausgabe ist IMHO zu leicht zu verwechseln mit der
Debugausgabe PORTD = temp aus der ISR bei jedem empfangenen Zeichen. Ich
würde beim RESET/Init vor dem While was anderes programmieren, öfter
oder charakteristischer oder an einem anderen Port blinken.
ADD: Und checke auch mal die Einstellung der Fuses. Nicht dass du den
watchdog scharf geschaltet hast...