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

Thema: 16bit Timer Atmega2560 läuft zu schnell

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2013
    Beiträge
    10
    Zitat Zitat von radbruch Beitrag anzeigen
    Hallo

    Laut Tabelle auf Seite 148 im Datenblatt des Mega2560 bedeutet WGM31 gesetzt den Mode 2 (PWM, Phase Correct, 9-bit). CTC-Mode 4 wird mit WGM32 gesetzt im TCCR3B ausgewählt:

    http://www.atmel.com/images/doc2549.pdf

    Ich hoffe, ich liege richtig mit dieser Aussage.

    Gruß

    mic
    So nun konnte ich endlich noch etwas daran machen... Also ich habe den Fehler mit dem WGM bit behoben. Ich setzte nun das WGM32 bit. Nun habe ich aber folgendes problem dass egal welchen wert ich meiner variable Timer gebe, die frequenz gleich bleibt! Und zwar etwa bei 0.3Hz..

    Ich habe nun um zu schauen mal das ganze auf den 8 Bit Timer angewendet und da funktioniert es einwandfrei, nur kann ich da natürlich keine 1Hz erreichen. Gibt es irgendwas bei den 16bit Timern was ich berücksichtigen muss? Ich bin kurz vor der Verzweiflung...

    Hier der ensprechende Code:
    #define F_CPU 16000000UL

    #include <avr/io.h>
    #include <avr/interrupt.h>


    int main(void)
    {
    uint16_t Timer = ((F_CPU/1024) -1); //egal was, frequenz bleibt gleich
    TCCR3A = (1<<WGM32); //CTC Mode
    TCCR3B = (1<<CS32) | (1<<CS30); //prescaler 1024

    OCR3AH = (uint8_t) (Timer>>; //t = 1s
    OCR3AL = (uint8_t) Timer;

    TIMSK3 |= (1<<OCIE3A); //Compare interupt aktivieren

    uint16_t Timer2 = 255; //Frequenz ändert sich
    TCCR0A = (1<<WGM01); //CTC Mode
    TCCR0B = (1<<CS02) | (1<<CS00); //prescaler 1024

    OCR0A = Timer2;

    TIMSK0 |= (1<<OCIE0A); //Compare interupt aktivieren

    DDRL = 0xFF;
    sei();

    while(1)
    {
    //TODO:: Please write your application code
    }
    }

    ISR(TIMER3_COMPA_vect)
    {
    PORTL ^= (1<<PL0);
    }

    ISR(TIMER0_COMPA_vect)
    {
    PORTL ^= (1<<PL1);
    }
    Geändert von QuadV (18.12.2013 um 23:27 Uhr)

Ähnliche Themen

  1. Atmega 32 Uhr läuft zu schnell
    Von Natureengeneer im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 24.10.2012, 15:24
  2. Zeitmessung via 16bit timer
    Von Martinius11 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 16.09.2010, 17:20
  3. Atmega2560 läuft nicht mehr
    Von mattschach im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 12.05.2008, 12:37
  4. Hilfe! Uhr läuft zu schnell?
    Von HPM im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 28.02.2007, 21:13
  5. PCF 8583 läuft zu schnell
    Von Zeroeightfifteen im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 02.04.2006, 16:54

Berechtigungen

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

12V Akku bauen