Forum: Mikrocontroller und Digitale Elektronik Ein und Ausgänge


von Izoard (Gast)


Lesenswert?

Hi

Ich möchte am Port C den Pin0 als Eingang und den Pin1 als Ausgang. Die 
anderen Pins interessieren mich nicht, das heisst ich habe sie als 
ausgang geschaltet.
Nun meine Frage ist, wenn ich den Port einlese (in r16,PINC), wird dann 
nur mein Eingangspin eingelesen oder muss der eingelesene Wert noch 
maskieren?

mfg

Izoard

von Hermann Kraus (Gast)


Lesenswert?

Ich würde auf jeden Fall maskieren, damit es später nicht irgendwelche 
unerklärlichen Probleme gibt, nur weil du dich entschlossen hast noch 
mehr Pins zu verwenden.

Hermann

von crazy horse (Gast)


Lesenswert?

und dann gibts da noch die Befehle sbic Port, Bit und sbis Port, Bit. Da 
wird die entsprechende Bitadresse gelesen und das Programm kann so 
verzweigt werde.
Beim In-Befehl wird auf jeden Fall ein kompletter 8bit-Wert gelesen.

von Izoard (Gast)


Lesenswert?

Vielen Dank für die Antworten.
Ich habe beide Varianten (sbis-lösung und ganzer Porteinlesen)schon 
versucht. Beide funktionieren nicht, wenn ich nur mit einem Port 
arbeiten will!

Wenn ich ein ganzer Port als Ausgang definiere und ein anderer Port als 
Eingang definiere funktioniert mein Programm. Sobald ich aber mit einem 
Port arbeiten möchte, funktioniert mein Prog nicht mehr!!!

Ich definiere den Port C wie folgt:

ldi    r16, 0b11111110
out    DDRC, r16

Somit ist doch Port C Pin 0 mein Eingang und alle anderen sind 
ausgänge!!! stimmt doch?

danach kann ich mit dem Befehl sbis PortC,0 eine Verzweigung machen!

Das komisch ist, dass mein Programm funktioniert, wenn ich es simuliere, 
jedoch wenn ich es auf den Controller lade nicht richtig 
funktioniert....


Vielen Dank

IZOARD

von Uwe (Gast)


Lesenswert?

Hi
>sbis PortC,0
bringt nicht den gewünschten Erfolg.
Wenn dann sbis PinC,0
Gruss Uwe

von crazy horse (Gast)


Lesenswert?

Und was steht in  PORTC? Wenn du nur einen normalen Kontakt nach Masse 
nimmst, sollte min. der interne Pullup aktiviert sein. Geschieht damit, 
indem du in das betreffende Portregister eine 1 an der entsprechenden 
Bitstelle schreibst. Gillt übrigens auch für alle anderen Eingangspins, 
wenn die nicht beschaltet sind. Niemals hochohmig offen lassen.
Also entweder mit Masse verbinden, oder den Pullup aktivieren oder 
gleich als Ausgang definieren. Kann sonst die erstaunlichsten Effekte 
haben.
Letzte Alternative: du hast dir den Portpin schon zerschossen (wer will 
meine Sammelkiste mit teilweise defekten AVRs ? :-)

von Izoard (Gast)


Lesenswert?

vielen Dank

nun hat es geklappt....
ich habe ein durcheinander mit PinC und PortC gehabt :-)

von Hermann Kraus (Gast)


Lesenswert?

>wer will meine Sammelkiste mit teilweise defekten AVRs?
Was für AVRs sind das und was kosten die?

von crazy horse (Gast)


Lesenswert?

war nicht ganz Ernst gemeint, ich schmeiße die Dinger, wenn sie 
angeschlagen sind, immer direkt weg.

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.