by js222 » Mon Mar 23, 2009 12:00 am
Hallo Amper,
Deine Beschreibung wie Du den µC wieder reaktiviert hast deutet eher auf ein Problem mit der Software, Verkabelung oder Betriebsspannung hin.
Oder auch recht wahrscheinlich:
Beim R8C gab es auch solche Seltsamkeiten, insbesondere das man das Board (vermutlich nach einmaliger Eingabe einer falschen ID z.B. 00h anstatt ffh oder umgekehrt) eine gewisse Zeit spannungslos machen musste um einen neuen Versuch zu wagen.
Das würde für die ID-Protction auch sinnvoll sein, sonst könnte man ja automatisiert den ID-Raum durchnudeln und so an das Programm kommen. Die ID soll ja hauptsächlich das Auslesen verhindern, wirkt aber auch für Lösch- und Schreiboperationen.
Ich hab mir die sect100 mal angeschaut, das sieht so schon OK aus.
Schau aber auch mal zur Sicherheit in die ncrt0.a30,
dort findest Du die Zuweisung zu "VECTOR_ADR", der Wert der da steht ist Interessant.
Hintergrund:
Deine variable Vektortabelle (da wo Du ".glb_ISR_TimerA4" und ".lword _ISR_TimerA4" eingetragen hast) hat 256 Einträge mit jeweils einer Adresse (4Byte), ist also 1024 Byte lang. Ab Adresse 0xFFFFFFDCh beginnt die fixe Vektortabelle und in dieser
liegen nicht nur Interruptvektoren sondern auch die ID.
Wenn nun "VECTOR_ADR" genau auf eine 1024 Byte niedrigere Adresse zeigt und die Vektotabelle genau 256 Einträge hat ist alles OK. Falls aber "VECTOR_ADR" zu hoch ist oder die Tabelle zu lang, könnte ich mir vorstellen das am Ende die ID ganz oder teilweise mit irgendeiner Einsprungadresse überschrieben wird.
Das kann leicht passieren durch hinzukopieren von Zeilen aus anderen Programmen und vergessen eine entsprechende Anzahl von Zeilen herauszukommentieren
oder zu löschen. Vorsicht! Man muss unterscheiden zwischen den Zeilen die mit .glb beginnen und denen die mit .lword beginnen, letztere sollten die Zahl von 256 nicht überschreiten. glb-Zeilen dürfen wohl zusätzliche drin sein.
Aber wie schon geschrieben, sehr wahrscheinlich ist dieses Scenario nicht der Fall gewesen, sonst hättest Du
das Teil wohl nicht so "einfach" wieder reaktiviert bekommen.
Jörg.