PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : int0 und int1 zusammenschalten? (1x rising, 1x falling edge)



boeseTURBO-CT
10.05.2006, 20: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, 20: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?

Pascal
10.05.2006, 20:12
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, 20:12
Wie wärs mit nem Interrupt bei beiden flanken, und ner if-abfrage ob sie steigend oder fallend war?

mfg gamecounter

uwegw
10.05.2006, 20:12
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, 20: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, 20:18
So hätte ich das jetzt gebaut. Geht das? Können die Wiederstände weggelassen werden (R1 + R2)?

Gruss

Hanni
10.05.2006, 20:36
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, 20: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...)

Hanni
10.05.2006, 20:48
siehe Nachtrag von mir ....