Also, ich habe mir so ne kleine MC-Schaltung gebaut. Am PortB habe ich eine LED, die soll leuchten. Sie leuchtet auch, aber nur ganz schwach. da die spannung ja aber groß genug ist musses ja eigentlich an der stromstärke liegen. was kann ich da machen, damit ich die led richtig zum leuchten bringe, oder woran könnte das jetzt noch liegen???
was hast du für einen vorwiderstand an der LED? oder wird die LED getaktet? was ist das für eine LED, welche farbe?
hab ne grüne led, am netzteil liegen 3,1V an, am mc auch. die led ist eigentlich nicht getaktet, die soll nur die ganze zeit leuchten. widerstand hab ich keinen genommen, ich weiß macht man nicht aber müsste gehen. hier noch mein programm: ;******************************************************** .include "m16def.inc" ;******************************************************** ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden out DDRD, r16 ;Inhalt von r16 ins IO-Register DDRB ausgeben ldi r16, 0b11111111 ;0b11111100 in r16 laden out PORTB, r16 ;r16 ins IO-Register PORTB ausgeben ende: rjmp ende ;Sprung zur Marke "ende" -> Endlosschleife
1. LEDs NIE ohne Vorwiderstand betreiben. 2. Wenn du im Kommentar schon DDRB schreibst, dann solltest du deinen Wert auch wirklich da reinladen. Das hat im Übrigen wohl auch deine LED und evtl. den MC gerettet, da sie so nur über den Pull-Up mit Strom versorgt wurde.
Philipp Burch wrote: > 2. Wenn du im Kommentar schon DDRB schreibst, dann solltest du deinen > Wert auch wirklich da reinladen. Das hat im Übrigen wohl auch deine LED > und evtl. den MC gerettet, da sie so nur über den Pull-Up mit Strom > versorgt wurde. Das hab ich jetzt nich so richtig verstanden. was ist denn nun richtig ddrb oder ddrd, weil als ich (es geht um vorne, nicht um den kommentar) ddrb hatte, hatte mir hier jemand im forum gesagt da muss ich ddrd reinschreiben Achso: wieso hat das auch meinen mc gerettet?
LED ohne vorwiderstand geht nicht, naja in ganz wenigen fällen kann man tricksen. wenn zuviel strom durch die led fliest, wird sie dunkler. das ist aber nicht dein problem. versuch mal (3,1-2)/0,02 ohm. vorwiderstand. das prgramm hab ich gestern schonmal gesehn oder? du lädst das datenrichtungsregister von portd, aber schreibst in portb, wo warscheinlich die led hängt.
philip meinte wenn du die led direkt anschliest und die ports richtig angesteuert hättest, wäre der mC port wegebrant, also kaputt.
seit wann wird die led dunkler, wenn zu viel strom durchfließt? bei mir gehen die dann eher kaputt. ich hattes schon mal geschafft, dass eine led richtig geknallt hatte. also muss ich ddrb schreiben, ok. Diese include-datei muss ich aber nicht mit in den mc laden, stimmts?
Wieso brennt der Port da weg??? Und hab es jetzt gemacht, is aber immernoch wie vorher. P.S.: hab nen widerstand genommen
Martin K. wrote:
> Wieso brennt der Port da weg???
Sieh dir mal die Kennlinien von Dioden an, dann wirst verstehen, warum
das nicht geht.
Zeig nochmal das aktuelle Programm und sag', was jetzt genau noch nicht geht. Was hast du denn jetzt für einen Vorwiderstand drin?
wenn du sehr vorsichtig bei einer led den strom hochdrehst, wird die led wärmer, dadurch verchiebt sich die kennlinie. das führt bei einfachen leds das die lichtausbeute sinkt. das kannst du mit einen labornetzteil selber ausprobieren. man kann sogar eine farbverschiebung beobachten. so zurück zu dein problem. du hast ein atmega 16? an welchen pin ist die led? hast du mal ins tutorial geschaut, zu ports?
Kann das sein, das sobald ich eine LED ohne widerstand an den mc ranhalte (der gibt dort halt ein bitmuster aus, so dass die led leuchten müsste) dieser Port sich dan sofort verabschiedet?
Martin K. wrote: > Kann das sein, das sobald ich eine LED ohne widerstand an den mc > ranhalte (der gibt dort halt ein bitmuster aus, so dass die led leuchten > müsste) dieser Port sich dan sofort verabschiedet? Auf Dauer ist das sicher nicht gut für den Port. Aber im Regelfall ist es nicht so, dass innerhalb der ersten Zehntel Sekunde nach Einschalten alles vorbei ist. Wenn der Port noch lebt (und davon gehe ich mal aus), dann muss dein Programm so aussehen (LEDs an Port B)
1 | ;******************************************************** |
2 | .include "m16def.inc" |
3 | |
4 | ;******************************************************** |
5 | |
6 | |
7 | ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden |
8 | out DDRB, r16 ;Inhalt von r16 ins IO-Register DDRB |
9 | ausgeben |
10 | |
11 | ldi r16, 0b10101010 |
12 | out PORTB, r16 ;r16 ins IO-Register PORTB ausgeben |
13 | |
14 | ende: rjmp ende ;Sprung zur Marke "ende" -> Endlosschleife |
DDRB deshalb, weil du ja die Datenrichtung für den Port B einstellen willst. Die LED schliesst du mit 330 Ohm an. +-----+ | /| µC Pin o------| |---------| |---------o +5V +-----+ | \| Wenn du an einen Portpin dann eine 0 ausgibst, dann leuchtet die LED.
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.