Hy
ich kommuniziere zur Zeit zwischen zwei RFM12 und dem Code von Benedikt.
Das ganze funktionert perfekt aber wollte mal testen, wenn der Slave
z.B. durch Störungen nicht antwortet. habe ihn daher für 10 Sekunden
ausgeschaltet....
Leider sendet mein Master, nachdem er einemal keine Antwort vom Slave
bekam nix mehr (erst wieder nach reset des Master)
Damit er nicht dort hängen bleibt und ewig wartet habe den Timer. Dieser
wird vor der Empfangsfunktion immer Timer =0 gesetzt. Das Timer zählt
per ISR hoch nach 5 Sekunden bricht er mit break ab siehe Code....
Das Programm läuft wunderbar in einer Schleife aber er sendet einfach
nicht mehr, sobald einmal keine Antwort kam. Das ist dann leider das
Ende der Kommunikation da ohne Befehl keine Antwort mehr vom Slave :D
das habe ich hinzugefügt:
1 | void rf12_ready(void)
|
2 | {
|
3 | cbi(RF_PORT, CS);
|
4 | while (!(RF_PIN&(1<<SDO))) // wait until FIFO ready
|
5 | {
|
6 | if (Timer > 10)
|
7 | {
|
8 | error=1;
|
9 | break;
|
10 | }
|
11 | }
|
12 | }
|
habe auch versucht, nachdem der Master nichts mehr vom Slave bekommen
hat vor dem nächsten Sendeversuch einfach die komplette INIT() des RFM12
neu durchlaufen zu lassen aber es kommt nichts mehr!! kann mir jemand
erklären woran das liegt? er nach dem reset des Master geht alles wieder
wunderbar. (slave unverändert)