Forum: Mikrocontroller und Digitale Elektronik int 1 problem


von condor (Gast)


Lesenswert?

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 ?

von Daniel Nöthen (Gast)


Lesenswert?

Füge an den Anfang Deiner int1 Routine ein "cli" ein
und am ende ein "sei"

Denke, das sollte das Prob beheben.


Gruß,
Daniel

von condor (Gast)


Lesenswert?

nein das geht leider auch nicht

von mmerten (Gast)


Lesenswert?

ebenso mit das int1 flag vor dem reti noch mal explizit gelöscht
werden,
indem eine 1 auf dieses zurüchgeschrieben wird.

von dds5 (Gast)


Lesenswert?

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

von ...HanneS... (Gast)


Lesenswert?

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.

...

von condor (Gast)


Lesenswert?

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....

von mmerten (Gast)


Lesenswert?

Bit 7 im GIFR, steht aber alles ausführlich im Datenblatt

von condor (Gast)


Lesenswert?

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