Guten Abend,
ich habe ein Problem mit einer einfachen Timer Routine die nicht startet
:(
Folgender Code:
1 | #ifndef F_CPU
|
2 | //#define F_CPU 3686400UL
|
3 | #define F_CPU 8000000UL
|
4 | #endif
|
5 |
|
6 | #include <avr/io.h>
|
7 | #include <util/delay.h>
|
8 | #include <util/twi.h>
|
9 | #include <string.h>
|
10 | #include <stdlib.h>
|
11 | #include <stdio.h>
|
12 | #include <stdint.h>
|
13 | #include <avr/interrupt.h>
|
14 | #include <inttypes.h>
|
15 |
|
16 | #define PWR_LED PINB4
|
17 |
|
18 |
|
19 | ISR( TIMER0_OVF_vect ) // every 10ms
|
20 | {
|
21 |
|
22 | TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); // preload for 10ms
|
23 |
|
24 | // Zum testen ob sich was tut...
|
25 | PORTB ^= (1<<PWR_LED);
|
26 | }
|
27 |
|
28 | int main(void)
|
29 | {
|
30 | // Inititalisierung des 10ms Timers
|
31 | TCCR0A = (1<<CS02)|(1<<CS00); // divide by 1024
|
32 | TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); // preload for 10ms
|
33 | TIMSK0 |= 1<<TOIE0;
|
34 |
|
35 | sei();
|
36 | while (1)
|
37 | {
|
38 |
|
39 | }
|
40 | }
|
... relativ überschaubar, die LED kann ich auch schalten und toggeln,
also an der Hardware liegt es nicht. Bei 10mS müsste die LED zumindest
glimmen... mit dem Oszi sieht man aber auch keine Regung.
Mir scheint als wären die globalen Interrupts geblockt, diese habe ich
aber mit sei() gestartet.
Bitte helft mir :)
Danke!!!
Matthias