Hallo, mein atmega 162 springt immer ans ende der interrupt vektortabelle wenn der timer0 überläuft. Ich habe keine komischen Fuses gesetzt nur externe Taktquelle. Naja jedenfalls springt der avr im studio4 immer falsch. .cseg .org $0000 jmp RESET ;reset entry vector reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti jmp TIMER jmp TIMER reti reti reti reti reti reti reti reti reti reti für infos wär ich dankbar Florian
in der tabelle müssen entweder reti/nop sequenzen oder entsprechende .org direktiven verwendet werden, da beim mega162 die tabelleneinträge 2 worte lang sind.
reti ist ein Ein-Wort-Befehl. Die Interrupt-Vektoren beim Mega162 sind aber 2 Wort breit. Entweder vor jedes reti ein nop oder ein jmp RESET o.ä.
> Entweder vor jedes reti ein nop...
Ich würd's dahinter machen. Dann werden die Interrupts, die eigentlich
gar nicht auftreten dürften, etwas schneller ignoriert ;-)
Mein Vorschlag: Schreibe die ein "Default Int Unterprogramm" - DEFINT (was 'n Name) in dem der reti Befehl steht. Dann alle reti's in deiner Tabelle mit "jmp DEFINT" ersetzen. MFG Kai
Am besten das Beispiel aus dem Datenblatt (beim Mega162 auf S. 60) übernehmen und, wie Kai schon sagte, bei jedem nicht benutzten Interrupt-Vektor einen Sprung in eine Standard-Ignorierungs-Routine (also DEFINT oder so) setzen. @Rolf: Danke für den Tip;-) Jetzt weiß ich endlich, warum mein µC beim Ignorieren immer so lahmt...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.