Frage zu Interrupts mit Arduino?

OP #7507423
Lesenswert?

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

#7507437
Lesenswert?

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.

#7507516
Lesenswert?

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.

#7507518
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren