Hallo, ich versuche seit einigen Tagen, mich in das Thema AVR einzuarbeiten. Dabei bin ich auf diese Seiten und das interessante AVR Tutorial gestossen. Im zweiten Teil des Tutorials (leds.asm) wird PORTB mit 0b11111100 belegt. Ich wundere mich nun etwas, da ich bisher davon ausging, daß an den mit 1 belegten Pins jetzt eine angeschlossene LED leuchten müsste. Im Text wird aber gesagt, es würden die beiden ersten LEDS angesprochen. Ich bin etwas verwirrt - habe ich da jetzt etwas falsch verstanden? Kann mich bitte jemand aufklären?
Die LEDs sind Low-Side angeschlossen. Lies Dir das ganze mal genauer durch und schaue Dir vor allem das Schaltbild am Anfang des Abschnittes an und überlege, wie der Strom durch die LED fließt und vor allem wann.
Das Tutorial geht von der Schaltung in "2. I/O-Grundlagen" aus. Dort fliesst nur dann Strom durch die LED wenn der entsprechende I/O Pin auf low steht.
Je nachdem wie man die LED anschließt, wird sie durch 0 oder 1 aktiviert. Schließt man die eine Seite der LED an 5V an und die andere an den Mikrocontroller, dann liegen bei einer 1 auf beiden Seiten der LED 5V an - und damit fließt kein Strom, die LED bleibt dunkel. Bei einer 0 hat man dagegen am Mikrocontroller 0V und damit fließt ein Strom. Man macht das, weil viele Mikrocontroller nach Masse mehr Strom schalten können als nach 5V.
Aha! - Das war also meine Wissenslücke. Ich dachte, man kann die LED's nur in einer bestimmten Richtung betreiben. Vielen Dank für die Antworten! (Drei Antworten innerhalb von 10 Minuten - super!) Gruß Hottel
Man kann die LED auch nur in einer Richtung (zumindest sinnvoll - also leuchtend) betreiben. Aber Du hast zwei Möglichkeiten sie anzuschließen: 1.) Du läßt den µC die Versorgungsspannung schalten (Portbit setzen) 2.) Du läßt den µC die Masse schalten (Portbit löschen)
> Ich dachte, man kann die LED's nur in einer bestimmten Richtung > betreiben. Das ist auch richtig so. Eine LED hat eine vorgegebene 'Durchflussrichtung'. Andersrum sperrt sie einfach. Hier geht es aber um was anderes: Es geht darum wer den Strom liefert. Ob der Strom von 5V durch die LED durch den µC zu Masse fliest, oder ob der Strom von 5V, durch den µC durch die LED nach Masse fliest. Im ersten Fall fliest der Strom also in den µC hinein, im zweiten Fall kommt er aus ihm heraus. Nun zeigt sich aber, dass der µC weniger Strom liefern kann als er aufnehmen kann. Also wird die erste Variante bevorzugt. Bezogen auf die Led heisst das: Mit dem einen Pin haengt sie (uber Vorwiderstand) an 5V. Damit aber Strom fliessen kann, muss am anderen Pin eine geringere Spannung als 5V anliegen, sonst fliesst nichts. D.h. wenn der µC da eine logische 1 ausgibt, dann hat die LED an beiden Enden die gleiche Spannung und nichts tut sich. Erst wenn der µC da eine logische 0 (also 0V) anlegt, hast du eine Spannungsdifferenz, Strom kann fliessen und die LED leuchtet. (Vereinfacht ausgedrückt. Die Spannungen die da im Spiel sind werden durch den Vorwiderstand nicht 5V sein. Ist aber fürs Prinzip erst mal egal). wir davon, wo der 'Schalter' sitzt: An der +-Seite 5v +------| | \ \ | | ----- \ / \ / v ------- | | GND -------| oder auf der - Seite
Mist: das passiert mir immer wieder. Ich schreibe einen Beitrag, fang an zu malen. Dann aendere ich meine Meinung und aus dem vorher Geschriebenen bleibt noch was übrig. Ignorier bitte die Zeichnung. Vielleicht sollte ich mal eine Petition starten, die ein größeres Eingabefeld fordert :-)
@Karlheinz: > Nun zeigt sich aber, dass der µC weniger Strom liefern > kann als er aufnehmen kann. Das ist zumindest bei den ATMegas nicht so. Die Ports können dort gleich viel Strom liefern wie aufnehmen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.