mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 Outputs "umdrehen"


Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

wie bereits mehrmals erwähnt bin ich neu in der elektronik materie und 
komme von der programmierer seite. ich habe dank des forums mit erfolg 
meine ersten schtritte im avr tutorial verzeichnen können. (bin bis zum 
LCD teil gekommen, dieser hat mich so fasziniert, das ich mir gleich 
einige programme gebastelt habe). bei den I/O grundlagen habe ich 
gelernt, das auf einem portpin, wenn er an ist immer gnd geschaltet ist, 
und ich diesen mit VCC connecte. soweit so gut.

nun frage ich mich, ob ich das ganze umdrehen kann, und auf einen 
gewissen output port zb PB nun vcc habe und diesen mit GND connecte?

 ihr müsst mir nichti im detail erkähren wie das funktioniert, mir würde 
schon ein suchbegriff weiterhelfen.

entschuldigt für die evtl. blöde frage aber ich freue mich wie immer 
über eine konstruktive antwort.

mfg

sascha

Autor: texter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was möchtest du genau?
Die pins am AVR können einen HIGH-Pegel erzeugen und GND, also NULL 
Volt.
Gruß Texter

Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie genau kann ich einen HIGH-Pegel erzeugen?

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt auf die verwendete Programmiersprache an...

Lies doch dazu erst mal 
http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel:
Port B Pin 0
DDRB = 1 << PB0   //Pin 0 als Ausgang konfigunrieren
PORTB = PORTB | 1 << PB0  // Pin 0 auf High, alle anderen Pins bleiben 
unverändert
PORTB = PORTB &~ (1 << PB0)// Pin 0 auf low, alle anderen...

MW

Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank. Ist das wirklich schoh alles? Also im tutorial steht dazu 
folgendes: "weil die Portpins PB0 und PB1 durch die Ausgabe von 0 (low) 
auf Masse (0V) gelegt werden und somit ein Strom durch die gegen Vcc 
(5V) geschalteten LEDs fließen kann. Die 4 anderen LEDs sind aus, da die 
entsprechenden Pins durch die Ausgabe von 1 (high) auf 5V liegen."

also wenn die pins auf 0 sind, dann ist da 5V drauf?? d.h. ich könnte 
die pins in diesem zustand z.B. wieder über ein LEF an GND hängen und 
hätte ein Leuchtendes LED???

Das währe ja phantastisch.

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sascha Der anfänger wrote:
> also wenn die pins auf 0 sind, dann ist da 5V drauf?? d.h. ich könnte
> die pins in diesem zustand z.B. wieder über ein LEF an GND hängen und
> hätte ein Leuchtendes LED???
also mit den Zustand eines Pins und dem Connecten verwirrst Du mich ein 
wenig.. Ist der Pin LOW ist er auf 0V.
Dann kommt ein Verbrauchter (in deinem Fall ein LED (hoffentlich mit 
Vorwiderstand)) und dieser hängt dann mit dem anderen Bein an Vcc (5V).

Geschaltet wird das LED dann, wenn der Pin auf LOW geht (und das LED 
leuchtet). Da der AVR sowohl mit LOW wie auch mit HIGH ähnlich viel 
Strom liefern kann (manche anderen Prozessoren können auf LOW mehr als 
auf HIGH - nur so am Rande) kann man das LED auch umdrehen und fest an 
GND verbinden und schaltet es dann über den HIGH-Zustand des Port-Pins.

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also mich hat die Verschaltung zu Beginn auch sehr verwirrt. Ich 
verwende ein STK500, und bei dem sind die LEDs so verschaltet, dass 
diese leuchten, wenn der entsprechende Ausgang auf Low-Pegel geschaltet 
ist, sie gehen aus, wenn der Ausgang auf High-Pegel liegt.
Wenn man jetzt ein bestimmtes Lichtbild ausgeben will kann man entweder 
vor der Ausgang das entsprechende Byte per Software invertieren oder man 
sucht sich eine andere (eigene) Beschaltung.
Gruß

Fred

Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Geschaltet wird das LED dann, wenn der Pin auf LOW geht (und das LED
leuchtet). Da der AVR sowohl mit LOW wie auch mit HIGH ähnlich viel
Strom liefern kann (manche anderen Prozessoren können auf LOW mehr als
auf HIGH - nur so am Rande) kann man das LED auch umdrehen und fest an
GND verbinden und schaltet es dann über den HIGH-Zustand des Port-Pins."

