www.mikrocontroller.net

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


Autor: fghgh fggfh (al3xh)
Datum:

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

Autor: dummy (Gast)
Datum:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.                      True       False

Positive Logik:      1 (high)   0 (low)

Negative Logik:      0 (low)    1 (high)

Autor: fghgh fggfh (al3xh)
Datum:

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

Autor: Route_66 (Gast)
Datum:

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

Autor: fghgh fggfh (al3xh)
Datum:

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

Autor: Route_66 (Gast)
Datum:

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

Autor: fghgh fggfh (al3xh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

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

Gruß Alex

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.