mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Int0 und Int1: Einfluß auf das gesammte Programm?


Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich will int0 und int1 als interupt für externen takt benutzen,
um eine high/low flanke auszuwerten. ich frage mich aber,
was passiert wenn bis zu 3000 flanken pro interrupt in der sek
ausgelöst werden.

also was passiert mit dem restlichen bascom-programmcode (lcd-anzeige,
diverse berechnungen etc) wenn "andauernd" (also teilweise bis zu
3000 mal in der sek ) INT0_isr und INT1_isr bei meinem mega16 mit 8MHZ
angesprungen wird. wird da noch was verarbeitet und ist der prozessor
nur in den beiden interrupt-routinen?

wie ist das eigentlich überhaupt, wenn gerade INT0_isr abgearbeitet
wird und INT1 ausgelöst wird? wird erst INT0_isr abgearbeitet und dann
INT1_isr angesprungen oder gleich INT1_isr?

besten dank

Micha

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die erste frage kannst nur du beantworten da niemand weiß was alles in
deiner ISR steht.

alles andere sollte im datenblatt stehen!

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so isses, aber:
6000 Ints/s -> im Schnitt alle 166µs einer, bei 8MHz hast du also
jeweils rund 1300 Takte zwischen den einzelnen Interrupts, das reicht
also auf jeden Fall ersteinmal.
Interessant wird es, was du in der ISR machst. Wenn du da die 1300
Takte vertrödelst, reicht es natürlich irgendwann nicht mehr. Zur
eigentlichen Bearbeitungszeit kommen immer noch Aufruf, Retuung
diverser Register, Wiederherstellung, Rücksprung. Das ist sozusagen
"tote" Zeit. Manche Compiler gehen da recht rigeros vor und retten
alles mögliche, auch wenn es in der ISR gar nicht gebraucht wird. Da
hilft dann, die automatische Rettung auszuschalten und das per
Inline-Assembler zu machen, ist aber nichts für Anfänger.
Ich sage einfach mal: du hast gar kein Zeitproblem.

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls Du weißt, wie lang (wieviele Befehle) die Interruptroutine ist,
kannst Du es ausrechnen. Bis auf ein paar Ausnahmen wird ein Befehl pro
Takt verarbeitet.
Wurde ein Interrupt ausgelöst, wird das Interrupt-Flag gelöscht, d.h.
es kann kein weiterer Interrupt ausgelöst werden, bis der RETI Befehl
ausgeführt wird. Wird ein Interrupt ausgelöst, während ein anderer
schon ausgeführt wird, dann merkt der Controller sich das und führt ihn
aus, sobald der erste beendet ist.
Genaueres, wie schon erwähnt, gibts in den Datenblättern.

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder ich setze das Interrupt-Flag selber wieder am Beginn der
Interruptroutine, so das diese dann durch weiter, möglicherweise
wichtigere Interrupts unterbrochen werden kann.
Ich mache das so mit einem TimerInt (nur Tastenabfrage), der durch den
UART-Int unterbrochen werden darf, da mir dieser wichtiger ist.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im isr wird einfach eine variable um den faktor eins erhöht, also eine
zeile code mit einem befehl und einer variable

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
null problemo, siehe oben.

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.