Forum: Mikrocontroller und Digitale Elektronik Kein Strom am ATmega 16


von Martin K. (spyro07)


Lesenswert?

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???

von Andreas W. (Gast)


Lesenswert?

was hast du für einen vorwiderstand an der LED? oder wird die LED 
getaktet? was ist das für eine LED, welche farbe?

von Martin K. (spyro07)


Lesenswert?

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

von Philipp B. (philipp_burch)


Lesenswert?

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.

von Martin K. (spyro07)


Lesenswert?

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?

von Andreas W. (Gast)


Lesenswert?

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.

von Andreas W. (Gast)


Lesenswert?

philip meinte wenn du die led direkt anschliest und die ports richtig 
angesteuert hättest, wäre der mC port wegebrant, also kaputt.

von Martin K. (spyro07)


Lesenswert?

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?

von Martin K. (spyro07)


Lesenswert?

Wieso brennt der Port da weg???

Und hab es jetzt gemacht, is aber immernoch wie vorher.

P.S.: hab nen widerstand genommen

von Uhu U. (uhu)


Lesenswert?

Martin K. wrote:
> Wieso brennt der Port da weg???

Sieh dir mal die Kennlinien von Dioden an, dann wirst verstehen, warum 
das nicht geht.

von Philipp B. (philipp_burch)


Lesenswert?

Zeig nochmal das aktuelle Programm und sag', was jetzt genau noch nicht 
geht.
Was hast du denn jetzt für einen Vorwiderstand drin?

von Andreas W. (Gast)


Lesenswert?

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?

von Martin K. (spyro07)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.