Timer Compare Match

Gast #1240217
int main(void)
{
DDRA = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;
// PortB als eingang alle Pull up Widerstände acktiviert
DDRB = 0x00;
PORTB = 0xFF;


//Timer einstellen
TCCR1B = (1<<CS10);       //setzt den Prescaler 64
OCR1A = 11000;
TCNT1 = 0;                             //startewert des Counters
TIMSK = 1<<OCIE1A;                     //Compare-Int aktivieren
sei();

for(;;)
{
//hier werden die Ports gesetzt !
//set_Porta(PA1);
//set_Porta(PA0);
}
}

SIGNAL (SIG_OUTPUT_COMPARE1A)
{
//hier nicht Warum ?
set_Porta(PA1);
set_Porta(PA0);
)

Was könnte das Problem sein wenn der Interrupt nicht ausgeführt wird.
Kopiere ich die Befehle in main werden die Ports gesetzt !

Eigentlich hat der Code schon einmal funktioniert. Der einzige 
unterschied ist das ich jetzt den interne Quarz verwende.
Gast #1241089
Aus den Registernamen und Interrupt-Handlern schlußfolgere ich einfach 
mal, daß es vermutlich um einen AVR geht. Jetzt müßtest du nur noch 
verraten, um welchen Prozessor es konkret geht.

> unterschied ist das ich jetzt den interne Quarz verwende.

Es gibt beim AVR keinen internen Quarz. Meinst du den RC-Oszillator?
Gast #1336341
Sollte es sich um einen ATMega16 handeln dann hier die Auflösung
1
...
2
void initTimer()
3
{
4
  // CTC Mode aktivieren
5
  TCCR1A |= (0<<WGM11)|(0<<WGM10);
6
  TCCR1B |= (0<<WGM13)|(1<<WGM12);
7
  // Timer 1 Vorteiler setzen
8
  TCCR1B |= (0<<CS12)|(1<<CS11)|(1<<CS10);   // Vorteiler 64
9
  // Vergleichswert setzen
10
  OCR1A = 11000;
11
  // Interrupt wird durch Compare Match ausgelöst
12
  TIMSK |= (1<<OCIE1A);
13
  //ISR wird ausgelöst
14
  TIFR |= (1<<OCF1A);
15
  sei();
16
}
17

18
//Timerinterrupt Compare
19
ISR(TIMER1_COMPA_vect)
20
{
21
  // Toggle Pin  
22
  PORTA ^= (1<<PA0);
23
}
24
...

Achja, Vorteiler 64 und Vergleichswert 11.000 macht bei 1MHz 0,704s. Ich 
weiß, der OP hat natürlich nicht geschrieben welchen Takt er hat (warum 
auch). Aber der interne Oszi kann doch nur 1, 2, 4 und 8 MHz macht dann 
0,704s, 0,352s, 0,176s und 0,088s. So gewollt?

Ich weiß, dass es nicht mehr akut sein wird ;-)
Ich hatte bloß gerade eben das gleiche Problem und eigentlich keinen 
Bock auf Datenblatt lesen. Vielleicht kann sich der ein oder andere das 
jetzt sparen.

bye
Datasheet

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.