1 Taster an 2 Pins(PD7 & INT0) für Interupt

Gast #1269489
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!
Gast #1269492
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.
Gast #1269517
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
Gast #1269519
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!
#1269525
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
Gast #1269539
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.
#1269865
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
Gast #1269931
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?
Gast #1269959
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... ;-)

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren