Um die Fehlerursachen zu finden, empfiehlt sich folgendes, generisches Vorgehen:
1.2 Versuchen Sie genau zu verstehen, unter welchen Umständen der fehlerhafte Zustand auftritt.
Wie ist dieser zu reproduzieren? Ohne Reproduzierbarkeit ist ein Fehler nicht auffindbar!
Beim Verständnisaufbau hilft manchmal weniger Theorie und mehr ausprobieren.
Wichtig: Schreiben Sie auf, was funktioniert und was nicht (am besten mit Ablegen des verwendeten Codes). Dann lässt sich auch nach einigen Tests nachvollziehen, was womit getan wurde bzw. nicht funktionierte.
Und: Ein Fehler der auf mysteriöse Weise wieder verschwindet, kommt genauso wieder (i.d.R. dann, wenn keine Zeit mehr da ist). Ein Fehler der nicht korrigiert wurde, wurde nicht korrigiert..
Lernen Sie besser_suchen_mit_google
Falls es jemanden gab, so war die Funktion an anderer Stelle bereits lauffähig --> Gehe zu 2. .
D.h. im Extremfall das Flashen mit einer leeren main Funktion (Geht das Flashen?) oder mit einer, welche nur einen PIN / LED aktiviert.
Falls es schon einen Teil des Programms gab, so sollte dieser wieder hergestellt werden. Die Änderungen sollten dann im folgenden Schritt Zeile für Zeile (bzw. Funktionsblock für Funktionsblock) eingefügt und auf der Hardware auf getestet werden.
Häufig ist es von Vorteil eine Ausgabemöglichkeit zu schaffen.Zur Ausgabe bietet sich z.B. ein unbenutzter PIN oder - falls schon vorhanden und in Software ansprechbar - ein Display an.
Wichtig: Prüfen Sie, ob der Fehler noch auftritt. Ist der Fehler auch bei Variation der Eingaben weg?
Projekt » (ProjektName) Eigenschaften » Toolchain » AVR/GNU C Compiler » Symbols
#define TWSR TWSR0
usw. Tools » Device Programming
finde ich im Tool nur „Simulation“, aber kein STK500. Versuchen Sie zunächst über Tools » Add tagret… STK500 und den entsprechenden Serial Port zu wählen. Falls Ihr Rechner mehrere USB Ausgänge hat, müssen Sie diese (COM1…COMx) beim Programmieren ausprobieren.