Hallo,
eigentlich wollte ich mir gestern ein DCF77-Modul besorg haben, aber es
war keins mehr da. Daher würde ich dann jetzt mit dem Timer des
Controllers anfangen.
1 | #define F_CPU 16000000UL
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <avr/interrupt.h>
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRB |= (1 << PB2);
|
9 | PORTB |= (1 << PB2);
|
10 |
|
11 | TCCR0A |= (1 << WGM01);
|
12 | TCCR0B |= (1 << CS00) | (1 << CS01);
|
13 | OCR0A = 250-1;
|
14 | TIMSK0 |= (1 << OCIE01);
|
15 | sei();
|
16 |
|
17 | while(1)
|
18 | {}
|
19 | }
|
20 |
|
21 | ISR(TIMER0_COMPA_vect)
|
22 | {
|
23 | static uint8_t millis = 0;
|
24 | static uint8_t seconds = 0;
|
25 | static uint8_t minutes = 0;
|
26 | static uint8_t hours = 0;
|
27 | millis++;
|
28 | if(millis >= 1000 )
|
29 | {
|
30 | PORTB ^= ( 1 << PB2 );
|
31 | seconds++;
|
32 | millis = 0;
|
33 | if(seconds >= 60 )
|
34 | {
|
35 | minutes++;
|
36 | seconds = 0;
|
37 | if(minutes >= 60)
|
38 | {
|
39 | hours++;
|
40 | minutes = 0;
|
41 | if(hours >= 12)
|
42 | {
|
43 | hours = 0;
|
44 | }
|
45 | }
|
46 | }
|
47 | }
|
48 | }
|
habe einen Quarz mit 16Mhz. Das heisst, alle millisekunde sollte in die
ISR gesprungen werden
Allerdings bleibt die LED immer am leuchten (noch soll diese erstmal
blinken).