Ich weiß nicht mehr weiter... ATMega128 und Timer0

Gast #272624
Lesenswert?
• ▲
▼
Hi!

Ich möchte mit dem Timer0 vom ATMega128 einen 10ms-Interrupt erzeugen
(=100Hz). (Quarzfrequenz 11059200Hz)

Hab den Vorteiler auf 1024 und den Reload-wert auf 148.

Jedoch bekomme ich am Test-Ausgang (Pin PC6) anstatt der erwarteten
Frequenz von 50Hz das 8fache, nämlich 400Hz! :-O

F_CPU wird im Makefile definiert. Auch wenn ich T0_RELOAD fest mit 148
definiere, macht es keinen Unterschied...


Hier der Code:
===================
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>
#include <string.h>

#define T0_RELOAD (256-((F_CPU/1024)/100))

/* Test-Variablen definieren */
volatile unsigned char test=0;

/* Funktionen deklarieren */
void INIT(void);

/* Hauptfunktion */
int main(void)
{
 INIT(); // Initialisierungsroutine aufrufen

 DDRC=0x40; // Testausgang PC6

 while(1) { }

 return 0;
}


/* Interrupt-Routine Timer0-Überlauf => 10ms */
SIGNAL (SIG_OVERFLOW0)
{
TCNT0 = T0_RELOAD; // Timer0 vorbelegen

 if (test) { PORTC &= 0xbf; test=0; } else { PORTC |= 0x40; test=1; }

}


void INIT(void)
{
 /* Timer0 als 10ms-Taktgeber per Interrupt definieren */
 TCCR0 = (1<<CS00)|(1<<CS02);  // Timer0 => F_CPU / 1024
 TCNT0 = T0_RELOAD;    // Timer0 vorbelegen
 TIMSK |= (1<<TOIE0);    // Interrupt Overflow0 freigeben
 sei();        // Globale Interruptfreigabe
 return;
}

===================

Was kann hier noch faul sein?

Fuse-Bits sollten auch alle passen:
-M103C deaktiviert (andernfalls geht garnix)
-JTAG, OCD, WDTON, BOOTRST deaktiviert
-Takt: Ext XTAL, High frequency
-Keine Lockbits (alle Mode 1)

Wäre über Tipps was ich noch vergessen haben könnte echt dankbar!

MfG
Techniker

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.