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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.