Forum: Compiler & IDEs Interrupt will nicht


von Alexthbe (Gast)


Lesenswert?

Irgendwie bekomm ich beim compilieren immer die meldung "error: two or
more data types in declaration of `__vector_11'" ... hab schon viel
versucht und ich weis nicht wo mein fehler liegen soll ... hab den code
nur hier so leicht minimiert ... mfg alexthbe

#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/io.h>

void INTERRUPT(SIG_OVERFLOW2)
{
sei();
}

void main (void)
{
  TCCR2 = 0x05;
  ASSR = 0x08;
  timer_enable_int (_BV (TOIE2));

  sei();

  for(;;);
}

von Alex (Gast)


Lesenswert?

Hmm,

was soll das sei () in der Interrupt-Service-Routine?

Deklariere die ISR einfach so:

SIGNAL (SIG_OVERFLOW2)
oder
INTERRUPT (SIG_OVERFLOW2)

Gruss, Alex

von Jörg Wunsch (Gast)


Lesenswert?

Vergiß INTERRUPT.  Jemandem, der noch nichtmal so recht verstanden
hat, wie diese Makros überhaupt arbeiten, sollte man INTERRUPT besser
gar nicht erst erzählen -- es wäre u. U. die beste Variante, sich
damit ins Knie zu schießen.

(Die Begründung bzw. die Unterschiede zwischen SIGNAL und INTERRUPT
sind hinlänglich diskutiert worden, bitte die Suchfunktion des Forums
dafür benutzen.)

Ganz davon abgesehen, selbst ein kurzer Blick auf demo.c (das
umfänglich dokumentiert ist) hätte genügt, die richtige Benutzung von
SIGNAL zu lernen...

von Alexthbe (Gast)


Lesenswert?

ja ich hab das schon vorher mit beidem probiert ... INTERRUPT oder
SIGNAL beides das selbe ...

von Jörg Wunsch (Gast)


Lesenswert?

Wie wäre es, wenn Du mit dem Lesen der Doku und Beispiele beginnen
würdest, statt wild auszuprobieren?

von Alexthbe (Gast)


Lesenswert?

wie wäörs wenn mir hier bitte jemand hilft weil ich hab kein plan was
ich weiter machen soll ... hab tausend beispiele ausprobiert die gehen
hab verglichen und sonst was getan aber des will einfach nich ...

von Alexthbe (Gast)


Lesenswert?

ok fehler gefunden ...
void INTERRUPT (SIG_OVERFLOW2)
->
INTERRUPT (SIG_OVERFLOW2)

oder eben signal ... geht mit beidem ...

von Alex (Gast)


Lesenswert?

Bist ein Held, warum habe ich wohl die richtige Lösung bereits gepostet?

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.