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
Was möchtest du genau? Die pins am AVR können einen HIGH-Pegel erzeugen und GND, also NULL Volt. Gruß Texter
Kommt auf die verwendete Programmiersprache an... Lies doch dazu erst mal http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
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
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.
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.
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
"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
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-Tutorial:_IO-Grundlagen#Ausg.C3.A4nge_benutzen.2C_wenn_mehr_Strom_ben.C3.B6tigt_wird 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.
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).
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?
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
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?
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.
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.