Forum: Mikrocontroller und Digitale Elektronik Timer0 15kHz mit Änderung des TCNT0 Wertes


von Peter F. (Gast)


Lesenswert?

Hi,
ich möchte, mithilfe des Timer0 und der Änderung des TCNT0 Wertes in der 
ISR 15kHz auf eine LED zu geben.
Mein bisheriger Code:
1
int main(void)
2
{
3
  DDRC = (1 << PC0);
4
  // Timer 0 konfigurieren
5
  TCCR0 = (1<<CS00); // Prescaler 1
6
 
7
  // Overflow Interrupt erlauben
8
  TIMSK |= (1<<TOIE0);
9
 
10
  // Global Interrupts aktivieren
11
  sei();
12
 
13
  while(1)
14
  {
15
    /* Sonstige Aktionen */
16
  }
17
}
18
19
ISR (TIMER0_OVF_vect)
20
{
21
  /* 12MHz/1/256=46875Hz, ich möchte aber mit 15kHz die LED toggeln 
22
  */
23
PORTC ^= 0x01;
24
}

doch was muss ich jetzt ändern, dass die LED statt mit 46kHz mit 15kHz 
blinkt?

bin ein totaler Neuling, und wäre dankbar für jeden Tipp :)
mfg

von Karl H. (kbuchegg)


Lesenswert?

Peter F. schrieb:

> doch was muss ich jetzt ändern, dass die LED statt mit 46kHz mit 15kHz
> blinkt?

Du musst ein bischen rechnen und in der ISR softaremaessig weiter 
runterteilen.

FAQ: Timer

von Peter F. (Gast)


Lesenswert?

Hi,
ok, hier mein Ansatz:
1
ISR (TIMER0_OVF_vect)
2
{
3
 c++; 
4
  if (c >= 3) //12MHz/1/256=46875 46875/15000=3.125
5
  { 
6
    PORTC ^= 0x01; 
7
    c = 0; 
8
  } 
9
}
so wird doch die Frequenz recht ungenau, kann man das noch verbessern?

von Karl H. (kbuchegg)


Lesenswert?

Peter F. schrieb:

> so wird doch die Frequenz recht ungenau, kann man das noch verbessern?

Lies den Link! Lies auch den nächsten Abschnitt über CTC Modus!

von spess53 (Gast)


Lesenswert?

Hi

>so wird doch die Frequenz recht ungenau, kann man das noch verbessern?

Ja. Timer im CTC-Mode laufen lassen. Und dann im Compare-Interrupt 
togglen.

MfG spess

von Peter F. (Gast)


Lesenswert?

Hi,
ok, vielen Dank
dann werde ich den CTC Mode verwenden.
danke :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.