- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 13

Thema: PWM mit ATmega644

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.698
    .. ich stehe auf dem Schlauch .. F_CPU = 20 MHz .. Timer 1: PWM Mode 14 (Fast PWM, TOP ICR1, Prescaler 8 ) ..
    Hmmm, zuerst mal nur so: die Nullen werden üblicherweise nicht geschrieben; zum Start sind die Register genullt und meist schaltet man zur Laufzeit nicht dauernd um . . . WENN Du etwas explizit löschen möchtest dann ist dies üblich:
    Code:
      TCCR1A &= ~(1<<COM1A1)|(1<<COM1B1);   // Clear/set OC1A/OC1B on Cmp Match   S132
    So. Deine Timer1-initialisierung, modifiziert (und jedenfalls für MICH übersichtlicher und informativer - NUR Befehle machen selbst Profis nicht oft)
    Code:
         TCCR1A |=  (1<<COM1A1)|(1<<COM1B1);  // Clear/set OC1A/OC1B on Cmp Match
         TCCR1A |=  (1<<WGM11);               // Mode Fast PWM, TOP ICRn, 1. Teil
         TCCR1B |=  (1<<WGM13)|(1<<WGM12);    // Mode Fast PWM, TOP ICRn, 2. Teil
         TCCR1B |=  (1<<CS11);                // clkI/O/8 (From prescaler)
                                              //   => 20e6/8 = 2 500 000
         TCCR1C  =     0;                     // Wo in Deinem Code wird denn
                                              //   IRGENDEIN Bit auf 1 gesetzt ??
                                              // Würde ich nicht coden
         ICR1    = 249;               // 10kHz (F_CPU / (Prescaler * (ICR1 + 1)))
                                      // Die 10k sind ein netter Wunsch aber ..
                                      // .. das Timing Diagramm auf S 121 des
                                      //    ATmega164A-PA_bis_1284-P_8272G_01-15
                                      //    erklärt, dass es doch 20 kHz sind.
                                      //    Daher der Name "FAST"-PWM
    Anmerkung: Fehler vorbehalten, ich habs ja nicht getestet )

    Bei mir wird z.B. so initialisiert
    Code:
    // =====        s. Dokument ATmega164A-PA_bis_1284-P_8272G_01-15
    // ============================================================================= =
    // ==  PWM-Routinen zur Motoransteuerung
     void TC1PWM_init(void)         //Init Timer/Counter1 f Erzeugung des PWM-Signals
     {                              //
      TCCR1A &= ~(1<<COM1A1)|(1<<COM1B1);   // Clear/set OC1A/OC1B on Cmp Match   S132
                    // DISABLED OC1A/OC1B bzw Port PB1/B2, ERST mit Motorstart enablen
      TCCR1A |=  (1<<WGM10);                // Dazu noch 
      TCCR1B |=  (1<<WGM12);                // Fast PWM, 8 Bit TOP=0xFF=dez255     133
      TCCR1B |=  (1<<CS11);         // Prescaler ist clk/8 =>  9,8 kHz             135
            // theoretisch: 20 MHz / 8 / 255  =>  9,803922 kHz, DMM-Messung 9,78 kHz
      TIMSK1 &= ~(1<<OCIE1A)|(1<<OCIE1B);   // T/C1 Oput CmpA+B Match intrrpt dsabld
      TIMSK1 &= ~(1<<TOIE1);                // T/C1 Ovrflw intrrpt dsabled       ~S137
      OCPWM1    = 0;                        // PWM auf Null setzen
      OCPWM4    = 0;                        // PWM auf Null setzen
      isum12    =  isum34    = 0;
      ie_mot12  =  ie_mot34  = 0;
      ie_alt12  =  ie_alt34  = 0;
     }              // Ende void TC1PWM_init(void)
    // ============================================================================= =
    PS: Kleine Erkläuterung zum Nullen eines Bits
    Code:
      TCCR1A &= ~(1<<COM1A1);
      TCCR1A      ...    Ziel
      &           ...    UND-Operator
      &=          ...    das UND als Zuweisungsoperator,
                         => weist das Ziel als Parameter zu
      ~           ...    der unäre Operator bildet das
                         Bit-Komplement => "1" (in 1<<COM1A1)
                         wird zur "0"
    Geändert von oberallgeier (02.09.2015 um 09:32 Uhr) Grund: PS: Kleine Erläuterung
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Signalabtastung mit ATMEGA644
    Von blackflame2025 im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 01.11.2011, 07:43
  2. Atmega644 RC5
    Von dehnelement im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 13
    Letzter Beitrag: 20.03.2010, 10:52
  3. FuseBits am Atmega644
    Von AVR_anfänger im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 02.09.2008, 11:49
  4. atmega644 und bascom -- ADC_REFMODEL
    Von kolisson im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 27
    Letzter Beitrag: 13.03.2008, 23:27
  5. ATMEGA644 Programmieren
    Von Elektronik303 im Forum AVR Hardwarethemen
    Antworten: 49
    Letzter Beitrag: 30.03.2007, 18:36

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress