Forum: Mikrocontroller und Digitale Elektronik zu blöd um eine LED einzuschalten


von Josef K. (josefk)


Angehängte Dateien:

Lesenswert?

Hallo da draußen,

habe eine sehr blöde Frage. Ich habe eine kleine Platine 
zusammengebastelt (siehe Anhang) aber leider schaffe ich es nicht einmal 
die Leds einzuschalten.
Ich habe 1k als Drossel eingebaut und nutze den µC als Massen bei "ein". 
Leider leuchtet garnichts. Die Pins sind als Eingang geschalten und wenn 
ich die internen PullUps aktivere bzw. deaktiviere passiert nichts.

Woran kann das liegen?

von Steve B. (stevensen)


Lesenswert?

probiers als ausgang

von Otto (Gast)


Lesenswert?

Du musst die Pins auf Ausgang schalten (DDR) und eine 0 reinschreiben

Otto

von STK500-Besitzer (Gast)


Lesenswert?

>Die Pins sind als Eingang geschalten und wenn
>ich die internen PullUps aktivere bzw. deaktiviere passiert nichts.

Wie wäre es, wenn du dein Programm postest?!

Scheint so, als hättest du die Funktion eines Portpins nicht ganz 
verstanden.
Auch, wenn "Strom in den AVR" hineinfließt, muß der Pin als Ausgang 
geschaltet werden.

von Josef K. (josefk)


Lesenswert?

Ach, sorry. Mein ich ja und hab ich auch.

von Johannes M. (johnny-m)


Lesenswert?

Bildformate! Da kriegt man ja Augenkrebs!

Und ohne Kenntnis Deiner Pinkonfiguration kann man da nicht viel zu 
sagen.

von Klaus (Gast)


Lesenswert?

> 1k als Drossel eingebaut

lass blos die 1000 Vögel frei sontst ...?

von Josef K. (josefk)


Lesenswert?

zum Testen:
1
#include <avr/io.h>
2
#include <stdint.h>
3
4
#define __AVR_AT90CAN128__ 1
5
#define F_CPU    16000000
6
#define LED_GN(on)        (on) ? (PORTE&=~0x08) : (PORTE|=0x08)
7
#define LED_GE(on)        (on) ? (PORTE&=~0x10) : (PORTE|=0x10)
8
#define LED_RT(on)        (on) ? (PORTE&=~0x04) : (PORTE|=0x04)
9
10
int main(void)
11
{
12
     DDRE=0x00;
13
     LED_GN(1);
14
     LED_GE(0);
15
     LED_RT(1);
16
     while(1)
17
     {
18
     }
19
     return 0;
20
}

von Josef K. (josefk)


Lesenswert?

@Johannes M
Ok das Bildforamt ist nicht super, aber die LEDs kann man sehen, oder?!

Die Pnikonfiguration für die LEDs sollte mit dem Prog. auch klar sein. 
Der Rest ist ja irrelevant. Der RAM wird noch nicht genutz und der Rest 
nicht initialisiert.

von Klaus (Gast)


Lesenswert?

> DDRE=0x00

nach

  DDRE=0xff  ;-> Ausgänge!!

von michi (Gast)


Lesenswert?

wie wäre es mit ausgang

DDRE=0xFF;

von Otto (Gast)


Lesenswert?

DDRE muss für Deine LED auf 1 gesetzt werden

4
8
16

DDRE -> 0001 1100

LED gelb ist 16 und nicht 10

Otto

von Klaus (Gast)


Lesenswert?

sorry,

nichts zerstören

 DDRE = 0b0001110

von Klaus (Gast)


Lesenswert?

Otto hat recht DDRE = 0b0011100 sorry

von Josef K. (josefk)


Lesenswert?

