mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ext Interruppt geht nicht


Autor: Stephan Schwarz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Hab da ein Problem bei der Anwendung mit einem EXT Interrupt.
MCU ist eine AT90S2313.
Da ich noch nie mit einem Interuppt gearbeitet habe, habe ich versucht
ein Beispielprogramm von C. Schifferle abzuändern.
Im Original wird eine Timmerinteruppt eingesetzt.
Das Programm springt aber nicht in die IR-Routine.
Es ist nur ein Testprogramm, indem eine LED auf einem Port Blinkt.
Wobald der IR ausgelöst wird soll eine LED auf einem anderne Port
 x mal Blinken und wieder in Main zurückkehren.

Wo liegt mein Problem?

Autor: Dieter B (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan

Habe deinen Code mal abgeändert. Läuft im Simulator so ganz gut.

Du hast vergessen die signal.h mit einzubinden.

Wenn ein INT kam, sprang das Programm wieder an den Anfang und nicht in
die Int. Routine.

Nimm die Delays wieder rein, hatte die header nicht.


MFG
Dieter

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schön für die Hilfe.

Aber die Signal.h hab ich nicht vergessen - ich kannte die bisher noch
einfach nicht.

und grüss mir mal die Estefania  :-)

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ne kleine Anmerkung:
outp/outb und inp/inb sind deprecated (abgekündigt) - für neue Software
nicht mehr verwenden...

Gruß,
Patrick...

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ OldBug

Hab ich schonmal gelesen, aber was nehme ich anstelle um für den
Portzugriff???

"deprecated (abgekündigt)"   heisst Sie werden in Zukunft von neueren
Compiler nichtmehr verstanden? oder wie?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie werden nicht mehr unterstützt.
Wann das passiert, bleibt den Entwicklern überlassen.
Zugriffe auf die Ports und Register etc. einfach durch Zugriff auf die
Namen derer durchführen:

DDRB = 0xFF;
PORTB = 0xFF;
while (! (USR & (1 << UDRE));
[..]

Gruß,
Patrick...

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.