Arduino Mega CTC - Timer mode

OP (Firma: HTL) #4623694
Lesenswert?

Hallo,
Ich wollte einen 1ms High, 1ms Low clock mit meinem Arduino Mega 
realisieren.
Allerdings messe ich in der Simulation 16ms.
Ich habe mehrere Male den Code und die Register überprüft, dennoch will 
es nicht klappen...
Ich hoffe ihr entdeckt den Fehler und könnt mir damit weiterhelfen.
Lg

Note : für den Arduino Uno Controller klappt der Code in der Simulation 
problemlos.
-----------------CODE------------------------
#ifndef F_CPU
#define F_CPU  16e6
#endif

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <math.h>
#include <stdbool.h>

void timer1_init()
{
    // set up timer with prescaler = 64 and CTC mode
    TCCR1B |= (1 << WGM12)|(1 << CS11)|(1 << CS10);

    // initialize counter
    TCNT1 = 0;

    // initialize compare value
    //=> 1ms
    OCR1A = 250;

    // enable compare interrupt
    TIMSK1 |= (1 << OCIE1A);

    // enable global interrupts
    sei();
}

ISR (TIMER1_COMPA_vect)
{
    // toggle led here
    PORTD ^= (1 << 0);
}

int main(void)
{
    //led-pin init
    DDRD |= (1 << 0);

    // initialize timer
    timer1_init();


    while(1)
    {

    }
}

----------CODE ENDE--------
Angehängte Dateien:
OP (Firma: HTL) #4623734
Lesenswert?

die Simulation läuft so schnell, dass wenn ich main() einen Ausgang 
Toggle, ich ein Signal mit 12µs High und 12µs Low bekomme.
Die Simulation führe ich in Proteus durch.
Habe bislang auf dem Arduino Uno programmiert und da war der schnellste 
verwendete Takt bei 250µs.
Vielen Dank für die schnellen Antworten!
OP (Firma: HTL) #4623904
Lesenswert?

es geht mir weniger um die Simulation per se, da ich für mein Projekt im 
Endeffekt Taktzeiten von 250µs brauche und Proteus bei allen 
Zeitintervallen unter 1ms eh ungenau wird. Es ging mir eher darum 
festzustellen, wie man den Timer und Prescaler richtig einstellt um das 
anschließend auf die Taktzeit von 250µs anpassen zu können.
Wenn ihr mir also versichern könnt, dass der Fehler als solcher rein in 
der Simulation auftritt und das ganze wenn ich es demnächst an ein 
echtes Oszilloskop anhänge, funktioniert bin ich 100% glücklich. :D

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren