Hallo,
ich habe nun 2 Stunden einen Fehler gesucht und ihn endlich gefunden.
Verstehe aber nicht so recht wieso es nicht funktioniert hatte. Ich will
mir einen Takt von 500Hz an Pin OC5A ausgeben. Dies im CTC Mode.
//ATmega2560
1 | //Dieser Code hat nicht funktioniert:
|
2 | TCCR5A |= (1<<COM5A0); // Portpin an Timer angekoppelt => fclk
|
3 | TCCR5B |= ((1<<WGM52) | (1<<CS01) | (1<<CS00)); // Timer 5: Clear on Compare / Prescale: 64
|
4 |
|
5 | OCR5AH = 0; // Timer 5 Compare Value
|
6 | OCR5AL = 249;
|
7 | //OCR0AL = 124;
|
8 | // fOC0B = fosc / ( 2 * Prescale * ( OCR0A + 1 ) )
|
9 | // fosc = 16 MHz => fOC0B = 1000 Hz ( OCR0A = 124 )
|
10 | // fosc = 16 MHz => fOC0B = 500 Hz ( OCR0A = 249 )
|
1 | //Dieser schon:
|
2 | TCCR5A = (1<<COM5A0); // Portpin an Timer angekoppelt => fclk
|
3 | TCCR5B |= ((1<<WGM52) | (1<<CS01) | (1<<CS00)); // Timer 5: Clear on Compare / Prescale: 64
|
4 |
|
5 | OCR5AH = 0; // Timer 5 Compare Value
|
6 | OCR5AL = 249;
|
7 | //OCR0AL = 124;
|
8 | // fOC0B = fosc / ( 2 * Prescale * ( OCR0A + 1 ) )
|
9 | // fosc = 16 MHz => fOC0B = 1000 Hz ( OCR0A = 124 )
|
10 | // fosc = 16 MHz => fOC0B = 500 Hz ( OCR0A = 249 )
|
TCCR5A habe ich vorher nirgends benutzt. Müsste dann doch eigentlich
seinen Initialwert von 0x00 haben.