www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 bei Atmega8 (KEIN OVERFLOW)


Autor: Uprock M. (uprock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

mein Problemm liegt daran, dass mit dem code kein interrupt durch 
overflow
kommt. Ich verwende Timer1, mode 14, ich bekomme aber kein TOV1 flag, 
kein overflow. Was koennte hier falsch sein?





.include "m8def.inc"

.org 0x000
         rjmp init

.org OC1Aaddr                   ; Output Compare2 Interrupt Vector 
Address
           rjmp comparetimer
.org OVF1addr                   ; Overflow2 Interrupt Vector Address
            rjmp timeroverflow
...
...
init:

      ldi r16, (0<<WGM10)|(1<<WGM11)
      out TCCR1A, r16

      ldi r16, (1<<WGM12)|(1<<WGM13)|(1<<CS10)
      out TCCR1B, r16


      ldi r16, (1<<OCIE1A)|(1<<TOIE1)
      out TIMSK, r16

      ldi r16,100
      out ICR1L, r16

      ldi r16,50
      out OCR1AL, r16

      sei
...
...

Autor: Andreas W. (geier99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor der Freigabe der ISR solltest Du die Interruptflags löschen.:

z.B.:

ldi r16, (1<<OCF1A) | (1<<TOIE1)
sts (TIFR+0x20),r16


Gruss Andi

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, dass du im Modus 14 keinen Overflow Interrupt bekommst.
In diesem Modus fungiert das ICR1 Register als TOP Wert. Laut Doku zum 
ICF1 Interrupt Flag, wird in so einem Fall ein Input Capture Interrupt 
ausgelöst.
Du könntest dich mal an diesen Interrupt hängen.


Wenn deine Beobachtung auf Simulator-Läufen beruht, bedenke auch, dass 
der Simulator gerade in Bereich Timer/PWM so seine Fehler hat.

Autor: Uprock M. (uprock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn deine Beobachtung auf Simulator-Läufen beruht, bedenke auch, dass
> der Simulator gerade in Bereich Timer/PWM so seine Fehler hat.

Das koennte mich beruhigen, in Deutschland habe ich das Programm 
geschrieben, es hat vollkommen funktioniert , PWM habe ich mit dem Osci 
beobachtet und mit dem Simulator hat es auch geklappt. Ich habe es
aber vergessen auf stick zu kopieren , so musste ich in der Ukraine 
wieder das programm schreiben und nun hat mir meine Schwester 
funktionierendes Programm aus Deutschland per Mail geschikt und hier mit 
dem Simulator bekomme ich kein Interrupt, sind es moegliche Simulator 
Fehler???

Autor: Herr Mueller (herrmueller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.