Hi! Ich habe leichte Schwierigkeiten mit den externen Interrupts. Folgendes möchte ich machen. Ein vergleiche 2 Spannungen mit jeweils einem Komparator. Insgesamt habe ich 8 Komparatoren. Wird eine der Spannungen größer als die andere an einem Komparator bekomme ich natürlich ein 5V Signal, welches mir jeweils an den INTx Pins einen Interrupt bei steigender Flanke erzeugen soll. Dadurch soll einfach per UART ein String ausgegeben werden. Bei INT0 - INT3 funktioniert das hervorragend. Bei INT4 - INT7 hingegen nicht, da sowohl bei der steigenden Flanke als auch bei der fallenden Flanke ein Interrupt generiert wird und somit da immer das doppelte gesendet wird. Es wird sicherlich daran liegen, daß Interrupts an INT0-INT3 asynchron und INT4-INT7 synchron detektiert werden. Aber was das so genau heissen soll weiß ich nicht und wie ich das hinbekomme dass es funktioniert wie es soll. Kann mir jemand einen Tipp geben? C Code ist im Anhang. Danke
Hast Du vielleicht den PORT E als Ausgang geschaltet? Damit legst Du Dir ja dann automatisch den Input auf High. Die Syncron und Asyncron bezieht sich wohl auf die Systemclock. INT 4:7 wird syncron mit der Systemclock ausgelesen. Und ohne Systemclock kein Interrupt...deswegen kann man nur mit Int0:3 den µC aus dem Schalf holen. Warum das so ist!? keine ahnung!...wird sicher was mit den Resourcen zu tun haben. Aber sicher nichts mit Deinem Problem Gruss Ralf
Nein, Port E ist Eingang bzw. die Interrupt Pins (DDRE = 0x03;) Aber dennoch ist es merkwürdig, dass bei der Einstellung "nur auf steigende Flanke Interrupt auslösen" sowohl steigende als auch fallende Flanke einen Interrupt auslöst... Wieso nur???
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.