www.mikrocontroller.net

Forum: Compiler & IDEs interrupt in routine abschalten?


Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann man so den int0 und int1 kurzfristig sperren?

danke.

mfg


ISR(INT0_vect)
{
  GIMSK &= ~((1<<INT0) | (1<<INT1));
  encoder_li = encoder_li+1;

  print_wert_li();

  if(encoder_li >= enc_wert)
  {
    print_ausgabe();
  }

  GIMSK |= (1<<INT0) | (1<<INT1);
}

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man wohl schon, aber warum?
Während der ISR sind interrupts eh deaktiviert.
Was vielleicht eher dem gewünschten Ergebniss nahekommt wäre die 
IRQ-Flags vor dem Verlassen nochmal zu löschen:
GIFR=_BV(INTF1)|_BV(INTF0);

Dein Hauptproblem ist aber eher das vermurkste Design. ISRs sollten 
möglichst kurz gehalten werden, print_wert_li() und print_ausgabe() 
hören sich aber eher nach langsamen, grossen Brocken an.
Besser: in der ISR nur ein Flag setzen, Ausgabe dann in der 
Main-Schleife.

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.