- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 11

Thema: 2x 16bit PWM ATMega32 @16MHz

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.01.2011
    Beiträge
    192

    2x 16bit PWM ATMega32 @16MHz

    Hallo,
    ich möchte 2 Leds dimmen an einen mega32.

    Nur leider ist meine Rote LED am OCR1B ständig an.
    die grüne am OCR1A wechselt wunderbar ihre Helligkeit.

    Woran kann das liegen?

    Code:
    void init_pwm (void) 
    {   
        DDRD |= (1<<PD4); //PWM ROT
        DDRD |= (1<<PD5); //PWM Blau
    
        TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1) |(1<<COM1B1)|(1<<WGM12)|(1<<WGM13); //16 Fast PWM nicht invertiert
        TCCR1B = (1<<CS11)|(1<<CS10); //CLK F_CPU/64 
    }
    Code:
    void set_blue (uint16_t pwm)
    {
        OCR1A = pwm;
    }
    Code:
    void set_red (uint16_t pwm)
    {
        OCR1B = pwm;
    }
    danke für eure Hilfe

    Gruß deko

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Woran kann das liegen?
    Es liegt daran, dass du nicht nachgeschaut hast, welche Konfigurations-Bits in welchem Register sind.
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf ab Seite 107

    WGM12 und 13 befinden sich nicht im TCCR1A!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.01.2011
    Beiträge
    192
    Code:
    void init_pwm (void) 
    {   
        DDRD |= (1<<PD4); //PWM ROT
        DDRD |= (1<<PD5); //PWM Blau
    
        TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1); //16 Fast PWM nicht invertiert
        TCCR1B = (1<<CS11)|(1<<CS10)|(1<<WGM12)|(1<<WGM13); //CLK F_CPU/64 
    }
    so hab ich es jetzt abgeändert aber leider keine Besserung... (hatte es zwischenzeitlich auch mal so)
    nun kann ich die Leds garnicht mehr dimmen und sie sind Leuchten auch ohne das ich was an OCR1A oder OCR1B mache mit voller Leuchtstärke...

    sieht jemand noch einen Fehler?

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Du hast einen untauglichen Modus ausgewählt. Wie willst du mit OCR1A den Duty-Cycle einstellen, wenn das der TOP-Wert ist?
    MfG
    Stefan

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    das ist etwas fälschlich in dem datenblatt merk ich gerade, was du gemacht hast ist ebenfalls CTC Modus nicht Fast PWM! Er läuft bei ocr1a über und ignoriert ocr1b, versuch mal OHNE WGM10 (Mode 14 laut Tabelle) und setz dein gewünschten top-Wert mit ICR1, aber ACHTUNG, wenn dein OCR1A/B GRÖSSER als ICR1 wird, passiert garnichts!!!

    ich vermute eigentlich schon fast, dass du eigentlich eher einen festen Top-Wert brauchst und besser den mode 5,6 oder 7 wählen solltest!

    FALLS du vorhaben solltest eine RGB-Steuerung zu machen, empfehl ich dir (weil du nurnoch 8bit-Timer-PWM für grün hast) Mode 5 (WGM12 und WGM10) 8bit Fast PWM, dann lassen sich deine Timer auch gleich ansteuern
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    das ist etwas fälschlich in dem datenblatt merk ich gerade, was du gemacht hast ist ebenfalls CTC Modus nicht Fast PWM!
    Quatsch. Das ist Fast-PWM mit einem variablem TOP-Wert (also variabler Frequenz).
    MfG
    Stefan

Ähnliche Themen

  1. ATmega32 und 16MHz Quartz
    Von ElchiMtr im Forum AVR Hardwarethemen
    Antworten: 18
    Letzter Beitrag: 18.03.2011, 14:24
  2. LCD 4*20 mit ATMEGA32/16MHZ....
    Von masterx im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 10.02.2011, 21:27
  3. atmega32 + oszi 16mhz ... welche fusebits?
    Von BloodyNap im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 29.05.2007, 11:53
  4. ATmega32+16MHZ Standartquarz
    Von timo1105 im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 28.11.2006, 07:44
  5. Fusebit bei 16Mhz und Atmega32
    Von Jon im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 36
    Letzter Beitrag: 29.04.2006, 12:14

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress