Forum: Mikrocontroller und Digitale Elektronik Unterschied positive/negative Logik und Ports auslesen


von fghgh f. (al3xh)


Lesenswert?

Hey,
wir programmieren in der Schule 8051 MC.
Nun habe ich aber 2 Dinge noch nicht so richtig verstanden. Einmal was 
der genaue Unterschied zwischen positiver und negativer Logik ist und 
warum an den Ports nur erkannt werden kann ob eine 0 oder keine angelegt 
ist und nicht die 1?

Vielen Dank im voraus

Gruß Alex

von dummy (Gast)


Lesenswert?

>warum an den Ports nur erkannt werden kann ob eine 0 oder keine angelegt
>ist und nicht die 1?

Es gibt nur 0 oder 1.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Alex, bist du in der gleichen Klasse wie Jungles W ?-)
Schau mal in: Beitrag "Ist dies eine wired AND Schaltung mit negativer Logik?"

von Magnus Müller (Gast)


Lesenswert?

.                      True       False

Positive Logik:      1 (high)   0 (low)

Negative Logik:      0 (low)    1 (high)

von fghgh f. (al3xh)


Lesenswert?

Hey,
ne Jungles W kenn ich nich und sein angesprochenes Thema nehmen wir auch 
so nicht in der Schule durch;).
Was mir jetzt noch unklar ist, ist für was die negative Logik dient da 
doch eigentlich die positive Logik die üblichere ist oder?

Zudem die schon gestellte Frage wieso wir mit der negativen Logik beim 
8051 arbeiten müssen um abzufragen ob eine 0 oder 1 am Port anliegt? 
Wieso ist das nicht mit der positiven Logik möglich?

Gruß Alex

von Route_66 (Gast)


Lesenswert?

Hallo!
Per Software kannst Du feststellen, welcher Pegel 0 oder 1 bzw. LOW oder 
HIGH an einem Pin anliegt. Die Bewertung für die beiden Pegel wirst Du 
dann im weiteren Programm vornehmen. Diese Bewertung und Verknüpfung zu 
einem Resultat geschieht über Logik.
z.B. WENN "Temperatur über Sollwert" UND "Schalter auf Automatik" DANN 
"Heizung aus". Positive oder negative Logik hängt dabei von der Art der 
Signale ab: z.B. ist wichtig, ob bei "Schalter auf Automatik" das 
zugehörige Signal 0 oder 1 ist. Dito bei "Temperatur über Sollwert".

Bei einer Binären Logik gibt es nur zwei Zustände 0 und 1. D.h. mit 
einem Bit (einem Eingang) kann kein dritter Zustand erfasst werden. Der 
dritte Zustand wäre nach Deiner Denkart "kein Signal", also Eingang 
offen. Das ist logisch Blödsinn und technisch erst recht. Man muß also 
dafür sorgen, daß ohne Signal "Schalter auf Automatik" ein betimmter 
Pegel z.B. 0 vorhanden ist. Wenn jetzt der "Schalter auf Automatik" 
gestellt wird muss genau der andere Pegel also 1 anliegen.
Der gerade gezeigte Pegelwechsel Signal wird aktiv -> Pegel wird 1 ist 
positive Logik.
Negative Logik kann man auf zwei Arten erreichen:
1. Der Pegelwechsel bei Aktivwerden des Signales "Schalter auf 
Automatik" ist genau umgekehrt (Pegel 1->0) oder
2. Der Schalter wird mit "Handregelung" beschriftet, dann ist ja das 
Logisch aktive gerade umgekehrt.

Wie der Ruhepegel ohne anliegende Signale ist, hängt von der äußeren 
Beschaltung ab. Ich nehme für Deinen Fall an 0.

P.S. Die Eins-Plus im Klassenbuch gehört MIR!!!

von fghgh f. (al3xh)


Lesenswert?

Hey,
Danke für die super-Erklärung, hat mir einiges gebracht:).

Aber eins hat sich mir noch nicht so ganz gezeigt und zwar wieso man nun 
mit der negativen Logik beim 8051 arbeiten muss um auszulesen ob eine 1 
oder 0 an einem Pin des Ports hängt und wieso man nicht die positive 
Logik verwenden kann?
Dazu muss man sagen das man einmalig eine 1 auf den jeweiligen pin 
schieben muss um ihn als Eingang freizuschalten, falls das weiterhelfen 
sollte:)

Gruß Alex

von Route_66 (Gast)


Lesenswert?

Hallo nochmal!

Der 8051 liest wie viele Mikrokontroller und Logikschaltkreise in 
unbeschaltetem Zustand High-Pegel. Das hat bei den als Ein- und Ausgang 
nutzbaren Pins mit der Innenschaltung zu tun. Auch bei den einfachen 
Logikgattern ist das so und hat vor allem historische und technische 
Hintergründe. Abhängig von der Logik-/Prozessorfamilie sind die Eingänge 
meist so hochohmig, daß sie als "Antennen" das Gras wachsen hören. Sie 
fangen Signale ein, die keine sind. Deshalb ist es unabdingbar, alle 
Eingänge definiert zu beschalten. Damit wird auch ohne irgend ein 
Steuersignal immer ein fester Pegel erkannt. Bei den vor langer langer 
Zeit weit verbreiteten Logik-Gattern der TTL-Reihe 
(Transistor-Transistor-Logik) war es aus Innenschaltungsgründen so, daß 
ein unbeschalteter Eingang immer High-Pegel erkannte. So hat sich 
eingebürgert, aktive Signale mit Low anzulegen. Wie Du oben gelesen 
hast: negative Logik.
Das ist aber eine reine Definitionsfrage, die aus Bequemlichkeitsgründen 
oder praktischen Erwägungen auch anders festgelegt werden kann.
Wenn ich einen Kontakt habe, der nach Masse schaltet, passt diese 
"negative" Logik ja auf Anhieb. Im Falle, daß mein Sensor z.B. bei 
"Füllstand erreicht" 5 Volt liefert, würde ich die Eingangsbeschaltung 
so wählen, daß eine positve Logik angewendet werden kann.
Wenn allerdings die Beschaltung vorgegeben ist, bleiben wie schon 
angedeutet zwei Möglichkeiten:
1. Signal extern umdrehen (invertieren) daß "Füllstand erreicht2 0 Volt 
liefert,
2. oder in der Software, die das Signal auswertet, "andersrum" denken.

Ach so - noch zum 8051:
Es hat mit der Innenschaltung zu tun, daß mann erst eine 1 in das 
entsprechende Ausgangsregister schreiben muß, um ihn als Eingang 
verwenden zu können. Danach könnte man über eine äußere Beschaltung 
durchaus noch positive Logik verwenden, also inakiv=0 / aktiv=1. Es ist 
aber eher unüblich, nicht jedoch unmöglich.
Positiv oder negativ (logisch) zu denken kann besonders dann Sinn 
machen, wenn es um die Betrachtung von Störungen geht:
Was ist bei einem Kabelbruch / Kurzschluss? Kann ich das erkennen oder 
kocht die Aquarienheizung 'ne feine Fischsuppe?

Du siehst, Logik ist ein weites, nicht zu unterschätzendes Feld.

von fghgh f. (al3xh)


Lesenswert?

Hey,

Vielen Dank Route_66 jetzt hab ichs verstanden:). Ist auch sehr gut und 
verständlich verfasst von dir, Danke!

Gruß Alex

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.