Forum: Compiler & IDEs Warum muss ISR im gleichen File wie main() stehen ?


von Karlheinz D. (kdruschel)


Lesenswert?

Hi Leuts,

ich habe hier eine kleine Testroutnie geschrieben (AVR-Studio, gcc 
ATMega128).

Dabei wird der Overflow Interrupt von Timer2 genutzt.
ISR(TIMER2_OVF_vect)
{
  TCNT2 = 178;
  liveled++;
}

Solange dieser Programmteil im gleichen C-File steht wie main(), läuft 
alles einwandfrei. Sobald ich den Code aber in eine andere Datei 
schreibe, läuft nichts mehr. Kann es sein, dass die Routine dann gar 
nicht mit dazugelinkt wird ? Wie kann ich das ändern ?


Greets
Karlheinz

von Mr x (Gast)


Lesenswert?

du musst das File includen

von Codehamster (Gast)


Lesenswert?


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karlheinz Druschel wrote:

> Wie kann ich das ändern ?

Indem du sie mit dazu linkst?

Im Ernst: ohne deine Build-Infrastruktur (insbesondere die
Linker-Kommandozeile, die tatsächlich benutzt wird) zu sehen,
kann man da nur raten.  Selbstverständlich können die ISRs über
beliebig viele Dateien gestreut werden, wenn sie denn alle mit
gelinkt werden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Mr x wrote:
> du musst das File includen

Ungefähr der dümmste Rat, den man so geben könnte.

von A. F. (artur-f) Benutzerseite


Lesenswert?

Oder  "liveled" ist nicht als volatile deklariert oO?

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.