www.mikrocontroller.net

Forum: Compiler & IDEs Interrupt will nicht


Autor: Alexthbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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(;;);
}

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Alexthbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich hab das schon vorher mit beidem probiert ... INTERRUPT oder
SIGNAL beides das selbe ...

Autor: Jörg Wunsch (Gast)
Datum:

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

Autor: Alexthbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Alexthbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok fehler gefunden ...
void INTERRUPT (SIG_OVERFLOW2)
->
INTERRUPT (SIG_OVERFLOW2)

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

Autor: Alex (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.