www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stromstoßschaltung mit mega8515


Autor: Dennis Brenzel (danrulz81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich überlege gerade, wie ich eine Stromstoßschaltung mit meinem µC 
realisieren kann. Ich möchte mit dem Taster 1 die LED einschalten, und 
beim nächsten drücken soll sie aus gehen. Mein Gedankengang liegt 
momentan so:
Wenn Taster 1 gedrückt und LED 1 aus
      dann LED 1 an
      ansonsten LED 1 aus
Wenn Taster 1 gerückt und LED 1 an
      dann LED 1 aus
      ansonsten LED 1 an
und wiederholen
Bin ich da auf dem richtigen Weg?

Autor: I. L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bin ich da auf dem richtigen Weg?

- jo das passt



Gruß Knut

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Taster 1 erneut gedrückt wurde dann
  LED_Port = LED_Port EXOR LED_Bit

Autor: Dennis Brenzel (danrulz81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brauch ich das Exclusiv Oder wirklich? Das kann ich doch auch mit Und - 
Abfragen machen, oder nicht?

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dennis Brenzel schrieb:
> Brauch ich das Exclusiv Oder wirklich? Das kann ich doch auch mit Und -
> Abfragen machen, oder nicht?

Man kann das EXOR auch mit NAND nachbilden.

Da ich aber (aufgrund edes Betreffs) davon ausging, dass Du es auf einem 
AVR realisieren willst, erinnerte ich halt an den einfacheren Weg. Der 
sieht etwa so aus:

- Eine ordentliche Tastenentprellung mit Flankenerkennung detektiert den 
neuen Tastendruck. Dadurch ist sichergestellt, dass die Taste 
zwischendurch losgelassen wurde. Einzelheiten dazu gibt es im Artikel 
Entprellung.

- Danach wird der LED-Port eingelesen, mit Key_Press EXOR verknüpft, zum 
LED-Port zurückgeschrieben und die Bits in Key_Press wieder gelöscht, da 
die Arbeit ja getan ist.

Das Ganze funktioniert dann mit 8 Bits (8 Taster, 8 LEDs) gleichzeitig 
und braucht im Timer-Interrupt (Aufruf alle etwa 20 ms) nur um die 20 
CPU-Takte Rechenzeit. Mit anderen logischen Verknüpfungen wird das 
unzuverlässiger und komplizierter.

Autor: Dennis Brenzel (danrulz81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
O.k., das klingt plausibel.

Autor: Dennis Brenzel (danrulz81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich bei einer EOR Verknüpfung 0 bekomme, wird doch das Z-Flag 
gesetzt. Wenn ich bei einer AND-Verknüpfung 0 bekommen, wird auch das 
Z-Flag gesetzt.
Mit einer BREQ-Abfrage springt er an eine Marke, wenn das Z-Flag gesetzt 
wird, ansonsten wird der Befehl übersprungen. Und wenn ich eine 
BRNE-Abfrage mache, springt er an eine Marke, wenn das Z-Flag nicht 
gesetzt ist, ansonsten wird der Befehl übersprungen. Hab ich das so 
richtig verstanden?

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dennis Brenzel schrieb:
> Wenn ich bei einer EOR Verknüpfung 0 bekomme, wird doch das Z-Flag
> gesetzt. Wenn ich bei einer AND-Verknüpfung 0 bekommen, wird auch das
> Z-Flag gesetzt.
> Mit einer BREQ-Abfrage springt er an eine Marke, wenn das Z-Flag gesetzt
> wird, ansonsten wird der Befehl übersprungen. Und wenn ich eine
> BRNE-Abfrage mache, springt er an eine Marke, wenn das Z-Flag nicht
> gesetzt ist, ansonsten wird der Befehl übersprungen. Hab ich das so
> richtig verstanden?

Ja, das ist richtig...

Aber:

Man macht logische Verknüpfungen nicht nur, um Flags im SREG zu 
beeinflussen (und dann bedingt zu verzweigen), sondern manchmal auch, um 
das Ergebnis weiter zu nutzen ohne sich um das SREG zu kümmern. 
Letzteres ist hier der Fall.

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.