Forum: Mikrocontroller und Digitale Elektronik RFM12 Biwait Problem


von Lukas BD (Gast)


Lesenswert?

Hallo,

ich nutze das RFM12 Modul am Atmega 32 und programmiere in Bascom.  Ich 
habe eine Receive-Routine, die per Interrupt aufgerufen wird, sobald 
Daten empfangen werden. In dieser Receive Routine kommt nun "Bitwait" 
vor. Nun ist es (selten, aber eben manchmal) so, dass nach dem Auslösen 
eines Interruptes, das Programm bei Bitwait stoppt, weil kein Signal 
mehr anliegt.

Um dies zu beseitigen dachte ich mir, vor Biwait einen Timer (ISR) zu 
starten. Der Timer wird direkt nach Bitwait wieder deaktiviert. Wenn der 
Timer nun z.b. 400ms gezählt hat, so ist damit klar, dass das Programm 
bei Bitwait hängt. Nun möchte ich, dass dann aus der Timer ISR 
gesprungen wird und nach Bitwait weiter gemacht wird. Gibt es die 
Möglichkeit z.b. den Pointer Stack zu manipulieren, damit die Timer ISR 
nach Ablauf der 400ms hinter Bitwait weiter macht? Oder gibt es 
vielleicht eine bessere Alternative? Auf Bitwait verzichten geht leider 
nicht.

von auch interessiert (Gast)


Lesenswert?

mach doch direkt einen counter in deine bitwait, warte halt bis der 
counter =0 ist.? wenn der counter 0 wurde, setze ein flag, und hüpf 
raus. musst natürlich noch das flag prüfen, in der übergeordneten 
anwendung.

von Lukas BD (Gast)


Lesenswert?

Bitwait ist ein einziger Befehl in Bascom. Dieser stoppt das Programm 
solange, bis an dem entsprechenden Port in meinem Fall ein Signal "high" 
ist. Wie soll dort ein Counter integriert werden?

von auch interessiert (Gast)


Lesenswert?

keine ahnung, kenne bascom nicht =)

dann bau dir halt eine funktion die auf den zustand des bits wartet, 
oder darauf das der counter =0 wird. das müsste bascom doch können?

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
Noch kein Account? Hier anmelden.