www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur allgemeinden Einbindnung der externen Interrupts


Autor: Andy Rath (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich beschäftige mich jetzt ca. seid einem Monat intensiv mit Assembler
und AVRs und bin voll begeistert, was man da alles machen kann. Bis
jetzt hat auch alles immer geklappt auch die internen Interrupst, aber
mit den externen kom ich einfach nicht zurecht.

Ich habe versucht im Internet etwas zu finden und habe auch das
Datenblatt gewälzt, aber irgendwie werde ich da nicht recht schlau.

Ich weiß, dass ich dem MCUCR mitteilen muss, ob der Interrupt bei
fallender oder steigender Flanke erfolgen soll. Außerdem habe ich mit
dem Befehl SEI die Interrupts eingeschaltet und die Interrruptvektoren
in der Reihenfolge verwendet, wie sie im Datenblatt angegeben sind.
Den Interrrupt gedachte ich dann durch anlegen von Spannung am INT0
Eingang auszulösen, aber es ging nicht.

Ich würde mich freuen, wenn mir jemand sagen könnte, auf was ich noch
achten muss bzw. wo ich einen Fehler gemacht habe.

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast du das 'GIMSK'-Register gesetzt? - nur wenn dieses auf 1 ist,
kann ein Interrupt ausgelöst werden.

Poste mal deinen Code, dann kann man bessere Antworten geben.

Gruß, Florian

Autor: Andy Rath (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OK im Anhang ist ein Program, so wie ich dachte, dass es funktionieren
muss, aber, dass nicht funktioniert.

Das mit dem GIMSK Register verstehe ich nicht, denn so weit ich das aus
dem Datenblatt verstehe (Wobei das muss nichts heißen, weil ich nicht
wirklich gut Englisch kann :-)) bedeutet das setzen des GIMSK-Flags
nichts anderes als ein Interrupt auszulösen. Wenn ich das intern über
die Software mache, dann habe ich doch wieder nichts extern
beeinflusst, oder seh ich das falsch?

Andy

Autor: Johannes Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also so wie ich das Datenblatt verstehe, wird mit dem Setzen der
entsprechenden Bits des GIMSK Registers nicht ein Interrupt ausgeloest,
sondern ermoeglichst. Probier also in Main ein
ldi temp, 0b11000000
out GIMSK, temp
Dazuzutun. :-?

Viel Erfolg!
Gruesse,
j.

Autor: Andy Rath (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, Danke, jetzt läuft es. Sagte ja mit Englisch bin ich trotz 8 Jahre
Unterricht nicht sio bewandert. Also jetzt läuft auch das.

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.