Forum: Mikrocontroller und Digitale Elektronik ISR TIMER0_COMPA Interrupt Warning


von MARK (Gast)


Lesenswert?

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

von CK (Gast)


Lesenswert?

hast du auch die
#include <avr/interrupt.h>
eingebunden?

von MARK (Gast)


Lesenswert?

CK schrieb:
> hast du auch die
> #include <avr/interrupt.h>
> eingebunden?

in der main.c ja, deshalb gab es dort auch keine Warnung.
Ich danke dir. Das hatte ich nicht gemacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.