www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Aufrufen einer Funktion mit Interrupt


Autor: David Huber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi

habe immer noch das alte problem dass ich eine Unterfunktion nicht mit
einem externen interrupt auslösen kann!!
ich rufe die unterfunktion nun mit dem flag (wie empfohlen)auf aber
habe trotzdem keinen erfolg!

µC: Atmega32
verwende das STK500

bei dem programm geht es nur um die moto_move funktion!!
und wenn ich da programm ausführe kann ich keine Spannung an
PA4 oder PA2 messen!!

vielleicht kann sichs einer mal kurz ansehen ob ich einen grundlegenden
fehler übersehen habe.

Autor: Hermann Günther (hahgeh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sobald ein Interrupt ausgelöst wird löschst du das Flag wieder in der
SIGNAL-Funktion durch Schreiben einer 1.

Das heißt egal wann du es abfragst, es wird immer 0 sein.

Du müßtest eine Varibale mit volotile definieren und diese beim
Interrupt löschen und beim abarbeiten wieder setzen.

SIGNAL(...){
  flag = 1;
}
.
.
main(...){...
  while(1){
    if(flag){
      moto_move();
      flag=0;
    }
}

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.