www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16C Interrupts


Autor: *USER* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich steig da immer noch nicht so ganz durch bei den ganzen
Interrupts und wie man sie aktiviert und Einsetzt. Habe gerade mal so
den Key-Interrupt durchschaut weil es dazu Beispiele gibt nur bei den
anderen hakts noch etwas. Gibt es da ne gute Seite mit weiteren
Beispielen oder eine auch für Einsteiger ;o) verständliche Anleitung ?

THX

Autor: Peter Kasi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch mal www.m16c.de

Autor: *USER* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke aber soweit bin ich auch schon gekommen ;o)
Naja irgendwo muss es doch einmal eine ordentliche Dokumentation geben
wie man mit C die verschiedenen Interrupts anwendet ... und das in
Verständlich ;o)

Autor: Peter Kasi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Compiler verwendest du denn? Beim den NC30 könnt ich dir ev.
weiterhelfen...

Gruß
Peter

Autor: *USER* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das klingt doch mal nach ner guten Nachricht ;o)
ja, verwende den NC-30 (alte Version - ich glaube das ist die 2er

Autor: Peter Kasi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, für Interrupts ist erstmal die Datei sect30.inc wichtig, dort die
"variable vector section" sowie der Ausdruck "#pragma INTERRUPT
nameDesInterrupts". Um nun eine neue ISR zu schreiben gehst du am
besten folgendermaßen vor: deklariere in deiner headerdatei eine
Funktion
void nameDesInterrupts(void); darunter schreibst du
#pragma INTERRUPT nameDesInterrupts
in der sect30.inc trägst du an die Stelle des gewünschten Interrupts
folgendes ein:
  .glb       _nameDesInterrupts  ;
  .lword    _nameDesInterrupts  ;
(also den Namen der ISR mit Unterstrich) Wichtig hierbei ist es nicht
einfach eine Neue einzufügen sondern die Betreffende zu ersetzten. Hier
kommt es auf die Reihenfolge und Position an. Sie bestimmt bei welchem
Interrupt deine ISR aufgerufen wird. In der Doku gibt es irgendwo eine
Tabelle wo die einzelnen Interrupts swie ihre relativen Positionen
aufgeführt sind. BTW so ein Interruptvektor ist vier Bytes breit. Damit
eine Interruptroutine auch funktioniert muß mind. noch die
entsprechende Priorität eingestellt sein (0..7) wobei 0 den Interrupt
ausschaltet und 7 die höchste Priorität ist.
Um die Interrupts zu aktivieren machst du noch ein
asm( "\tFSET  I");
Noch was, wenn du einen Interrupt innerhalb eines Interrupts ändern
willst solltest du ungefähr sowas machen:
  asm("\tFCLR I");
  asm("\tBCLR 0,0380H"); // hier was du machen willst
  asm("\tnop");
  asm("\tnop");
  asm("\tFSET I");
einfach so z.B einen Interrupt abschalten funktioniert nicht, da der
Compiler einen mov-Befehl draus macht. Hat was mit dem Instructionqueue
zu tun...


Man möge mich ergänzen und berichtigen....

Gruß
Peter

Autor: Harald Hermenau (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

auf der Internetseite von Renesas gibt es die Handbücher zum
C-Compiler, num NC30 und anderes. Das sollte man sich auf jeden Fall
intensiv durchlesen.

Tschüß

Autor: *USER* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir für deine Mühe - bin zwar jetzt auf Anhieb noch nicht ganz
durchgestiegen aber kümmere mich gleich drum wenn ich erst mal ein
anderes Problem gelöst habe ...

Autor: Hugo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ,

den m16c habe ich auch daheim. Interrupts kann ich dir in C erklären.
Es ist nicht so schwer.
Kannst du mir bei Echtzeitprogrammierung weiterhelfen ?
mail mir
herlein67@yahoo.de-

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.