www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mehrere Interups an einem int


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich muss an einem mega16 an int1 zwei interuptauslöser
anschliessen.Ich muss deswegen,weil alle anderen  schon belegt sind.
Die zwei auslöser lösen den interupt durch steigende flanke aus.
Soweit läuft das auch alles.
Nun mein Problem:Wie kann ich feststellen,welcher der beiden den 
Interupt ausgelöst hat.Ich habe an portd nur noch einen pin frei.
Hat jemand eine Idee,wie ich das Hardware seitig hinbekomme.

Danke im voraus.
Andy

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Signal lang genug ist, würde ich einfach eine der beiden 
Signalleitungen mit auf den PortD legen. In der ISR fragst du dann 
einfach den Pegel ab. Ist er H, wars das Signal, welches parallel mit 
auf dem Port liegt, ansonsten wars das andere Signal. Dumm wäre der 
Zustand, wenn beide gleichzeitig kämen, dann würde die Routine immer nur 
auf das an PortD mit anliegende Signal reagieren. Hm, grübel...

Sven

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die antwort.
Es handelt sich bei den auslösern um Türkontakt,die bei geöffneter Tür
ebenfalls öffnen,bei geschlossener Tür hängt die leitung an GND.
Int1 ist mit einem 10k Widerstand auf 5V und ist somit bei geschlossener 
Tür
auf low.Das Problem ist eben,es hängen 2 Von diesen Kontakten in 
seperaten Schleifen an int1.
Wie kann ich die bloss unterscheiden ,grübel seit vielen Stunden

Andy

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mechanische Schalter hängt man nicht direkt an Interrupt-Eingänge, 
sondern man fragt sie periodisch z.B. in einem Timer-Interrupt ab. Siehe 
Artikel Entprellung.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mehrere flankengetriggerte Interrupts zusammen an einem Pin - das geht 
nur gut wenn man sich sicher sein kann, dass nie mehrere Ereignisse 
zeitnah drohen, weil sonst gern mal einer über Bord geht. Wobei man in 
dem Fall dann meist schon weiss welcher es sein muss.

Problemlos funktioniert es hingegen mit pegelgetriggerten Interrupts.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn das Türkontakte sind, würde ich das nicht über Interrupt 
machen, sondern pollen. Und dann kannst du den einen TK an den einen Pin 
hängen und den anderen TK an den anderen Pin. Eine Abfrage alle 10ms 
sollte da vollkommen reichen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, Taster als Interruptquelle kann schon sinnvoll sein: um den 
Kollegen aus dem Schlaf zu reissen. Man muss das Prellen halt mit 
berücksichtigen.

Wenn du den Pin an Port D mit einem an Port A tauschen kannst, dann 
kannst du verschiedene Taster mühelos per ADC unterscheiden. Der eine 
hat einen Serienwiderstand, der auf 1V runterzieht, der andere keinen 
und zieht auf 0V.

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die Antworten.Das mit dem entprellen habe ich schon 
beachtet.Wird ein Interupt ausgelöst,wird mit einem Timer 4 mal geprüft 
ob das Signal stabil anliegt.Wie gesagt,ich habe noch einen Pin frei und 
würde das
schon gerne über Interupt laufen lassen.
Keiner eine idee,wie ich einen von den beiden zusätzlich auf den anderen 
pin laufen lassen kann und damit sicher bestimmen kann,welcher ausgelöst 
hat.
gruss
Andy

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft ähnlich. Einer der beiden Taster kriegt einen Serienwiderstand, 
mit dem der Pin wenn gedrückt auf 1V kommt, der andere hat keinen. Der 
zusätzliche Pin hängt mit einem Widerstand dran und zieht, wenn als 
Ausgang auf 1 (sonst Eingang) zusätzlich hoch, so dass bei dem Taster 
mit Widerstand dann nicht mehr 1V sondern 4V rauskommt. Beim Taster ohne 
Widerstand ändert der jedoch nix.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Diode geht's natürlich auch. Einer der Taster hängt direkt an dem 
Port D Pin, und hat eine Diode zwischen sich und dem Interrupt-Pin.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wird mit einem Timer 4 mal geprüft ob das Signal stabil anliegt.

Warum lässt Du den Timer dann nicht einfach ständig laufen, um davon 
gesteuert die Tasten permanent z. B. alle 20 ms abzufragen?  Ist doch 
viel einfacher.  Die zusätzliche Rechenzeit dafür ist völlig peanuts. 
Ich kenn Dein Projekt zwar nicht, aber ich behaupte mal, die CPU-Last 
würde sich bei Dauer-Polling so beispielsweise von 1.36 % auf 1.38 % 
erhöhen - wow.

>Wie gesagt,ich habe noch einen Pin frei und würde das
>schon gerne über Interupt laufen lassen.

Tasten über Interrupts laufen lassen, um sie dann mit einem Timer zu 
entprellen, halte ich für unnötig umständlich, wenn man die Sache 
stattdessen genausogut ganz über den Timer abwickeln kann.

>Keiner eine idee,wie ich einen von den beiden zusätzlich auf den anderen
>pin laufen lassen kann

Was für nen "anderen Pin"?  Wieviele Pins hast Du jetzt noch frei - 
einen oder zwei?  Für zwei Tasten an einem Digital-Pin gibt es keine 
(einfache) Lösung.  Zeig mal den Schaltplan Deines Projekts. 
Möglicherweise lässt sich was finden, wodurch ein Portpin frei wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.