- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: Fast PWM

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    31.03.2010
    Beiträge
    33

    Fast PWM

    Anzeige

    LiFePo4 Akku selber bauen - Video
    schön guten Morgen,
    kann mir bitte jemand sagen warum hier in OCR1A wird nur 0x1FFF geschrieben egal was ich in diesem Reg schreibe. Hier ist der Code:
    danke


    .include "m88def.inc"

    .def temp1 = r17
    .equ XTAL = 3686400


    rjmp init


    init:

    ldi temp1, LOW(RAMEND) ; Stackpointer initialisieren
    out SPL, temp1
    ldi temp1, HIGH(RAMEND)
    out SPH, temp1
    ;
    ; Timer 1 einstellen
    ;
    ; Modus 14:
    ; Fast PWM, Top von ICR1
    ;
    ; WGM13 WGM12 WGM11 WGM10
    ; 1 1 1 0
    ;
    ; Timer Vorteiler: 256
    ; CS12 CS11 CS10
    ; 1 0 0
    ;
    ; Steuerung des Ausgangsport: Set at BOTTOM, Clear at match
    ; COM1A1 COM1A0
    ; 1 0
    ;
    ldi temp1, 1<<COM1A1 | 1<<WGM11
    sts TCCR1A, temp1
    ldi temp1, 1<<WGM13 | 1<<WGM12 | 1<<CS12; |1<<CS12
    sts TCCR1B, temp1
    ;
    ; den Endwert (TOP) für den Zähler setzen
    ; der Zähler zählt bis zu diesem Wert
    ;
    ldi temp1, 0x6F
    sts ICR1H, temp1
    ldi temp1, 0xFF
    sts ICR1L, temp1
    ;
    ; der Compare Wert
    ; Wenn der Zähler diesen Wert erreicht, wird mit
    ; obiger Konfiguration der OC1A Ausgang abgeschaltet
    ; Sobald der Zähler wieder bei 0 startet, wird der
    ; Ausgang wieder auf 1 gesetzt
    ;
    ldi temp1, 0x3F
    sts OCR1AH, temp1
    ldi temp1, 0xFF
    sts OCR1AL, temp1
    [/color]
    ; Den Pin OC1A zu guter letzt noch auf Ausgang schalten
    ldi temp1, 0x02
    out DDRB, temp1

    main:
    rjmp main


  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Hi,

    beim Beschreiben von 16-bit-Registern muss der Controller High- und Low-Byte gleichzeitig in das Register schreiben. Dazu dürfen die Werte aber nicht in der selben Variable abgelegt werden. Zudem sollten die Interrupts während einem 16-Bit-Zugriff deaktiviert werden.

    Les' Dir mal das Kapitel "Accessing 16-bit Registers" im Datenblatt durch.

    Gruß,
    askazo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen