Eine komplizierte Frage aus reinem Interesse: Beim Atmel AVR funktioniert die Flankenerkennung bei externen Interrupten nicht, wenn der Controller in den Schlafmodus Power-Down geht. Allerdings gibt es seit einer Weile den Pin-Change-Interrupt (PCI), bei der der Controller nach jeglichem Wackeln an den Eingängen selbst noch aus Power-Down aufwacht. Nun habe ich die Problemstellung, das ich den Schlafmodus Power-Down wegen Batteriebetrieb nutzen möchte aber die Software-mäßige Flankenerkennung in der PCI-ISR aus zeitkritischen Gründen eher vermeiden möchte. Daher meine Frage, ob der externe Interrupt als fallende Flanke auslöst, wenn vor dem Schlafengehen der Eingang auf Highpegel lag und nach dem aufwachen selbiger sich auf Lowpegel befindet? Soweit sei verraten das der Interrupt ausgelöst wird, jedoch bin ich mir nicht sicher, ob es eventuell durch das Schalterprellen geschieht und dann je nach Fertigungsstreuung mal geht und mal nicht. (Obwohl das auch nicht soviel macht, denn dann muss man halt den Drehimpulsgeber zwei ticks bewegen) Bin mal gespannt, ob da jemand eine Antwort darauf kennt.
> Beim Atmel AVR funktioniert die Flankenerkennung bei externen > Interrupten nicht, wenn der Controller in den Schlafmodus Power-Down > geht. Das stimmt so allgemein (z.B. für den 644) nicht. Um welchen Typ geht es?
Im Datenplatt steht das aber anderst, nämlich mit Fußnote und dem Hinweis auf Level-Auslösung also keine Flankenerkennung.
Ja der kann bloß auf low oder high level reagieren.... aber achtung: konfigurierst du den interrupt auf low und schliesst einen schalter an der den pin auf low zieht und der interrupt sehr schnelll zuende ist, dann löst er noch mal aus du solltest also am ende warten bis der pin wieder high ist und dann den interrupt "beenden"
Ernestus Pastell schrieb: > Nun habe ich die Problemstellung, > das ich den Schlafmodus Power-Down wegen Batteriebetrieb nutzen möchte > aber die Software-mäßige Flankenerkennung in der PCI-ISR aus > zeitkritischen Gründen eher vermeiden möchte. Hä ??? Aus dem Power-Down braucht der AVR je nach Taktquelle eh ne ganze Weile, um den CPU-Takt zu stabilisieren. Da fallen die popeligen 2/3 Zyklen, um nen Pin zu testen (SBIS+RJMP) überhaupt nicht auf. Peter
> Hä ??? > > Aus dem Power-Down braucht der AVR je nach Taktquelle eh ne ganze Weile, > um den CPU-Takt zu stabilisieren. > Da fallen die popeligen 2/3 Zyklen, um nen Pin zu testen (SBIS+RJMP) > überhaupt nicht auf. > > > Peter Jetzt ist mir nicht ganz klar worauf du hinaus willst. Das zeitkritisch bezieht sich auf die Abarbeitung des Interrupt in Normalbetrieb. Ein Drehimpulsgeber kann auf Low hängen, denn dann funktioniert die Sache mit dem Level-Interrupt mit Power-Down nicht mehr und die Batterie ist nach einigen Wochen leer.
Hi >Jetzt ist mir nicht ganz klar worauf du hinaus willst. Er meint den PIN-Change-Interrupt. >Das zeitkritisch bezieht sich auf die Abarbeitung des Interrupt in >Normalbetrieb. Drehgeber und Interrupt? MfG Spess
Ernestus Pastell schrieb: > Jetzt ist mir nicht ganz klar worauf du hinaus willst. Das zeitkritisch > bezieht sich auf die Abarbeitung des Interrupt in Normalbetrieb. Auch für nen normalen Interrupt sind 2/3 Zyklen nur Pinats. Schon ein leerer Interrupt kostet 10 Zyklen, mit Prolog,Epilog 30 Zyklen (AVR-GCC). Außerdem kann man beide Aufgaben trennen: Pinchange zum Aufwachen, externer Interrupt im Betrieb. Peter
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.