mikrocontroller.net

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


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast schon recht, ne Drahtbrücke ist gleich eingefügt.

Autor: Thorsten E. (nietzsche)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.