www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik Timer 1 bei ATMega 168

Autor: Martin Frese (Firma: privat) (machtin)
Datum:

Hallo zusammen,

wenn ich folgendes Programm im AVR-Studio im Debugger laufen lassen
verhält sich der Timer1 ganz und gar nicht wie in der Doku beschrieben.
(Fehler in der Doku, Fehler im Debugger oder bin ich einfach zu blöd die
Doku zu lesen und zu interpretieren ???)

Ich möchte das der Timer1 beim Starten den OC1A-Pin (PD5) auf 1 zieht,
dann beim Erreichen von OCR1A PD5 auf 0 zieht und
dann beim Erreichen von ICR1 wieder auf 0 springt.

Das sollte (wenn ich die Doku richtig lese) dieses Prg. machen:

.include "m168def.inc"

.def temp = r17

ldi      temp, LOW(RAMEND)     ; Stackpointer initialisieren
out      SPL, temp
ldi      temp, HIGH(RAMEND)
out      SPH, temp

; den Endwert (TOP) für den Zähler setzen
; der Zähler zählt bis zu diesem Wert
; (Natürlich braucht man bei 0x003F keinen 16-bit Timer, aber zum
debugen einfach schneller..:-)
;
ldi      temp, 0x00
sts     ICR1H, temp
ldi      temp, 0x3F
sts     ICR1L, temp

    ;
    ; der Compare Wert
ldi      temp, 0x00
sts     OCR1AH, temp
ldi      temp, 0x1F
sts     OCR1AL, temp

; Den Pin OC1A (PD7) auf Ausgang schalten

ldi      temp, 1<<PD5
out    ddrd,  temp

    ;
    ; Timer 1 einstellen
    ;
    ; Modus 14:
    ;    Fast PWM, ICR1 -> TOP
    ;
    ;     WGM13    WGM12   WGM11    WGM10
    ;      1        1       1        0
    ;
    ;    Timer Vorteiler: 8
    ;     CS12     CS11    CS10
    ;      0        1       0
    ;
    ; Steuerung des Ausgangsport: Set at BOTTOM, Clear at match
    ;     COM1A1   COM1A0
    ;      1        0
    ;

    ldi      temp, 1<<COM1A1 | 1<<WGM11
    sts      TCCR1A, temp

    ldi      temp, 1<<WGM13 | 1<<WGM12 | 1<<CS11
    sts      TCCR1B, temp

    ;


main:
    rjmp     main



Kann mir da jemand aufs Pferd helfen was ich falsch mache ??

Danke,

Martin
Autor: johnny.m (Gast)
Datum:

> ; Den Pin OC1A (PD7) auf Ausgang schalten
> ldi      temp, 1<<PD5
Das ist erstens widersprüchlich und zweitens ist lt. meinem Datenblatt
der OC1A an PORTB.1 und nicht an PORTD.5 oder 7...
Autor: Martin Frese (Firma: privat) (machtin)
Datum:

johnny.m wrote:
>> ; Den Pin OC1A (PD7) auf Ausgang schalten
>> ldi      temp, 1<<PD5
> Das ist erstens widersprüchlich und zweitens ist lt. meinem Datenblatt
> der OC1A an PORTB.1 und nicht an PORTD.5 oder 7...

hast natürlich recht....
(hab mich im Komentar verschrieben und mich im Programm mit dem ATMEGA16
Datenblatt vertudelt...*schäm*)

Aber nichts desto trotz.....

Kann der Simulator im AV-Studio nun nicht wirklich einen Timer im
PWM-Modus
simulieren oder hab ich bei der Parametrierung des Timers was falsch
gemacht ?

Gruss

Martin
Autor: spess53 (Gast)
Datum:

Hi

AVR Simulator Help : Known Issues

Timer/Counters
16-bit Timer/Counters on all devices have several problems with PWM,
prescaler and output compare. Output compare registers are not buffered
properly.

MfG Spess

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net