Forum: Mikrocontroller und Digitale Elektronik 1 Taster an 2 Pins(PD7 & INT0) für Interupt


von Peter (Gast)


Lesenswert?

Hallo liebe U-Controller Freunde,
ist es möglich, wie ich mir das denke,
Ich hab 1x Taster (Low Active, über Widerstand) an PD7 ganz normal 
angeschlossen und funktioniert auch. Nun will ich den Taster parallel an 
einen 2ten Pin des Atmega8 hängen und zwar den Externen Interupt PIN 
INT0.

So dass im programm folgendes möglich ist ->

( normaler Programmbereich )
-keine Interupt freigabe
Taster wird normal über Eingang PD7 abgefragt

( spezielle Programmbereich )
- Interupt freigabe erteilt
Taster löst einen Interupt aus (PD7 ignorieren)


Ist dies Möglich bzw. Sinnvoll?(Alle Timer werden anderweitig benutzt)
Und funktioniert das auch, so wie ich das geschildert hab?

Vielen Dank für eure Hilfe!

von kurz (Gast)


Lesenswert?

Wenn Dein Programm vernünftig geshrieben ist, so wirds auch 
funktionieren.
Resourcen-Verschwendung ists allemal.

Häng den Taster nur an den Interrupt-Eingang, den kannst sicher auch 
abfragen, wenn die Interrupts gesperrt sind.

von Peter (Gast)


Lesenswert?

Danke Kurz,
der Taster hängt im Moment an PD7 ganz normal als Eingang.
Ja Ressourcen verschwendend mag es sein, aber immer noch Besser 
(einfacher)
als wenn die Ressource gar nicht genutzt wird.

von kurz (Gast)


Lesenswert?

Hast schon recht, ne Drahtbrücke ist gleich eingefügt.

von Thorsten E. (nietzsche)


Lesenswert?

Du kannst den Taster einfach an den INT0 Pin hängen, in dem 
Programmabschnitt, in dem du den Interrupt gesperrt hast, kanns du den 
Taster "normal" abfraen, ohne ihn an einen zweiten Pin zu hängen...

Warum Hardwarewaufwand betreiben, wenn nicht nötig?

von sam (Gast)


Lesenswert?

beim attiny2313 ist der int0 gleichzeitig auch PD2 ... und da ist es 
total egal ob interrupts ausgelöst werden oder nicht... PD2 ist immer 
abfragbar.

wenn du einen andern pin an den int0 mit anschließt hast du aber die 
möglichkeit per software einen hardwareinterrupt auszulösen :P

von Peter (Gast)


Lesenswert?

^^ also funktioniert das so wie ich denke :-)
sehr schön.
Und ob ich jetzt umlöte oder eine Brücke ziehe, sprich in parallel an 
einen 2ten Pin hänge, ist ja egal. vllt. ist es so eindeutiger, 
ersichtlicher, weniger verwirrend wenn PD7 abfrage und INTO als Interupt 
nehme.( 2 verschiedene Pins)

Aber alles in allem,es würde Funktionieren. Ausgezeichnet!

von Peter D. (peda)


Lesenswert?

Wenn Du nicht nur Tastendrücke, sondern auch Störungen empfangen willst 
(elektrostatische Aufladung, Schalten von Leuchtstoffröhren, Motoren 
usw.), dann ist der Interrupt genau richtig.

Wenn Du allerdings die Taste noch entprellen mußt und Flankenerkennung, 
dann ist der Interrupt witzlos.

Wer sich das Leben leicht machen will, der nimmt nen Timerinterrupt zum 
Tasten einlesen.


Peter

von Peter (Gast)


Lesenswert?

Hey Namensfetter(peda),

als ob du es wusstest: Es hängt eine CCFL an der Schaltung. Und ja ich 
muss den dann entprellen.
Aber warum ist es dann witzlos?

Es geht in meinen Fall darum
das ich:
1. Alle Timer schon benutze
2. nur >1< Taster hab
3. Trotz einen Taster ,der Normal benutzt wird, außerdem das Programm an 
gewissen stellen sofort und unverzüglich "unterbrechen" will -> 
Interupt.


Außerdem hätte ich gerne das er länger drücken oder mehrmaligen drücken 
auch erkennt. Aber wie ich das genau realisiere weiß ich noch nicht.

von Peter D. (peda)


Lesenswert?

Peter schrieb:
> 1. Alle Timer schon benutze

Das sagen alle.
Man muß mal genauer hinschauen. In der Regel brauche ich immer nur einen 
Timer und der macht dann sämtliche Zeitsteuerungen (LED-Multiplex, 
Tastenabfrage, Uhrzeit/Datum, Blink-LEDs ...).


> 3. Trotz einen Taster ,der Normal benutzt wird, außerdem das Programm an
> gewissen stellen sofort und unverzüglich "unterbrechen" will ->
> Interupt.

"sofort" ist für nen Menschen etwa 500ms. Ein Timerinterrupt von 10ms 
ist für nen Menschen also viel schneller als "sofort".


> Außerdem hätte ich gerne das er länger drücken oder mehrmaligen drücken
> auch erkennt. Aber wie ich das genau realisiere weiß ich noch nicht.

Da gibts doch schon was fertiges:

Beitrag "Universelle Tastenabfrage"


Peter

von Peter (Gast)


Lesenswert?

Hey danke Peda,
aber ich nutze, wie ich gerade feststelle, wirklich alle 3 Timer für 
PWM... :(
Wäre echt ne sehr feine Sache gewesen mit deiner "Universelle 
Tastenabfrage".
Der Atmega8-16 hat doch nur 3 Timer oder?

von Hannes Lux (Gast)


Lesenswert?

> aber ich nutze, wie ich gerade feststelle, wirklich alle 3 Timer für
> PWM... :(

Auch ein für Hardware-PWM genutzter Timer kann nebenher noch einen 
Überlauf-Interrupt auslösen... ;-)

...

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
Noch kein Account? Hier anmelden.