Hi, danke für die Tipps, aber habs mit 0x1C schon probiert. Ändert 
nichts, komischerweise.
Kann es sein, dass der µC den Hitzetot beim Löten gestorben ist? Welche 
Symptome würde er dann Zeigen? Kann man einzelne Pins überhaupt grillen?
Kann ich mit 0x00 die Pins zerstört haben?

von AC/DC (Gast)


Lesenswert?

Ne, wenn du nicht nen riesen Lötkolben dafür genommen hast.
Was sind denn das für LEDS? Stromaufnahme?
Der µC kann nämlich nicht unendlich viel Strom liefern bzw.
steuern. Haste das Beispiel Blinky schon probiert?
Gibt der Quarz einen Takt ab?
Und wie erzeugste einen Reset nach dem Einschalten?
Der Schaltplan hat aber noch einige zeichnerische Mängel, vor
allem an den Bussen.

von ahnungslos (Gast)


Lesenswert?

Das Programm funktioniert noch nicht, aber der µC ist schon verlötet? 
Schon'mal was von Sockeln gehört?

von Sumynona (Gast)


Lesenswert?

> Schon'mal was von Sockeln gehört?
Möööp, Mega128

> DDRE = 0b0001110

eleganter:
DDRE |= 0x0E;

von Johannes M. (johnny-m)


Lesenswert?

Sumynona wrote:
>> Schon'mal was von Sockeln gehört?
> Möööp, Mega128
Es gibt Sockel dafür. Die kosten nur ungefähr 10 Mal so viel wie der µC 
selber...

von Sumynona (Gast)


Lesenswert?

> Es gibt Sockel dafür. Die kosten nur ungefähr 10 Mal
> so viel wie der µC
selber...
Weiß ich. Lohnt sich also privat / im hobbybereich nicht. Solche Sockel 
taugen imho nur was für Evalboards (oder um mit einer Schaltung viele 
Controller zu flashen ohne sie verlöten zu müssen... Fraglich ist dann 
aber, wie lang der Sockel das mitmacht)

von Josef K. (josefk)


Lesenswert?

Also zum Thema Hardware: Die Hardware an sich hat sich schon mal bei nem 
anderen Projekt bewährt. Leider habe da nicht ich, sonder eine Firma 
(die FH zahlts) die ICs aufgelötet bzw. gebacken. Die Bauteile waren 
größtenteils gleich bzw. und ich habe versucht auch hier die gleichen 
Bauteile zu verbauen.
Die Leds sind 0815 Dinger vom Reichelt (Art.Nr.: LED 3MM GN). Das 
Datenblatt ( 
http://www.reichelt.de/?;ACTION=6;LA=3;ARTICLE=10227;GROUPID=3018;GROUP=A5331;SID=31BugcOKwQAR8AAE1Tah423131d34189479af9095266ec05b4951) 
sagt 20mA. Ich dachte das schafft der µC, oder nicht?

PS: Das mit dem Reset ist so ne Sache. Die Platine ist meine erste 
selbst gelayoutete und im Eifer des Gefächtes habe ich die ISP 
Schnittstelle mitsamt dem dem Widerstand gegen Reset etc. vergessen. 
Naja. Jetzt habe ich eine teure Platine ohne Programmierschnittstelle 
(Bootloader über USB ist meine Notlösung). Man lernt nie aus, und sowas 
sollte mir wohl nicht mehr passieren :)

PPS: Was ist mit dem Bus? Hab keine Zeichenrichtlinien gefunden, daher 
hab ichs mal frei Schnautze gezeichnet. Wie macht man das richtig?

von Pete K. (pete77)


Lesenswert?

Du hast auch die Abblockkondensatoren beim ATMega vergessen.

von Walter T. (nicolas)


Lesenswert?

> sagt 20mA. Ich dachte das schafft der µC, oder nicht?

Mit 1k Vorwiderstand werden das aber keine 20mA, eher 2mA

von Tom (Gast)


Lesenswert?

LEDs richtig rum drin ?
Miss mal die Spannung am Port-Pin.

