Hallo zusammen,
ich habe eine Frage:
Ich möchte gerne einen Timerinterrupt alle 1ms aufrufen. Deswegen dachte
ich dass ich den CTC-Mode benutzen muss mit einem "Reload-Wert".
Allerdings bekomme ich die Implementierung nicht hin, hab verschiedene
Artikel dazu gelesen, aber irgendwie will das alles nicht!
Kann mir jemand sagen, wie ich das Porgrammieren muss??
Habe im hauptprogramm folgendes benutzt: (Hier aus dem Forum)
1 | //Timer initialisieren
|
2 | TCCR1A = 0x00;
|
3 | TCCR1B = 0x0B; //Prescaler 64, CTC-Mode
|
4 | OCR1A = 15625; //Vergleiswert setzten
|
5 | TIMSK = (1<<OCIE1A); //OC-Interrupt aktivieren
|
6 |
|
7 | ......
|
8 |
|
9 | //TimerInterrupt, wenn status_SendData
|
10 | ISR(TIMER0_COMPA_vect) {
|
11 |
|
12 | char s[7];
|
13 | uart_puts( itoa( ADC_Read(1), s, 10 ) );
|
14 | }
|
Allerdings resetet sich bei mir der komplette µC dann immer. Weiss nicht
woiran es liegt. Er läuft mit internen 1Mhz. Was ich wenn alles fertig
ist, natürlich durch einen Quarz verbesser
Kann mir vielleicht auch jemand verraten wie ich den Reload-Wert
berechnen kann? Also Formelmäßig mit abhängigkeit der Taktfrequenz?
Ich habs versucht alleine mithilfe des Internets zu lösen, aber leider
war ich dabei nicht erfolgreich!
Danke schonmal