www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller 2 Interrupts gleichzeitig aufrufen


Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

kennt jemand einen Mikrocontroller, mit dem 2 Interrupts gleichzeitig 
aufgerufen werden können ?

Arbeite mit den PICs und stosse mit denen jetzt an die Grenze.




Gruß
Marko

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie soll denn das gehen? Mir ist noch kein MC bekannt, der wirklich 
parallel Code ausführen kann. Alles quasiparallel. Wenn , dann durch 
Software.

Den Interrupts sind Prioritäten zugeordnet. Ist der Interrupt höherer 
Priorität abgearbeitet, wird der niedrigere wartende Interupt 
schließlich auch ausgeführt. Das klappt eigentlich immer, es sei denn, 
Deine Interrupts gleicher Priorität überholen sich selbst. Kann es das 
wirklich sein?

Grüße
Oliver

Autor: HDW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube, der pic hat nur einen teil, der durch interupt aufgerufen 
werden kann.

das ist der, der ab Adresse 4 im speicher steht.
der kann zwar durch viele arten ausgelöst werden, aber wohl nur ein teil 
kann aufgerufen werden.

du kannst aber wenn du den interupt auslöst, z.b. am portb, gleichzeitig 
ein flag setzen, das dann in der interupt-routine abgefragt wird. ist 
das flag H, so wird der interupt-teil ausgeführt, der mit portb in 
zusammenhang steht. ist es L, irgenwas anderes.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@HDW
Oh ha! Das grenzt an Selbstkasteiung! Gibt es wirklich noch einen Grund, 
PICs zu benutzen? Der einzige PIC, der mir noch ins Haus kommt, ist 
namengleiche Wurst. Die beste seiner Art, wie ich behaupten möchte.

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich danke allen für die schnellen Antworten.

Im Nachhinein ist mir eingefallen , dass das gar nicht funktionieren 
kann.

Muss wohl das Programm umstrukturien, dass das Timing der Interrupts 
stimmt.

Danke

Marko

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Praxis muß man immer damit rechnen, daß mehrere Interruptquellen 
gleichzeitig ansprechen.


Da gibt es mehrere Lösungen:


1.
Alle Interrupthandler sind so kurz, daß die Verzögerung durch andere 
Interrupthandler nicht stört.


2.
Lange dauernde Interrupts bekommen eine niedrige Priorität, d.h. sie 
können durch höher priorisierte unterbrochen werden.
Das geht jedoch nicht bei PIC / AVR sondern z.B. beim 8051.


3.
Es wird in Software eine unterschiedliche Interruptpriorität realisiert.
Dazu müssen jedoch alle Interruptquellen eigene Interruptfreigabebits 
und Interrupt-Pending-Bits und möglichst auch eigene Interruptvektoren 
haben.

Daazu müssen in sämtlichen niedrig priorisierten Interrupts alle niedrig 
priorisierten Interrupts gesperrt werden und der globale Interrupt 
wieder freigegeben werden.

Ab dann sind nur noch die höher priorisierten Interrupts freigegeben und 
werden somit vorrangig behandelt.
Aber durch die eigenen Interrupt-Pending-Bits geht trotzdem kein niedrig 
priorisierter Interupt verloren.

Beim Verlassen jedes niedrig priorisierten Interrupts muß das Ganze 
natürlich wieder zurückgestellt werden.

Eine 2. Priorität in Software stellt also einen nicht unerheblichen 
Kodeaufwand dar.


Da die AVRs aber relativ fix sind, habe ich bisher immer Lösung 1 
verwendet.
Floating Point Berechnungen oder lange Wartezeiten (>100µs) macht man ja 
auch niemals innerhalb eines Interupts.



Peter

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.