Frage zu Interrupts mit Arduino?

OP #7507423

Hallo, in einem Programm werden 2 Pin mit PCSMK0 = 0b00000101 im Mode Change aktiviert. Ich würde das gerne in Rising ändern. Ich habe das Programm nicht geschrieben und auch wenig Ahnung von Arduino. Kann mir jemand einen Rat geben? Das Programm ist für den Nano oder den Pro Mini. MfG Hans

Dann ist das Wörtchen Arduino im Betreff wenig zielführend, das lockt nicht gerade zuerst die Leute an die sich damit auskennen. Entweder Du postest den Code, oder Du wartest noch ein bisschen auf denjenigen der auch ohne den Code sofort erkennt wie Du PCSMK0 setzen musst.

Hans L. schrieb:

Kann mir jemand einen Rat geben? Das Programm ist für den Nano oder den Pro Mini. (...) das scheint eine Art Inlineassembler oder Registerprogrammierung zu sein.

In solchen Fällen identifiziert man am besten erstmal den verwendeten Controller (bei Dir vermutlich der ATmega 328P) und schaut dann direkt in dessen Datenblatt mit den Registerbeschreibungen.

Dort steht (wie schon von Sebastian erwähnt), dass der Pin-Change-Interrupt bei jedem Signalwechsel am Pin ausgelöst wird. Der Controller hätte aber auch 2 externe Interrupt-Eingänge, bei denen man sich die Flanke aussuchen kann. Aber dafür müsste man dann auch die dafür vorgesehenen Pins benutzen. Keine Ahnung, ob das für Dich in Frage kommt.

Hans L. schrieb:

in einem Programm werden 2 Pin mit PCSMK0 = 0b00000101 im Mode Change aktiviert. Ich würde das gerne in Rising ändern. Ich habe das Programm nicht geschrieben und auch wenig Ahnung von Arduino. Kann mir jemand einen Rat geben? Das Programm ist für den Nano oder den Pro Mini.

In PCMSK0 aktiviert Bit 0 PCINT0 auf PB0 (Arduino Pin D8), und Bit 2 aktiviert PCINT2 auf PB2 (Arduino Pin D10). Pin Change Interrupts wie PCINT0 und PCINT2 triggern auf jeden Pin Change und lassen sich nicht, wie die speziellen INT0 und INT1 Pins, hardwaremäßig auf RISING oder FALLING beschränken. Wie Sebastian R. oben beschreibt ließe sich so etwas aber in Software lösen.

LG, Sebastian

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.