Hi zusammen.
Bin gerade beim Bau einer Uhr, folgende Rahmendaten:
Quarz: 4.194304MhZ
Timer: 16Bit
Prescaler: 64
Sollte meinen Berechnungen nach alle 1000ms einen Timer Overflow geben.
Ich will alle 1000ms einen Interrupt, indem die einzelnen Werte
(stunden, minuten sekunden) raufgezählt werden. Eine Uhr halt :)
µC ist ein ATMEGA 16.
Allerdings entsteht mir ständig eine Fehlermeldung, was mich ein wenig
irritiert, vielleicht kann mir da ja jemand helfen. Meine Programm
(auf's wichtigste gekürzt) sieht wie folgt aus:
1 | #include <avr/io.h> //IO Ports/Pins
|
2 | #include <avr/interrupt.h> //Interrupt Lib
|
3 | #include <stdint.h> //Datentypen
|
4 | #include <util/delay.h> //Delay Lib
|
5 |
|
6 | int main(void)
|
7 | {
|
8 |
|
9 | TCCR1B = 0x03; //Timer System Frequency Prescaler 64
|
10 | TIMSK |= (1<<TOIE1); //Interrupt alle 1000ms (Timer 1)
|
11 | sei(); //Globale Interrupts erlauben
|
12 |
|
13 | while (1){
|
14 |
|
15 | /* Anzeige, diverses, unwichtig für Timer */
|
16 |
|
17 | }
|
18 |
|
19 | #ifndef TIMER1_OVF_vect
|
20 | #endif
|
21 |
|
22 | ISR (TIMER1_OVF_vect)
|
23 |
|
24 | {
|
25 |
|
26 | /*Rauf, runterzählen */
|
27 |
|
28 | }
|
29 |
|
30 | }
|
So, ich habe mich an dieses Beispiel hier gehalten
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR
Und hab das Register TCCR1B respektive TIMSK gemäss Datenblatt geändert.
Leider funktioniert das ganze nicht so wie ich will, ich erhalte immer
folgende Fehlermeldung:
static declaration of '__vector_8' follows non-static declaration
und als Warnung
previous declaration of '__vector_8' was here
Kann mir da vielleicht jemand weiterhelfen?
Freue mich auch eure Beiträge
MFG
Dave