www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bei FastPwm in den Timer1 Overflow


Autor: Stefan V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag.

Probiere jetzt schon einige Zeit, mit dem Mega 8 mit P
FastPWM Mode 14, das er bei Top, also bei ICR1 in den TimerOverflow 
springt, damit ich da Register verändern kann.  Ist das überhaupt 
möglich?

Programmiere in Assembler mit dem AVRStudio.

Da das AVRStudio ja den Mode 14 nicht korrekt anzeigt, (Zeigt ja 10 Bit 
PWM an) kann man das irgendwie garnicht testen, ob es funktioniert.

Kann mir da jemand weiterhelfen?

Dankeschön:-)

Autor: Yaroslav (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

der overflow-Interrupt wird nur ausgelöst, wenn der Timer überläuft 
(überlaufen heißt, dass der maximal mögliche Wert erreicht wird). In 
deinem Fall passiert das nicht, weil der maximale Wert nicht erreicht 
wirrd, denn der Timer läuft nur bis zum Wert in ICR1.
Der interrupt, den du hier aber beim "pseudo-überlaufen" benzutzen 
kannst ist der Input-capture intterupt, der in deinem Fall ausgelöst 
wird, wenn der Timer-Wert vom Wert in ICR1 zum Wert 0x0000 wechselt.

Gruß, Yaro

Autor: Stefan V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also setze ich einfa TICIE1 auf 1 und dann springt er bei bottom auf 
Timer1 Capt?

Passt das so?

Das Studio zeigt das ja leider nicht richtig an.

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yaroslav schrieb:
> der overflow-Interrupt wird nur ausgelöst, wenn der Timer überläuft
> (überlaufen heißt, dass der maximal mögliche Wert erreicht wird). In
> deinem Fall passiert das nicht, weil der maximale Wert nicht erreicht
> wirrd, denn der Timer läuft nur bis zum Wert in ICR1.

Falsch!
Manual (FastPWM Timer1):
"The Timer/Counter Overflow Flag (TOV1) is set each time the counter 
reaches TOP. In addition the OCF1A or ICF1 Flag is set at the same 
timer clock cycle as TOV1 is set when either OCR1A or ICR1 is used for 
defining the TOP value. If one of the interrupts are enabled, the 
interrupt handler routine can be used for updating the TOP and compare 
values."

Wenn AVR Studio den 14er Mode nicht korrekt anzeigt, dann wird da auch 
der Fehler liegen.

Autor: Stefan V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich das Programm jetzt so:

.include"m8def.inc"

.def  temp1  =  r16
.def  temp2  =  r17


.equ  timer  =  20000
.equ  servo  =  1500

rjmp  init
timer1_ovf:  reti



init:
    ldi    temp1,  low(ramend)
    out    spl,  temp1

    ldi    temp1,  high(ramend)
    out    sph,  temp1


    ldi     temp1,   1<<com1a1 | 1<<wgm11
      out     tccr1a, temp1

      ldi     temp1,   1<<wgm13 | 1<<wgm12 | 1<<cs10
      out     tccr1b, temp1

    ldi     temp1,   high(timer)
      out     icr1h,   temp1
      ldi     temp1,   low(timer)
      out     icr1l,   temp1

    ldi     temp1,   high(servo)
      out     ocr1ah, temp1
      ldi     temp1,   low(servo)
      out     ocr1al, temp1

    ldi     temp1,   0x02
      out     ddrb,   temp1

    ldi    temp1,  0b00100100
    out    timsk,  temp1
    sei


main:
    rjmp  main



funktioniert aber leider nicht

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab schon länger nichts mehr mit Assembler gemacht aber
1) Sicher dass die ISR Vektor Tabelle stimmt? Habe da ein *2 in 
Erinnerung wegen der Speichereinteilung bei AVRs.
2) Du aktivierst den Timer 1 Input Capture und hast keine ISR dazu. 
(warum schreibst du beim TIMSK nicht mehr übersichtlich mit shiften?)
3) Sicher, dass TCCR1A, usw nicht groß geschrieben gehört? Habe damals 
einen anderen anderen compiler verwendet, da waren die defines wie 
üblich alle groß geschrieben.
4) Definiere funktionniert nicht.

Autor: Stefan V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die
Infos. Aber kann
man jetzt irgendeinen Fehler entdecken?

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.