www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer 1 bei ATMega 168


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

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

Autor: johnny.m (Gast)
Datum:

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

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

Autor: spess53 (Gast)
Datum:

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

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.