Gast
#4431999
Hallo, folgendes Problem: Die Berechnung der Timerfrequenz des Atmega64A 8bit Timer0 im CTC Mode haut bei mir nicht hin. Ziel ist damit einen COMP Interrupt mit 40 Hz zu erzeugen. Reduzierter Code zum reproduzieren (komplette main.c):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
Problem ist, dass der Interrupt (siehe oszi-Screenshot) mit doppelter Frequenz auftritt (80Hz). Formel entsprechend Datenblatt Seite 198: http://www.atmel.com/images/atmel-8160-8-bit-avr-microcontroller-atmega64a-datasheet.pdf f_clock / (2*Prescaler*(OCR0+1)) = f_oc Bei 16 Mhz und Prescaler von 1024 ergibt es für die Berechnung von OCR0: (16000000 / 2*1024*40)-1 = 194 Die gesetzten Fusebits sind EF D9 FF (16 Mhz, kein compatiblity mode etc.) Hab im Netz keine Infos gefunden, auch hier bei der AVR Checkliste, da der Atmega64 ja auch sonst paar Eigenheiten hat. Hoffe jemand kann mir helfen.

