Kein Strom am ATmega 16

OP #604791
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???
OP #604796
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
OP #604801
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?
Gast #604803
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.
OP #604805
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?
Gast #604827
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?
#605178
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren