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!
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.
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.
Hast schon recht, ne Drahtbrücke ist gleich eingefügt.
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?
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
^^ 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!
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
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.
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
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?
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.