-
        

Ergebnis 1 bis 5 von 5

Thema: PWM Problem AtMega64

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    13.07.2006
    Beiträge
    81

    PWM Problem AtMega64

    Anzeige

    Hallo

    Ich möchte den Timer1 beim AtMega 64 als PWM-Generator nutzen. Dazu habe ich folgendes Programm geschrieben:

    Code:
    include <avr/io.h>
    #include <avr/iom64.h>
    
    int main(void)
    {
        TCCR1A = 0xFD;	//Timer1 mit PWM Initialisieren
        TCCR1B = 0x43;  // invertierte PWM, Teiler/64
    
        OCR1AL = 0xff;
        OCR1BL = 0x80;
    
        while (1);
    }

    Aber die Pins PB5 und PB6 sind immer low. mit dem Oszilloskop kann ich nichts messen. Ist das Programm fehlerhaft?

    Danke und gruss
    panda...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hi,

    auf Ausgang müssen die Ports aber nomalerweise auch gestellt werden, sonst geht nix raus aus dem Ausgang.

    Und dann grober Fehler, bei einem 16-Bit Register müssen immer beide Teile beschrieben werden, sonst gibts Chaos,
    wichtig ist auch die Reihenfolge, oder man Spricht gleich den 16Bit-Namen an (zB. OCR1A), dann macht der Compiler das für einen das aufteilen in 2 Bytes (High- LowRegister) und die richtige Reihenfolge !

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    13.07.2006
    Beiträge
    81
    Wie konnte ich das mit dem Ausgang nur vergessen.... logisch, jetzt funktionierts. Danke!

    Aber es reicht doch, wenn ich nur die tieferen 8 Bits des Registers beschreibe, denn zu Beginn wird das Register laut Datenblatt mit 0 initialisiert.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Reicht eben nicht, egal mit was es initialisiert wird, denn der Controller will beide Bytes haben !
    Deswegen ist es auch wichtig wierum man das High- und Low-Register anspricht beim lesen und beim beschreiben !

    Nachzulesen hier:
    http://www.atmel.com/dyn/resources/p...ts/DOC1493.PDF

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    13.07.2006
    Beiträge
    81
    Ach so, beim Schreiben des Low-Register beschreibt er gleichzeitig auch das High-Register aus einem Zwischenspeicher. Alles klar, Danke!

Berechtigungen

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