Vielen dank genau so habe ich das auch gemeint b.z.w. mir vorgestellt. 
liegt wohl an meiner ausdrucksweise. ich sollte mir vileicht erst mal 
einen kaffee gönnen :-)

Um etwas mehr ins detail zu gehen: ich hab mir da gestern 3 7segment 
displays zusammengelötet. jeweils a-a-a, b-b-b, c-c-c, d-d-d und so 
weiter miteinander verbunden. nun gebe ich auf diese pins ja jeweils 5V 
und um ein entsprechendes 7seegment diplay anzusteuern muss ich den 
dazugehörigen gnd pin auch mit gnd verbinden. ich hoffe mal dass ich da 
soweit auf dem richtigen weg bin. Also hätte ich so an meinem AVR einen 
Port, der mir die einzelnen segmente annsteuert, der dann 5V ausgeben 
müsste, wenn ein segment leuchten soll. ein weiterer port soll den 
displays sagen, welches das angesteuert werden soll, also müsste der pin 
für das display dass angesteuert werden soll GND ausgeben. ich hoffe 
meine überlegungen stimmen soweit.

Ach ja, die 7segment displays funktionieren ja auch mit LED's, brauch 
ich da auch einen vorwiderstand?

mfg

sascha

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind es 7-Segment-Anzeigen mit gemeinsamer Anode oder gemeinsamer 
Kathode? Danach richtet es sich, auf welche Seite Du nachher 1 und auf 
welche 0 geben musst. Sonst machst Du es falsch und plötzlich leuchten 
sie alle, obwohl alles dunkel sein sollte ;)

Zur Hardware: Vorwiderstände müssen sein (brauchste dann sieben oder mit 
Punkt acht), außerdem würde ich die drei gemeinsamen Anschlüsse nicht 
direkt schalten sondern per Transistor, zumindest Du dich nicht mit 5mA 
pro Segment begnügen möchtest (guck mal im Datenblatt der Anzeigen beim 
zulässigen Dauer- und Spitzenstrom). Ein ATmega8 liefert nur maximal 
40mA pro Pin.

Zum Transistortreiber siehe auch hier:
http://www.mikrocontroller.net/articles/AVR-Tutori...
Das Bild entspricht praktisch der Schaltung bei gemeinsamer Kathode, 
statt VCC wird oben aber dein mit "a, b, c, ..." benannter Pin 
drangehängt. Bei gemeinsamer Anode das ganze einfach umdrehen: GND wird 
zu VCC, aus NPN wird PNP.

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes Slotta wrote:
> Ein ATmega8 liefert nur maximal 40mA pro Pin.
...und max. 100mA pro Port und max. 200mA Gesamt (gleichzeitig).
Sofern Du die Segmente nicht nacheinander ansteuerst solltest du also 
darauf achten, dass z.B. bei einer "8" sieben Segmente an sind die aber 
zusammen nicht mehr als 100mA Strom ziehen dürfen (sofern alle am 
gleichen Port hängen).

Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für deine erklährung, johannes. ich habe mir das über mittag 
eben schnell zusammengesteckt und es scheint zu funktionierrn. 
allerdings habe ich in diesem zustand weder die vorwiderstände noch die 
transistoren dran. für was der transistor ist leuchtet mir auch ein. ich 
habe allerdings das datenblatt der displays nicht zur hand (werde das am 
abend mal checken.

jetzt nur für das verstäntnis: warum braucht es die vorwiderstände?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gegenfrage: Was passiert wenn man in die Steckdose fasst?
Richtisch, man kann draufgehen.... und genau so ist es bei der LED.
Und in beiden fällen war die Spannung zu hoch

Autor: Sascha Der anfänger (elvis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok. vielen dank, das ist nachvolziebar. wenn nun aber die leds ohne den 
vorwiderstand leuchten brauche diesen dann trotzdem, oder könnte es 
sein, dass die leds nach längerer betriebsdauer kaput gehen?

Autor: Marvin M. (marvin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, normale LEDs gehen kaputt, wenn man sie ohne Vorwiderstand an 5V 
betreibt. Durchaus möglich, dass Du durch Deine Versuche die LEDs oder 
den µC schon geschädigt hast.
Der Vorwiderstand ist dazu da, den Strom durch die LED zu begrenzen.

Es wäre definitiv sinnvoll, sich erst genauestens zu informieren und 
dann die Tipps (wie o.g. Vorwiderstände zu benutzen) nicht zu 
ignorieren.

Autor: l00k (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.