Forum: Mikrocontroller und Digitale Elektronik Wieso sind die Bits invertiert?


von Oliver H. (oliher)


Lesenswert?

Hallo,

kann mir einer sagen, wieso die Bits am Port invertiert rauskommen? Wenn 
ich z.B. 00100100 am PortB ausgeben will kommt 11011011 dabei raus. Ich 
benutze das STK500 mit einem Atmega32. Dies sind meine ersten Schritte 
mit Micros.

Gruss

Oliver

von Dirk D. (dirkd)


Lesenswert?

Woher weißt Du das die Bits invertiert sind?

Wenn am Port LEDs hängen können die auch low-aktiv geschaltet sein, d. 
h. sie werden mit einer 0 ein- und mit einer 1 ausgeschaltet.

von Oliver H. (oliher)


Lesenswert?

Dirk Dörr wrote:
> Woher weißt Du das die Bits invertiert sind?
>
> Wenn am Port LEDs hängen können die auch low-aktiv geschaltet sein, d.
> h. sie werden mit einer 0 ein- und mit einer 1 ausgeschaltet.

Ja, Genau. Aber wie kann ich das ändern? Softwaremäßige die Einstellung 
ändern?

Gruss

Oliver

von Karl heinz B. (kbucheg)


Lesenswert?

Dazu müsstest du die Hardware ändern, wenn das tatsächlich
so ist.
Aber wo ist das Problem? Wenn du weist das alles genau
anders rum ist, kann man das doch im Programm ganz leicht
berücksichtigen.

von Karl heinz B. (kbucheg)


Lesenswert?

Aber ich muss dich enttäuschen.
Laut Schaltplan vom STK500 sind die LED's schon
so verschaltet, dass eine 1 am Ausgabeport die
LED leuchten lässt und eine 0 sie ausschaltet.

Dein Problem muss also woanders liegen.
Zeig doch mal dein Pgm.

von Oliver H. (oliher)


Lesenswert?

Karl heinz Buchegger wrote:
> Dazu müsstest du die Hardware ändern, wenn das tatsächlich
> so ist.
> Aber wo ist das Problem? Wenn du weist das alles genau
> anders rum ist, kann man das doch im Programm ganz leicht
> berücksichtigen.

Ja, stört mich nur ein bischen, aber OK, Du hast natürlich Recht! Ich 
werde das jetzt erstmal so machen wie Du sagst.

Gruss

Oliver

von A.K. (Gast)


Lesenswert?

Auch die STK500 LED-Zeile ist aktiv low.

von Karl heinz B. (kbucheg)


Lesenswert?

> Ich werde das jetzt erstmal so machen wie Du sagst.

Nein. Nicht.

Ich hab das geschrieben, bevor ich mir den Schaltplan
zum STK500 gesucht habe!

Wenn du eine 1 ausgibst, muss die LED leuchten!

Wenn nicht, ist irgendwo etwas faul. Da ich davon
ausgehe, dass dein STK nicht defekt ist, kann es dann nur
noch dein Pgm sein.

von Karl heinz B. (kbucheg)


Angehängte Dateien:

Lesenswert?

A.K. wrote:
> Auch die STK500 LED-Zeile ist aktiv low.

Hmm.
Hab ich Tomaten auf den Augen? Siehe Anhang.

von Jürgen B. (hicom)


Lesenswert?

Nein das stimmt nicht, die Leds leuchten bei einer
0 am Portausgang.
Also vor der Ausgabe das Signal invertieren, z.B. mit dem
COM Befehl.

Jürgen

von Ulrich (Gast)


Lesenswert?

Also bei mir Leuten die LEDs wenn ich die Pins mit gnd verbinde.....

von Hans (Gast)


Lesenswert?

>Auch die STK500 LED-Zeile ist aktiv low.

Nein. Wenn Buchegger sagt, sie ist aktiv high, dann ist sie es auch. 
Egal was der Schaltplan sagt. Da könnte ja jeder kommen.

von Karl heinz B. (kbucheg)


Lesenswert?

