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

Thema: Pwm mit Timer0

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177

    Pwm mit Timer0

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Ich möchte mit Timer0 ein Pwm Signal erzeugen, aber das scheint nicht hinzuhauen.
    Nutzen tue ich folgende beiden Zeilen:

    Config Timer0 = Pwm , Prescale = 1
    Enable Interrupts
    Enable Timer0
    Ocr0 = 127

    Scheint aber nicht zu gehen, der Pin B.0 bleibt immer auf Masse. Ich nutze einen Atmega162.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Im Datenblatt steht folgender interessanter Hinweis:

    "However, note that the Data Direction Register (DDR) bit corresponding to the OC0 pin must be set in order to enable the output driver"

    Probier´s also mal mit DDRB.0=1.

    Ich habe aber auch schon manchmal mysteriöse Dinge im Zusammenhang mit Bascom und PWM erlebt - und bin eigentlich immer zum Ziel gekommen, wenn ich die (oder das) betreffende Register direkt beschrieben habe. Ist auch gar nicht sooo schwer zu verstehen!

    Gutes Gelingen,

    Daniel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    39
    Beiträge
    332
    Das ist richtig, da muss noch Port B0 als Ausgang konfiguriert werden

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    OK, habe jetzt:

    Config Portb.0 = Output
    Config Timer0 = Pwm , Prescale = 1
    Enable Interrupts
    Enable Timer0
    Ocr0 = 127

    Aber gehen tuts immer noch nicht

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Ich weiß nicht, ob der Timer automatisch anläuft, wenn man ihn als PWM konfiguriert. Versuch´s doch mal mit der Zeile

    Start Timer0

    statt

    enable timer0
    enable interrupts

    (den Interrupt brauchst Du für PWM nicht).

    Ansonsten kannst du das Timer/Counter-Control-Register TCCR0 auch direkt setzen. Für phasenkorrektes PWM mit einem Prescaler von 1 würde das etwa so gehen:

    TCCR0 = &B01100001

    (anstelle des Config timer0...)

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Geht leider beides nicht, allerdings funktioniert in folgendem Code:


    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Timer0 = Pwm , Prescale = 1
    Config Timer2 = Pwm , Compare Pwm = Clear Up , Prescale = 1
    Enable Interrupts
    Ocr0 = 127
    Ocr2 = 127

    Der Timer0 zwar nicht, dafür aber der Timer2, so das auch wirklich 2,5V messbar sind. Nehme ich aber das "Compare Pwm = Clear Up" bei Config Timer2 raus, funktioniert auch Timer2 nicht.
    Da dachte ich mir, füge ich den Abschnitt doch auch bei Config Timer0 ein, geht aber nicht, wird nicht anerkannt.

    Könnte es sein das im Regfile für den 162 sich vieleicht ein kleiner Fehler eingeschlichen hat?

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Manche Timer sind bei Bascom schwierig anzusteuern, weil abweichende Registernamen benutzt werden.
    Gerne haben die auch einfach mal nen Fehler in der .def
    Such dir im Datenblatt die entsprechenden Registernamen raus und setz die manuell. Das geht meist.
    Um die PWM zu setzen muss man je nach Register dann halt auch verschiedene Namen nutzen.
    Bei 16-Bit Timern gibts auch immer noch High und Low-Byte.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Hab jetzt die entsprechenden Register in der Def mit den im Datenblatt abgeglichen, konnte leider keine Fehler/Abweichungen finden.

    Hat noch jemand eine Idee?

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    07.03.2008
    Ort
    Bremen
    Alter
    50
    Beiträge
    63
    Hallo,
    Zeig doch bitte mal deinen ganzen CODE.
    Schaue am WE mal wie ich es gemacht habe .
    Habe es bei einem Mega8 am laufen

Berechtigungen

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

Solar Speicher und Akkus Tests