mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik gezielt Interrupts bei Bedarf deaktivieren


Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte zwecks Drehzahlmessung (mhere Lüfter) die externen
Interrupts nutzen. Allerdings hat der Mikrocontroller noch einiges mehr
zu schaffen und deshalb möchte ich ihn nicht ständig fordern, indem er
nur Drehzahlen misst. Deshalb würde ich diese externen IRQs bei Bedarf
deaktivieren. Geht das gezielt und wenn ja wie?

P.S.: Ich arbeite mit WinAVR.

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die AVR's haben doch Interrupt Control Register (beim Mega8  z.B. das
GICR), damit werden die externen Interrupts gesteuert.

Wenn du sie nutzen wolltest, musstest du sei doch überhaupt erst einmal
aktiviert haben ;-)

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten geht das, wenn kurzzeitg kein IRQ sein darf in ASM mit

 CLI       ;Clear Global Interrupt Flag.
 .... sonstiger Code
 SEI       ;Set Global Interrupt Flag.

Sollte wärend der Deaktivierung der Interrupts eines der einzelnen
IRQ-Flags z. B. für Int0 oder Pin-Change gesetzt sein wird der
Interrupt nach SEI sofort "nachgeholt".

Gruß
Andi

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi...

Und wenn der Int "nachgeholt" wird, ist der Messwert für die Katz...

Vielleicht ist ja Polling doch die bessere Messmethode? Das Programm
macht einfach seine Arbeit, wenn es dann wieder mal einen Messwert
brauch, dann ruft es ein UP auf, in welchem per Polling der
Impulsabstand (also die Drehzahl) am betreffenden Eingang (muss kein
INT sein) gemessen wird.

In ASM würde ich Timer0 (mit Int) rotieren lassen, der mir den
PWM-Zähler erhöht und bei jedem PWM-Zähler-Überlauf ein Flag setzt,
damit das Hauptprogramm eine Messung (mit Timer1, aber ohne Int)
ausführen kann...

...HanneS...

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange die Int-Ausblendung nicht zu lange dauert, ist das eigentlich
egal, da ja keine extakten Zeiträume gemessen werden sollen, sondern
die Anzahl der Impulse im Schnitt.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christof:
Hmm .. also hilft nur probieren. Da die Anzahl der Impulse ja auch
nichts so sehr hoch ist, könnte das evtl. klappen. Bei 4 Lüftern sind
das 2 Impulse pro Umdrehung und vielleicht 2000 max. 5000 U/min. Das
sind dann max. 170 Impulse pro Sekunde. Das werde ich mal probieren,
wenn alles zusammengebaut ist.

@Thomas:
Guter Tipp! Bei ATmega128 habe ich das auch gefunden. im Register EIMSK
kann man die Interrupts maskieren. Da gibt es dann noch etliche Register
die steuern, wann ein IRQ ausgelöst wird. Steht aber alles in den Dokus,
wenn man jetzt endlich weiß wo. ;)

@Hannes:
Die Idee mit dem Poll ist zwar gut wie einfach. Aber die IRQs habe ich
ohnehin da. Denn kann ich die ja auch irgendwie nutzen. Letztendlich
war die Auswertung dieser ohnehin mit der Timerfunktion geplant. Also
Timer wird gestartet und wenn ich mal "Zeit habe" zum messen werden
sämtliche gezählte IRQs ausgewertet.

@All:
Nett gemeint. Aber mit CLI kann ich nicht wirklich gezielt IRQs
deaktivieren. Das geht ja dann leider nur global.

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.