Karl heinz Buchegger wrote:
> A.K. wrote:
>> Auch die STK500 LED-Zeile ist aktiv low.
>
> Hmm.
> Hab ich Tomaten auf den Augen? Siehe Anhang.

Ich hab Tomaten auf den Augen. Das ist ja gar nicht
der µC Ausgang da am Basiswiderstand des Transistors.
:-)

von Karl heinz B. (kbucheg)


Lesenswert?

Hans wrote:
>>Auch die STK500 LED-Zeile ist aktiv low.
>
> Nein. Wenn Buchegger sagt, sie ist aktiv high, dann ist sie es auch.
> Egal was der Schaltplan sagt. Da könnte ja jeder kommen.

Du sagst es: Da könnte jeder kommen und behaupten dass
free() den Speicher ausnullt.

Im Gegensatz zu dir kann ich eingestehen, wenn ich einmal
Mist erzähle.

von Oliver H. (oliher)


Angehängte Dateien:

Lesenswert?

Karl heinz Buchegger wrote:
> Aber ich muss dich enttäuschen.
> Laut Schaltplan vom STK500 sind die LED's schon
> so verschaltet, dass eine 1 am Ausgabeport die
> LED leuchten lässt und eine 0 sie ausschaltet.
>
> Dein Problem muss also woanders liegen.
> Zeig doch mal dein Pgm.

Sorry,

ich war zu langsam mit dem Tippen. Also, das Programm ist nichts 
aufregendes. Ich wollte halt nur mal das Board testen und fang gerade 
erst an. Das Programm soll zwei LEDs am Ausgabeport zum flimmern bringen 
(Bit 2 und Bit 4 oder "00010100"). Im Testlauf ist alles normal, nur 
wenn ich mein Programm auf den Controller lade, dann leuchten die LEDs 
in dieser Reihenfolge 111x1x11. 1 steht in diesem Fall für LED leuchtet 
dauerhaft und x steht für LED flimmert.

Ich hoffe Du kannst mir weiterhelfen.

Gruss

Oliver

von Karl heinz B. (kbucheg)


Lesenswert?

Das passt schon.
Ich hab den Schaltplan falsch gelesen.

Also: Per Programm umdrehen.
Die Led leuchtet wenn am Port eine 0 ausgegeben wird.

von Muraer (Gast)


Lesenswert?

Dies ist auch vernünftig so.
AVRs haben es lieber, wenn sie den Strom durch einen High-Pin nicht 
selber liefern müssen. Da können sie nicht soviel durchlassen, als wenn 
sie den Strom auf das GND reinlassen.

von A.K. (Gast)


Lesenswert?

Stimmt nur bei den alten AT90. Die Megas/Tinys sind symmetrisch.

von M. M. (miszou)


Lesenswert?

Hi

also ich kann im Datenblatt keinen Unterschied erkennen.
Ob High oder Low, beides mal 20mA. Auch unter Notes fällt mir nichts 
auf.

Kommt das Low Aktiv nicht daher, dass es so früher ofters so war wie 
Muraer geschrieben hat. Aber bei den AVRs spielt es laut meinen Augen 
keine Rolle mehr.

Gruß MISZOU

EDIT: Ok doch nichts übersehen.

von pumpkin (Gast)


Lesenswert?

um deine anzeige aktib high zu machen invertiere die bits einfach bevor 
die sie ausgibst. z.b.

PORTA = ~(meine_tolle_ausgabe);

dann leuchten deine LED's bei ner 1.


pumpkin

von Jörn P. (jonnyp)


Lesenswert?

Die Ausgabe des STK500 ist aktiv LOW. Ich habe es und weiss es daher und 
im Schaltplan steht es auch so drin! Den Schaltplan kann man zB bei 
avrfreaks.net herunterladen.
Das ist hier ein sehr gutes Forum, und ich finde das sollte auch so 
bleiben. Den Sprücheklopfern sei daher mal empfohlen erst das Gehirn 
einzuschalten und dann erst die Klappe aufzureißen und Neulinge / 
Anfänger nicht zu verunsichern.

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.