Hallo Habe einen DTMF dekoder an einer Mega 162 CPU die zeichen erkant leitung des DTMF dekoders hängt an int 1. wird ein gültiges zeichen empfangen spring der controler auch in die int rotine dort warte ich auf andere DTMF zeichen. die int leitung wechselt also noch öfters seinen pegel - wenn ich jetzt "reti" mache springt der controler sofort wieder in meine int 1 rotine. wie kann ich verhindern das er sich das merkt das wären der interrupt rotine ein weiterer interrupt ausgefürt wurde ?
Füge an den Anfang Deiner int1 Routine ein "cli" ein und am ende ein "sei" Denke, das sollte das Prob beheben. Gruß, Daniel
ebenso mit das int1 flag vor dem reti noch mal explizit gelöscht werden, indem eine 1 auf dieses zurüchgeschrieben wird.
Ich kenne mich mit Atmel Mega nicht aus, könnte mir aber vorstellen, dass irgendwo Flagbits existieren die sich die aufgetretenen Int´s merken. Die muss man halt vor reti zurücksetzen. Davon abgesehen ist Warten in der ISR schlechter Programmierstil weil alles andere blockiert wird. Dieter
Sagt die "Zeichen erkannt-Leitung" nicht aus, dass genau jetzt ein gültiges Zeichen erkannt wurde? (Ein Zeichen, nicht mehrere) Dann übernimm doch in der ISR nur dieses eine Zeichen und beende sofort mit RETI. Das nächste gültige Zeichen löst dann einen neuen INT aus, in dem du das nächste Zeichen übernehmen kannst. Die einzelnen Zeichen kannst du gut in einem Ringbuffer speichern und nach Ausbleiben weiterer Zeichen auswerten. ...
Hallo Das programm wolte ich jetzt nicht komplett umschreiben und das in der zwichenzeit das hauptprogramm nicht weiterleuft ist uberhaup nicht schlimm.... @mmerten genau so was such ich ja ein register oder bit das ich zurücksetzen kann und die cpu vergessen hat das ein int da war....
hallo Habe es mal mit GICR vsrsucht das hat nicht geholfen aber GIFR habe ich wohl übersehen . Habs auch gleich getestet - und es geht auch so wie ich wollte Danke Danke Danke natürlich auch an die anderen Danke
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.