www.mikrocontroller.net

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


Autor: Michael Waiblinger (wiebel42)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.