Nabend,
ich habe neben meiner Datei main.c (wo sich meine main-Funktion
befindet) eine Datei und Header für timer (also timer.h und timer.c)
In denen habe ich die Funktionenn für die Initialisierung der Timer
gemacht.
Die Interrupt-Routine rufe ich dann mti
ISR(TIMER0_COMPA_vect) auf.
timer.c
1 | void timer_init()
|
2 | {
|
3 | TCCR0A |= (1 << WGM01); // CTC-Mode
|
4 | TCCR0B |= (1 << CS00) | (1 << CS01); // clkI/O/64
|
5 | OCR0A = (250 - 1);
|
6 | TIMSK0 |= (1 << OCIE0A);
|
7 |
|
8 | TCCR2A |= (1 << WGM01); // CTC-Mode
|
9 | TCCR2B |= (1 << CS00) | (1 << CS01); // clkI/O/64
|
10 | OCR2A = (250 - 1);
|
11 | TIMSK2 |= (1 << OCIE2A);
|
12 | }
|
13 |
|
14 | ISR (TIMER0_COMPA_vect)
|
15 | {
|
16 | //static int32_t milliseconds = 0;
|
17 | //milliseconds++;
|
18 | //
|
19 | //if(milliseconds>=1000)
|
20 | //{
|
21 | // milliseconds = 0;
|
22 | //}
|
23 | }
|
ist diese Funktion (ISR (TIMER0_COMPA_vect)) in der Datei main.c,
bekomme ich beim kompilieren keine Warnung. Ist diese Funktion
allerdings in der timer.c bekomme ich die Warnungen
control reaches end of non-void function
return type defaults to 'int'
type of '__vector_14' defaults to 'int'
Was ist der Unterschied an den ISRs bezüglich der normalen funktionen?
für die Funktion timer_init bekomme ich ja keine Fehlermeldung.
Oder sollten die ISRs in die main.c?
Mark