-         

Ergebnis 1 bis 8 von 8

Thema: CTC Modus - irgendwo muss doch ein Fehler sein

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435

    CTC Modus - irgendwo muss doch ein Fehler sein

    Anzeige

    Hallo,

    ich habe gerade ein kleines Programm geschrieben, um den CTC-Modus für einen Schrittmotor zu nutzen. Leider verändert sich die Frequenz bei Verschiedenen werten von OCR0A nicht. Kann mir jemand weiter helfen?
    Das Board ist ein Arduino Mega

    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    
    int step = 13;
    
    
    
    
    
    
    
    
    void setup() {                
      pinMode(step, OUTPUT);  
      // Timer 0 konfigurieren
      TCCR0A = 0b01000000; // CTC Modus, OC0 wird getoggelt
      TCCR0B = 0b00000011; // Prescaler 64
      OCR0A = 24; //Obergrenze auf 24 festgelegt
    }
    
    
    void loop() {
    
    
    }

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von wisda.noobie Beitrag anzeigen
    Code:
      TCCR0A = 0b01000000; // CTC Modus, OC0 wird getoggelt
      TCCR0B = 0b00000011; // Prescaler 64
    CTC? So, so. Die Konfigurierung über Binärwerte ist übrigens 'ne Zumutung.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    Habe das erstmal binär gemacht weil ich da am schnellsten erkenne, wie ich die register konfiguriere. Wo ist denn jetzt der Fehler?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Schau' Dir TCCR0A nochmal genau an.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    ich hatte es so verstanden, dass ich bei den ersten 2 stellen (01) angebe, dass OC0 getoggelt wird und mit den letzten beiden (00) die pwm-betriebsart deaktiviere

    - - - Aktualisiert - - -

    ahh manchmal ist es hilfreicher, sich die mühe zu machen, statt bei mikrocontroller.net ins datenblatt zu schauen.

    Code:
      TCCR0A = 0b01000010; // CTC Modus, OC0 wird getoggelt
      TCCR0B = 0b00001101; // Prescaler 1024
    funktioniert soweit ich weis

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    ... binär gemacht weil ich da am schnellsten erkenne, wie ich die register konfiguriere. Wo ist denn jetzt der Fehler?
    Er hat ja nicht von Fehler sondern von Zumutung geschrieben. Wenn Du es im Binärcode so schnell erkennst, dann ist das schon ne Sache - ich bin langsam, ich brauche da hilfen . . . und initialisiere meine CTC z.B. so (mega164-1284, 20MHz):
    Code:
    // ============================================================================== =
    // ==   Timer  Aufgabe: Servo mit Soft-PWM ansteuern auf wählbarem Port
    // - - - - - - - - - - - - - - - -
      void TC1TMR_init(void)        // Init Timer/Counter 1 für 2 ms Servoperiode
      {                             //
        TCCR1B  |= (1<<WGM12);      // WGM12 => CTC, TOP = OCR1A                   S135
        TCCR1B  |= (1<<CS11);       // CS11+10 <=> clk/8 => 2,500 MHz              S136
        OCR1A    = OCR1AV;          // 10x OCR1AV = 63990=> alle 25,60 ms ein Interrupt
                                    //     Interrupt zählt bis 6400 !
        OCR1B    = OCR1BV;          // OCR1B = {???} => 1-2 ms Rampe
    // - - - - - - - - - - - - - - - -
      }                                
    // ============================================================================== =
    Geändert von oberallgeier (23.06.2013 um 20:08 Uhr) Grund: Nachtrag: Controllertyp
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Ja, DB ist recht hilfreich Einerseits musst Du dem OCn Pin erklären, wie er sich verhalten soll, andererseits muss der Mode eingestellt werden, was Du nicht gemacht hast. Deshalb taugt auch die Bit-Konfiguration nichts, denn bei Angabe der Bits in Klarnamen fällt ein Fehler leichter auf.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    das ist sicherlich eine elegantere lösung, die notation beherrsche ich noch nicht
    Werde die mir aber auf jeden Fall noch anschauen, das scheint ja deutlich einfacher zu sein. Im endeffekt lag der Fehler jetzt nur noch im WGM02-Bit
    Danke für die Antworten!

Ähnliche Themen

  1. [ERLEDIGT] Hilfe bei Atmega8 Timer/Counter1 für CTC Modus
    Von robotka im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.03.2013, 19:51
  2. Problem mit Timer1 als Counter im CTC Modus und Interupt
    Von Anam52 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 26.02.2013, 16:34
  3. bis weihnachten muss es klar sein
    Von Loui im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 6
    Letzter Beitrag: 01.12.2012, 10:37
  4. Was für ein Transistor muss das sein
    Von hardstyleroxx im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 29.10.2005, 18:09
  5. Wie Groß muss das Potentiometer sein?
    Von the_Ghost666 im Forum Elektronik
    Antworten: 16
    Letzter Beitrag: 26.08.2005, 20:46

Berechtigungen

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