Hi,
hab da mal eine Frage, habe folgendes in meinen µC geladen :
1 | #define F_CPU 16000000 //Frequency = 16 MHz
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 | #include <avr/interrupt.h>
|
6 |
|
7 | //volatile uint8_t keystate = 0;
|
8 |
|
9 | int main(void)
|
10 | {
|
11 | TCNT0 = 0x00; // Timer counter mit 0 initialisieren
|
12 | OCR0 = 0x00; // beim ersten overflow interrupt
|
13 | TIMSK |= (1<<OCIE0); // Timer compare enabled
|
14 | DDRA = 0x00; // Port A Input
|
15 | DDRB = 0xFF; // Port B Output
|
16 | DDRC = 0xFF; // Port C Output
|
17 | PORTA = 0xFF; // Pullups an A an
|
18 |
|
19 | sei();
|
20 |
|
21 | TCCR0 = ((1<<WGM01) | (1<<COM00) | (1<<CS02)|(1<<CS00)); // Toggle Mode on , Prescaler 1024
|
22 |
|
23 |
|
24 | while(1)
|
25 | {
|
26 |
|
27 | }
|
28 | return 1;
|
29 | }
|
30 |
|
31 | ISR (TIMER0_COMP_vect)
|
32 | {
|
33 | PORTC^=0X0F; // Toggle Port C
|
34 | }
|
meinen Berechnungen zufolge sollte nun alle 16.384 ms der Port toggeln
(16000000/1024 , Ans/256 , 1/Ans;; durch 1024 wegen prescaler durch 256
wegen den Steps bis zum timer counter overflow , kehrwert um von Hz auf
s zu kommen ..)
Wie allerdings auf dem Screenshot von dem Scope zu sehen ist passiert
das ganze allerdings alle 62 µs ,also fehlt mir der Faktor 256 .
Kann mir jemand sagen wo der Gedannkenfehler ist ???
Target MCU ist n Mega32 mit 16 MHz clock .
Vielen Dank schonmal