Forum: Mikrocontroller und Digitale Elektronik Hilfe bei Assembler (Timer0/1/2 interrupt)


von Michael W. (wiebel42)


Angehängte Dateien:

Lesenswert?

Ich bräuchte mal etwas Hilfe bei meinem Code.
Allen verfügbaren Tutorials zum trotz renn ich in grosse Probleme wenn 
ich mehr als einen Timer einsetzen möchte, und/oder mehr als einen 
Interrupt
habe.

Also angefangen hab ich mit dem Sinus Lookup der (geteilt durch 
ACount/BCount) direkt mit Timer1, der auch die PWM steuert, abgeklappert 
wird. Soweit so gut. Als ich versuchen wollte einen weiteren Interript 
für die Tasten zu implementieren fingen dei Probleme an. Der Timer1 
Interrupt kam nicht mehr durch. Dann wollte ich erstmal eine eigene 
Timerbasis für die Lookuptable machen, um Interrupt events zu sparen 
(Vorteiler statt ACount/BCount) damit mehr Luft für die Tasten bleibt 
(später). Timer0 war der völlige Reinfall, beim aktivieren von Timer0 
ging überhaupt nichts mehr.
Also versuche ich es gerade mit Timer2 da geht was aber nicht das was es 
soll.
Timer2 soll über ein Compare Event seinen Interrupt werfen, welcher das 
Auslesen der Lookuptable voran bringt, soweit die Theorie.
Praktisch geht beim Start meine LED auf 100% an und verweilt in diser 
unglücklichen Situation solange Timer2 eben hochzählt (diese zeit kann 
ich über Vorteiler und ORC2A gut beeinflussen), dann geht er in den 
Sinus als ob es keinen Timer2 mehr geben würde, was ja eigentlich heißt 
das Timer1 immernoch weiertriggert.
Ich steh noch sehr am Anfang mit µC daher hab ich sicher irgendwas 
Grundlegendes mit dem Interruptvektor Verhunzt.
Wenn ein geworfener Interrupt nicht im Vektor steht (also kein reti) 
wird dann automatisch zum nächsten übergegagnen? Also wenn z.B. ein 
INT0 ankommt aber PCINT2 erst im Vektor steht, wird dann PCINT2 
ausgeführt?

Ich hab keine Ahnung was ich noch versuchen kann, hab schon alles 
mögliche ausprobiert.

Den Code auch nochmal als URL(mit Highlighting) 
http://nopaste.gamedev.pl/?id=655

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
Noch kein Account? Hier anmelden.