Timer 1 bei ATMega 168

OP (Firma: privat) #551183
Lesenswert?
• ▲
▼
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
OP (Firma: privat) #551211
Lesenswert?
• ▲
▼
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
Gast #551239
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren