Hallo,
ich habe ein timer-problem, verstehe es aber nicht warum und hoffe hier
die lösung zu finden.
Ich habe ein Atmega328 mit einem externen Quarz (8MHz).
Den Timer initialisiere ich:
1 | /* 20 ms */
|
2 | TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10); // CTC-Mode clkIO/64
|
3 | OCR1A = (2500-1);
|
4 | TIMSK1 = (1 << OCIE1A);
|
in der ISR lasse ich ein Pin toggeln und messe die Zeit.
es waren 160 ms.
1 | ISR (TIMER1_COMPA_vect)
|
2 | {
|
3 | PORTB ^= (1 << PINB2);
|
4 | }
|
Dann habe ich die fuses gelesen:
lfuse: 0x62
hfuse: 0xD9
efuse: 0x07
Damit wurde der takt durch 8 dividiert. Dann passt es mit den 160 ms.
habe die lfuse umgeschrieben auf 0xE2. Diese gibt der controller mir
auch beim Auslesen wieder aus.
allerdings toggelt der pin immer noch alle 160 ms.
Als ob die Änderung nicht angenommen wurde.
Gibt es noch eine Stellschraube um den Takt anzupassen? Ist es möglich,
dass die Änderung der fuses nicht übernommen worden sind? Habe auch die
Spannung vom Controller abgezogen und neu gestartet.