- LiFePO4 Speicher Test         
Ergebnis 1 bis 2 von 2

Thema: Atmega32u4 Timer 3 Probleme; PWM Probleme

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2011
    Beiträge
    15

    Unglücklich Atmega32u4 Timer 3 Probleme; PWM Probleme

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hey Leute,


    Ich hab ein Problem mit PWM Ausgängen, genauer gesagt beim AtMega32u4.
    Ich nutze den Timer1 als 16-bit Timer um 3 PWM Ausgänge anzusprechen.
    Das funktioniert alles!
    Nur wenn ich den Timer3 exakt gleich konfiguriere, und den einzigen PWM
    Ausgang der bei diesem Timer verfügbar ist, verbinde, dann wird dort
    offenbar ein anderes Signal erzeugt.
    Ich habe leider kein Oszi zur Verfügung, ob zu messen ob und falls ja,
    welches Signal anliegt.

    Hier mal die Codeausschnitte die Betroffen sind (ist Teil von meinem
    Quadrocopter, ich portier das ganze von Arduino zu AVR GCC ohne die
    Arduino Librarys)

    Initialisierung
    Code:
    #define MFRONT_L COM1A1 // PB5
    #define MFRONT_R COM1B1 // PB6
    #define MBACK_L  COM1C1 // PB7
    #define MBACK_R  COM3A1 // PC6 - Ich geh davon aus, dass hier kein Fehler ist
    
    /* ................................. */
    
    // Set motor pins as output
    DDRB |= ( (1<<PB5) | (1<<PB6) | (1<<PB7) );
    
    DDRC |= (1<<PC6); // Hier schon der Fehler?
       
    /*Setup Timer 1 - Das funktioniert einwandfrei*/
    TCCR1A |= (1<<WGM11); // phase correct mode & no prescaler
    TCCR1A &= ~(1<<WGM10);
    TCCR1B &= ~(1<<WGM12) &  ~(1<<CS11) & ~(1<<CS12);
    TCCR1B |= (1<<WGM13) | (1<<CS10);
    ICR1   |= 0x3FFF; // TOP to 16383;
       
    /*Setup Timer 3 - Hier gibts offenbar Probleme ?*/
    TCCR3A |= (1<<WGM31); // phase correct mode & no prescaler
    TCCR3A &= ~(1<<WGM30);
    TCCR3B &= ~(1<<WGM32) &  ~(1<<CS31) & ~(1<<CS32);
    TCCR3B |= (1<<WGM33) | (1<<CS30);
    ICR3   |= 0x3FFF; // TOP to 16383;
      
       
    /*Associate Motor Pins*/
    TCCR1A |= (1 << MFRONT_L); // connect pin MFRONT_L to timer 1 channel A
    TCCR1A |= (1 << MFRONT_R); // connect pin MFRONT_R to timer 1 channel B
    TCCR1A |= (1 << MBACK_L); // connect pin MBACK_L to timer 1 channel C   
     
    //  Hier ist offenbar ein Fehler? Kompiliert allerdings problems
    //    ||
    //    ||
    //    v
    TCCR3A |= (1 << MBACK_R); // connect pin MBACK_R to timer 3 channel A   
    
    /* .......................... */
    Und hier, um die Pulsweite zu setzen:
    Code:
    /*.............................*/
    // Motor front left
    OCR1A = ((FRONT_L<<4) - 16000) + 128;
    // Motor front right
    OCR1B = ((FRONT_R<<4) - 16000) + 128;
    // Motor back left
    OCR1C = ((BACK_L<<4) - 16000) + 128;
    
    
    // Motor back right - Wieder, ist hier eventuell ein Fehler?? Ich finde leider nichts
    OCR3A = ((BACK_R<<3) - 16000) + 128;
    /*.............................*/
    Ich bin für jede Hilfe dankbar!!

    LG
    Matthias

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2011
    Beiträge
    15
    Fehler gefunden
    Trotzdem Danke!

    LG

Ähnliche Themen

  1. [ERLEDIGT] Assembler Mega16 Timer Probleme
    Von HeSt im Forum Elektronik
    Antworten: 18
    Letzter Beitrag: 05.11.2013, 11:14
  2. [ERLEDIGT] ATMega 16 Timer 1 CTC Probleme
    Von Franky55555 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 14.06.2011, 18:18
  3. [ERLEDIGT] Probleme mit IF-Abfrage / Timer
    Von sammler im Forum C - Programmierung (GCC u.a.)
    Antworten: 11
    Letzter Beitrag: 25.04.2011, 12:41
  4. Radencoder- und Timer-Probleme
    Von Speedking im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 26.07.2006, 23:18
  5. Servus - keine Probleme mit Timer´n
    Von MrQu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 30.07.2005, 14:13

Berechtigungen

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

Labornetzteil AliExpress