Archiv verlassen und diese Seite im Standarddesign anzeigen : int0 und int1 zusammenschalten? (1x rising, 1x falling edge)
boeseTURBO-CT
10.05.2006, 21:06
Moin,
Hoffe ihr könnt mir helfen. Ich hab hier n Optokoppler, der int0 eines atmega128 auf low zieht, sobald der Optokoppler aktiviert wird.
Ich möchte nun 2 getrennte Interrupts haben. Einmal bei steigender Flanke, einmal bei fallender Flanke.
Kann ich jetzt einfach beide interrupt-pin "kurzschließen" und den einen entsprechend falling edge und den anderen rising edge programmieren?
Viele Grüsse
Jan
boeseTURBO-CT
10.05.2006, 21:08
Würde doche eigentlich reichen, wenn ich vor den beiden interrupt-pins nen 1K-Ohm-Wiederstand mache? Oder kann ich die Wiederstände auch weglassen?
Du kannst doch auch das Signal nur an INT0 anlegen und bei steigender und fallender Flanke einen Interrupt auslösen lassen. Dann muss du in der ISR noch prüfen, ob grad 0 oder 1 anliegt und dann hast du im Prinzip auch deine zwei Interrupts, nur ein wenig eleganter.
gamecounter
10.05.2006, 21:12
Wie wärs mit nem Interrupt bei beiden flanken, und ner if-abfrage ob sie steigend oder fallend war?
mfg gamecounter
Softwarelösung: Den Int auf beliebige Flanke einstellen und dann in der ISR am Anfang prüfen ob der Pin grad high (->steigende Flanke) oder low (->fallende Flanke) ist.
EDIT: drei Leute gleichzeitig dieselbe Idee... zwei kommt ja schon mal vor, aber drei ist ja eher selten... ;)
boeseTURBO-CT
10.05.2006, 21:14
Laut Datenblatt geht das beim ATMEGA nur von Int4 - 7 den int. bei beiden Flanken auszulösen.
Genau das möchte ich ja auch nicht. Möchte für jedes Event einen eigenen Interrupt.
Gruss
boeseTURBO-CT
10.05.2006, 21:18
So hätte ich das jetzt gebaut. Geht das? Können die Wiederstände weggelassen werden (R1 + R2)?
Gruss
Theoretisch geht es auch so:
+5V
|
R
|
Opto o--------- INT 0
|
------ INT 1
€dit:
Laut Datenblatt geht das beim ATMEGA nur von Int4 - 7 den int. bei beiden Flanken auszulösen.
Genau das möchte ich ja auch nicht. Möchte für jedes Event einen eigenen Interrupt.
Gruss
Nuja, das mit de Flanken kann er auch mit INT 0 - 3 ...
aber das nur so nebenbei :D
Nuja, kommt immernoch drauf an, was du in die ISRs reinpacken willst ....
Ansonsten kann auch ich mich nur meinen Vorrednern anschließen.
Ausgangszustand: INT 0 auf fallende Flanke konfigurieren
fallende Flanke:
- INT 0 auf steigende Flanke konfigurieren
- ISR für fallende Flanke durchführen
steigende Flanke:
- INT 0 auf fallende Flanke konfigurieren
- ISR für steigende Flanke durchführen
Die Fallunterscheidung, welche ISR nun dran ist, und wie der INT 0 konfiguriert werden muss, könnte man z.B. mit nem Flag machen, oder man checkt einfach ISC00 in EICRA (wenn gesetzt dann steigende Flanke).
Grüße,
da Hanni.
boeseTURBO-CT
10.05.2006, 21:38
Ist halt die Frage was der Atmega dazu sagt, wenn die beiden Ports ohne wiederstand zusammenhängen (Spannungsdifferenzen können da ja eigentlich nicht auftreten, da ja beides eigentlich Eingänge und somit hochohmig sind...)
siehe Nachtrag von mir ....
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.