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