- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 2 von 2

Thema: Fast PWM

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

    Fast PWM

    Anzeige

    Praxistest und DIY Projekte
    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
    48
    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
  •  

Solar Speicher und Akkus Tests