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
:
Verschoben durch Moderator
suche nach FALLING und ersetze durch RISING
1 | #include <PinChangeInterrupt.h> |
2 | void setup() |
3 | {
|
4 | pinMode(PIN, INPUT); |
5 | attachPCINT(digitalPinToPCINT(PIN), BTN_ISR, RISING); |
6 | }
|
Das habe ich auch gelesen. Aber das scheint eine Art Inlineassembler oder Registerprogrammierung zu sein.
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.
PCMSK steht für Pin Change Mask. Das lässt sich nicht ändern, das Register gibt nur an, welche Pins den Interrupt auslösen können. Du musst in der ISR prüfen, ob nach Sprung in die Routine der Pin high ist, dann war es eine steigende Flanke.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.