Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller Logikverknüpfungen umfangreich?


von hagbrain (Gast)


Lesenswert?

Hallo an alle und einen schönen guten Tag.

Es tut mir jetzt schon leid das es so viel zu lesen ist aber ich wüsste 
nicht wie ich das drastisch abkürzen könnte. Vielleicht findet sich ja 
einer der das erklären und nachvollziehen kann. Danke

Hier ist mein Beitrag zu dem ich nun noch mal eine Frage habe: 
Beitrag "Logik/Statusveränderungsabfrage"

Mir wurde empfholen die Problematik mit einem uC zu realisieren wie man 
unten lesen kann. Damit bin ich auch einverstanden und habe das für mich 
entschieden.

Ich möchte also eine Statusveränderungsabfrage realisieren, wobei mi 
geraten wurde das mit XOR-Verknüpfungen zu machen und die am letzten XOR 
austretenden Signale mit einer steigenden oder fallenden Flanke 
abzufragen und so die Veränderung festzustellen.

Meine Frage bezieht sich jetzt auf die realisierung im uC. Muss ich da 
denn wirklich im C-Code schreiben:

if( PB1 ^ PB2) {var1 = 1}

if(var1 ^ PB3) {var2 = 1}

if(.....
......
......

?

Muss ich also die XOR Verschachtelung so vornehmen oder gibt es da einen 
eleganteren Weg?

Vielen Danke schon einmal.

MFG Hag

von Seltener Gast (Gast)


Lesenswert?

Die Empfehlung mit den XOR-Gattern galt für eine Schaltungsvariante 
ohne Mikrocontroller.

Wenn du hingegen einen µC nimmst, brauchst du das nicht. Dann kannst du 
einfach in regelmäßigen Abständen (gesteuert per Timer-Interrupt) 
sämtliche Eingänge einlesen und deren Zustände mit den zuletzt 
eingelesenen (und abgespeicherten) Werten vergleichen.

Wenn du nur wissen willst, ob sich überhaupt etwas geändert hat, kannst 
du den gesamten Port auf einmal einlesen und so mit einer einzigen 
Vergleichsoperation bereits acht (bei einem 8-Bit-µC) Eingänge 
abhandeln.

Die Aufgabenstellung ähnelt übrigens dem Thema Tastaturabfrage und 
-entprellung, zu dem du hier eine Menge Threads findest.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

du hast nicht gesagt, wieviele Eingänge du abfragen musst. Viele 
Mikrocontroller haben die Möglichkeit, bei Änderung eines Pins oder auch 
eines ganzen 8-Bit-Ports einen Interrupt auszulösen. Das stellt die 
schnellstmögliche Reaktion sicher, aber bei einem Sammelinterrupt musst 
du trotzdem noch bestimmen, WELCHER Pin sich geändert hat (bei deiner 
XOR-Methode auch).

Gruss Reinhard

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.