von J. K. (rooot)


Lesenswert?

Hast du mal das Potential auf beiden Seiten der Led gemessen?

Liegen überhaupt 5V an?
Zieht der µC Pin auf Masse? (ist ein bisschen schwierig bei SMD, 
Vorsicht !)

Probier mal den ganzen DDRE auf FF zu schalten, wenn nichts anderes 
dranhängt.

@Hardware:
bei 1k Vorwiderstand müsste LED sicher leuchten. Ist normal gar nicht so 
viel unterschied zwischen 2mA und 20mA (Auge logarithmiert)

MfG
J.K.

von Josef K. (josefk)


Lesenswert?

Also das mit den 1k Ohm dachte ich mir auch schon, daher habe ich mal 
330 Ohm für die grüne LED vorgeschaltet. Keine Verbesserung. Die Led ist 
richtig herum drinnen und sie funktioniert auch (zumindest mit 
Netzgerät).
An der Kathode (abgeflachte Seite) liegt der µC und an der Anode 5V. Das 
sollte stimmen. Die 5V sind auch real existent und bei DDRE=0xFF ist 
sind an der Kathode bei Rot für LED_RT(1); 3,6V und bei LED_RT(0); 5V.
Bisschen hoch für Masse, oder?

von AC/DC (Gast)


Lesenswert?

>bei 1k Vorwiderstand müsste LED sicher leuchten. Ist normal gar nicht so
>viel unterschied zwischen 2mA und 20mA (Auge logarithmiert)

Bei ner 5mA-Type vielleicht, wenn man im Dunkeln sitzt.
Bei einer 20mA-Type muß der Vorwiderstand auf 150 Ohm runter
sonst wird das nichts und das schafft der µC dann wohl auch nicht
ohne warm zu werden. Also entweder ne 5mA-Type nehmen oder einen
Transistor als Verstärker.

Rechnerisch gilt(Ub-Vf)/IF  ~ 5V-2,1V/ 0,005  = 580 Ohm (f.5mA-Typ)

von Bernd (Gast)


Lesenswert?

"sind an der Kathode bei Rot für LED_RT(1); 3,6V und bei LED_RT(0); 5V.
Bisschen hoch für Masse, oder?"

Das ist ja auch nicht Masse, was Du an der Kathode der LED mißt, das ist 
5V-LED-Flußspannung. Flußspannung also so bei 1,4V.
Weiterhin hat der alte Ohm rausgefunden, daß bei 3,6V über 1k Widerstan 
so ungefähr 3,6mA fließen.
Die (schlechte) LED sollte also etwas leuchten.

Für diese Späße nehme ich gerne low-current-LEDs, da quält man die uCs 
und die Umwelt nicht so sehr. Bei 3mA haben die schon die volle 
Helligkeit.

von Josef K. (josefk)


Lesenswert?

Verdammt. Das klingt alles logisch. Da hab ich wohl Mist gebaut. Ich 
muss gestehen, ich hab die Dinger immer aus nem kleinen Sortiment 
rausgezogen und hab wohl immer ne lowcurrent erwischt bzw. der schlaue 
Mann der die Dinger gekauft hat, hat in weiser Vorraussicht nur 
LowCurrent gekauft.
Dann bin ich ja mal gespannt was da sonst noch im argen liegt bei meiner 
Platine ;)
Danke für die Hilfe.

von Josef K. (josefk)


Lesenswert?

@Pete K.
Die sind dran. Man sieht sie nur in diesem Ausschnitt der Zeichnung 
nicht.

von cguru (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#include <stdint.h>
3
4
int main(void)
5
{
6
     DDRE = (1<<PE2);
7
8
     while(1)
9
     {
10
         PORTE = 0;
11
     }
12
     return 0;
13
}

das ohne optimierungen compilieren und flashen, auch bei 1k sollte die 
rote doch leuchten...denke ich :)

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.