433 MHz Sendemodul- Interrupt Problem

Hallo liebe Community,

ich bin relativ neu im Thema "Mikrocontroller-Programmierung" und habe ein Problem.

Ich möchte als kleines Projekt eine Übertragung zwischen einem Nano (Sender) und einem Uno (Empfänger) herstellen. Im Endeffekt soll es eine Stoppuhr werden, die über einen Taster gestartet und über einen anderen gestoppt wird. Dazu benutze ich ein Sende- und Empfängermodul und die Bibliothek RCSwitch.

Aufbau: Der Arduino Nano ließt an einem Digitalpin ein, ob der Taster gedrückt wurde. Ist dies der Fall, schickt er über das Übertragungsmodul eine Zahl an den Nano. Das Empfängermodul ist beim Uno an Pin 2 angeschlossen. Weiterhin wird ein Display sowie eine LED angesteuert (über andere Pins natürlich).

Die "normale" Übertragung via Polling funktioniert einwandfrei. Nun möchte ich auf meinem Empfängerboard jedoch- wie oben bereits angedeutet- auch ein LCD-Display und im späteren Verlauf noch weitere Komponenten steuern.

Durch die Polling-Abfrage ist es nun der Fall, dass nicht jedes Signal erfasst wird, da der Controller zum Beispiel mit der Ansteuerung des LCD-Displays beschäftigt ist.

Mein Lösungsansatz: Ich sende nichts, außer wenn der Taster gedrückt wird. Mein Empfängermodul schließe ich an einen Interruptpin des Unos an und lasse diesen bei einer steigenden Flanke oder High in die ISR springen.

Leider springt der Controller ununterbrochen in die ISR. Ich habe einmal in den Quellcode der Libary geschaut. Laut dieser werden die Anzahl der Bits und dann die Bits selbst übertragen. Warum springt dann mein Uno auch in die ISR, obwohl nichts gesendet wird?

Vielen Dank im Voraus! Grüße Arduirsi

Arduirsi: Warum springt dann mein Uno auch in die ISR, obwohl nichts gesendet wird?

Ganz einfach, weil der Empfänger immer ein Signal liefert, nämlich Rauschen und das startet deinen IRQ.

Edit: Im übrigen, wenn du den vorgeschriebenen Pin #2 für den Empfänger verwendest, ist das der Interrupt0 und somit schon das was du willst.

Und wenn du deinen Sketch nicht blockierend aufbaust, funktioniert alles prima, auch mit Display.

Notfalls musst du deine Informationen mehrfach aussenden.

Allerdings ist eine Funkübertragung mit diesen Modulen für eine Zeitkritische Anwendung eine schlechte Lösung.

...die einfachen 433MHz Sendern/Receivern sind absolut nicht zu empfehlen.

Für nur wenige € mehr, gibt es Transceivern, die die ganze Logik "im Bauch" haben und kein imingproblem machen.

kulturbereicherer: Link

Der bleibt lieber schön geheim.

Arduirsi: Mein Lösungsansatz: Ich sende nichts, außer wenn der Taster gedrückt wird. Mein Empfängermodul schließe ich an einen Interruptpin des Unos an und lasse diesen bei einer steigenden Flanke oder High in die ISR springen.

Hast du denn mal mit einem Oszi am Empfänger-Ausgang gemessen, was da raus kommt ?

Wäre schön, wenn du noch Infos lieferst.