Forum: Mikrocontroller und Digitale Elektronik Wie steuert man AVR Ausgänge richtig an?


von Lokus P. (derschatten)


Lesenswert?

Zum Grundverständniss würde ich gerne wissen wie man den Ausgang eines 
AVR richtig ansteuert.

Wenn ich zb. folgende Verdrahtung habe:
PortD.0 -> Taster
PortC.0 -> LED gegen HIGH (+5V) geschalten.

Will ich jetzt mittels deiesen taster die LED zum leuchten bringen gibt 
es jetzt nach meinem Verständnis 2 Varianten:

Variante 1:
===========

DDRC = 0x00 // Anschlüsse auf Eingang schalten
PORTC = 0x00 // Alle PortC auf LOW

Wird nun einen Tastendruck erkannt wird mittels:

DDRC = 0x01 // PortC.0 auf Ausgang schalten

LED leuchtet

Variante 2:
===========

DDRC = 0xFF // Anschlüsse auf Ausgang schalten
PORTC = 0xFF // Alle PortC auf HIGH

Wird nun einen Tastendruck erkannt wird mittels:

PORTC = 0x01 // PortC.0 auf LOW schalten

LED leuchtet

Welche ist nun die richtige Methode?

von Grrrr (Gast)


Lesenswert?

Manfred W. schrieb:
> Welche ist nun die richtige Methode?

Keine. Bitte Datenblatt lesen.

von ... .. (docean) Benutzerseite


Lesenswert?


von Irgendwer (Gast)


Lesenswert?


von Harry S. (littlegonzo)


Lesenswert?

Ich weiß nicht was die Kollegen hier so für ein Problem haben, beide 
Varianten funktionieren problemlos.
Sicherlich gibt es noch andere Methoden aber das Tutorial ist auch nicht 
DIE BIBEL ;-)

Ich weiß auch nicht was daran auszusetzen ist wie Du das machst...

Ausser das Du :
1
PORTC = 0x01; //machst?
und man besser
1
PORTC |=(1<<PC0);
nutzen sollte?

Ich würde z.B. die erste Variante bevorzugen und zwar aus folgenden 
Grund:

Stell Dir vor es ist ein Motor dran, Du schaltest den Port auf Ausgang 
und da die Last Low-Aktiv ist springt der Motor kurz an...erst wenn Du 
den Port auf High setzt ist Ruhe. Ist fiktiv da das alles für einen 
Motor viel zu schnell ist aber....zur Sicherheit...

Gruß Harry

von der mechatroniker (Gast)


Lesenswert?

Wenn du einen Push-Pull-Ausgang brauchst, setzt du DDR fest auf 1 und 
schaltest PORT. Wenn du einen Open-Collector-Ausgang simulieren willst, 
setzt du PORT fest auf 0 und schaltest DDR. Und wenn es egal ist (wie 
bei der gegen +5V geschalteten LED) ist es egal, wie du schon erkannt 
hast.

von Karl H. (kbuchegg)


Lesenswert?

Harry S. schrieb:
> Ich weiß nicht was die Kollegen hier so für ein Problem haben,

du kennst die Vorgeschichte nicht :-)
Und ausserdem ist hier wohl die Absicht, den TO zum Nachdenken anzuregen 
nachdem ihm das in seinem ursprünglichen Thread schon ein paar mal von 
unterschiedlichen Leuten vorgekaut wurde.

> beide
> Varianten funktionieren problemlos.

Wie du selbst weiter unten zeigst, hat die eine Reihenfolge einen 
klitzekleinen Nachteil. Du nimmst einen Motor an. In seiner Beschaltung 
und einer zusätzlichen Vorraussetzung ist das aber nicht so harmlos, 
sondern da gehts darum, dass er in dem einen Fall einen Kurzschluss 
erzeugt (wenn auch nur sehr kurz) und im anderen Fall nicht.

von KM (Gast)


Lesenswert?

Wo ist denn da ein Kurzschluss?

von Harry S. (littlegonzo)


Lesenswert?

Hallo Karl-Heinz,
das mit der Vorgeschichte wußte ich nicht ^^

Wobei ich die Sache mit dem Kurzschluß auch noch nicht geblickt habe...

Gruß Harry

von Karl H. (kbuchegg)


Lesenswert?

KM schrieb:
> Wo ist denn da ein Kurzschluss?

In diesem Thread ist die Fragestellung sowieso komplett vermurkst.
Er hat Taster und LED an ein und demselben Pin

Seine Methode 1:
   Der Taster hat keinen Pullup Widerstand. Und damit ist die Taster-
   funktion ... fraglich
   Aktiviert er aber einen Pullup und schaltet einfach den DDR
   von Eingang auf Ausgang um .... dann treibt die 1 am Portpin
   gegen den noch gedrückten Taster, der nach GND geschaltet ist.

   So gehts also nicht

Seine Methode 2:
   Ist kompletter Unsinn. Wie will man mit einem auf Ausgang
   geschalteten Port einen Taster einlesen

Das ganze ist lösbar. Keine Frage. Wenn man verstanden hat, wie PORT, 
PIN und DDR zusammenspielen und sich die Reihenfolge am Papier einfach 
mal durchspielt, ist das überhaupt kein Problem. Nur
* man muss die Zusammenhänge verstanden haben
* sich die Zeit nehmen um das durchzuspielen

WIe gesagt: Im Originalthread wars noch: Taster und LED an einem Pin.

von Harry S. (littlegonzo)


Lesenswert?

Ah okay,
dann klinke ich mich mal wieder aus :-)

Gruß Harry

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.