Forum: Mikrocontroller und Digitale Elektronik Kriege kein LED angesteuert.


von Nils (Gast)


Angehängte Dateien:

Lesenswert?

Hi Ihr lieben!

Ich habe mir vorgenommen ein kleines Lauflicht zu machen.
Jedoch bekomme ich meine LED'S einfach nicht angesteuert... hmm und ich 
kann mir das einfach nicht erklären ...
Ich Messe an den Ausgängen die ich ansteuere 0,3- 0,5 V gegenüber 
Masse... obwohl eigentlich ein High anliegen sollte..

Vielleicht kann mir jemand Helfen, der sich mit typischen Anfänger 
fehlern auskennt :D

Ich habe ein Prinzipschaltbild beigefügt...

Danke

Gruß Nils

von Frank (Gast)


Lesenswert?

Nach ausgiebiger Lektüre deines Programmcodes kam ich zu dem Schluss das 
da wohl ein Fehler drin sein muss...

von Nils (Gast)


Lesenswert?

Hmm mag sein jedoch funktioniert meine Programmierung auf dem 
Entwicklungsboard STK 500 ...

Ich Programmiere übrigens mit BASCOM ..
habe einfach mal ein TEST gemacht um die 4 LED`S anzusteuern..

CODE:

$regfile = "m8515.dat"


Config Portd = Output


Portd = &B00001111

Do

Loop


Kann ja eigentlich nicht viel falsch sein, da es nicht viel 
Beinhaltet...

von Nils (Gast)


Lesenswert?

Hat keiner eine Idee, der sich mit BASCOM auskennt?..

Bitte ich komme einfach nicht weiter :(

Gruß NILS

von Rahul D. (rahul)


Lesenswert?

>Portd = &B00001111

Versuch mal:

Portd = &B11110000

oder
Portd = &B01010101

von Franz-Rainer (Gast)


Lesenswert?

Der AVR kann nur einige mA Strom liefern.
In dieser Schaltung funktionieren nur LED's mit max.2-3mA.
Wie groß sind die Vorwiderstände?

von Björn W. (bwieck)


Lesenswert?

Franz-Rainer wrote:
> Der AVR kann nur einige mA Strom liefern.
> In dieser Schaltung funktionieren nur LED's mit max.2-3mA.
> Wie groß sind die Vorwiderstände?

Und sind die LEDs überhaupt richtigrum angeschlossen ?

von Franz-Rainer (Gast)


Lesenswert?

Ja

von Rahul D. (rahul)


Lesenswert?

>Der AVR kann nur einige mA Strom liefern.
>In dieser Schaltung funktionieren nur LED's mit max.2-3mA.

Einige zig-mA... Dazu bietet sich an, sich das Datenblatt anzugucken:
Der AVR kann bis zu 40mA pro pin schalten, wobei es maximal 200mA 
verträgt.
(Seite 197 des vollständigen Datenblattes)


>Hmm mag sein jedoch funktioniert meine Programmierung auf dem
>Entwicklungsboard STK 500 ...

Die LEDs des STK500 leuchten, wenn man eine 0 in den Port schreibt.
Deine Schaltung erfordert aber eine 1...

[OT]
Und wieder ein Bascom-"Programmierer", der sämtliche Klischees 
erfüllt...
[/OT]

von g0nz00 (Gast)


Lesenswert?

Man schaltet bei einem AVR über "0" und legt die LED`s mit dem 
Weiderstand an VCC, da der AVR nur 2-3 mA bei "1" liefern kann und bei 
"0" können es 20mA sein. oder du nimmst Low Curent LED`s die haben 2V 
und 2mA dann klapt es immer 1,5K Ohm gegen 5V und los gehts.

+5V o-------|____|-----|>|--------o Port AVR

von Franz-Rainer (Gast)


Lesenswert?

Bei normalen LED's die ca. 10-20mA brauchen:
R = 220R
LED's rumdrehen von Masse abklemmen und an +5V legen.
Eine LED leuchtet dann wenn du eine "0" ausgibst.

von Nils (Gast)


Lesenswert?

Die Widerstände liegen um bei je 300 Ohm ... hmm das würde natürlich 
heißen, das ca. Strom von 10mA fließen sollte, pro pin.. ...

Hmm im Datenblatt hatte ich aber gesehen das I/O Pins bis 40 mA belastet 
werden können ..
Und einen maximalen Strom von 200mA ins gesammt gefordert werden .. kann 
.. oder irre ich da ??

... würde eigentlich Sinn ergeben .. denn alle Ausgänge die Auf High 
gestellt sind .. liegen bei 0,3-0,5 V ..
Hmm ist es möglich, dass die Spannung am Controller zusammengebrochen 
ist ???

Gruß Nils

von Franz-Rainer (Gast)


Lesenswert?

Ja genau.

[OT]
Und wieder ein Bascom-"Programmierer", der sämtliche Klischees
erfüllt...
[/OT]

Leute hackt nicht immer auf Anfängern rum.

Auch wir wurden nicht mit unserem Wissen geboren.
Auch wie man Datenblätter richt liest muß man lernen.
Mit der Zeit klappt das aber.
Also nur Mut zum Fehler.

von Nils (Gast)


Lesenswert?

Danke ..

Für die Hilfe ...

Besonderen Dank an dich Franz-Rainer, das ist die richtige Einstellung 
!!!

von Peter D. (peda)


Lesenswert?

Rahul Der trollige wrote:

> [OT]
> Und wieder ein Bascom-"Programmierer", der sämtliche Klischees
> erfüllt...
> [/OT]


http://www.8052.com/forum/read.phtml?id=136269

 "DO NOT BE ANNOYING, DO NOT BE EASILY ANNOYED.


Peter

von Peter D. (peda)


Lesenswert?

@Nils,

versuch mal je 100µF+0,1µF vor und hinter dem 7805 und nochmal 0,1µF 
direkt am MC.


Peter

von holger (Gast)


Lesenswert?

Und Reset bitte nicht direkt an VCC anschliessen.
Am besten über 47k Widerstand.

von Christian (Gast)


Lesenswert?

Hallo!

Also für mich klingt das so, als ob der Port nicht als Ausgang 
konfiguriert ist, sondern als Eingang. Dann schaltet man mit PORTD nur 
die Pullups ein, was dann dieses Verhalten erklärt. Überprüfe doch noch 
mal, ob diese Zeile:

Config Portd = Output

auch wirlich das tut, was man von ihr denkt. Damit werden dann immer 
alle 8 Pins gleichzeitig als Ausgang koniguriert?

Ich schließe meine LEDs auch immer so wie oben an und die AVRs können 
auch den entsprechenden Strom liefern. Im Datenblatt zum Mega8535 steht 
folgendes:

"Although each I/O port can source more than the test conditions (20mA 
at Vcc=5V, 10mA at Vcc=3V) ... ports D0 - D3 should not exceed 100 mA 
... ports D4 - D7 should not exceed 100mA"

Viel Erfolg!
Grüße,
 Christian, der noch nie in BASCOM programmiert hat

von Nils (Gast)


Lesenswert?

Hmm also ist es erforderlich einen Widerstand parallel zum REST zu 
schalten??

Naja eigentlich sollten die Ports schon richtig Konfiguriert sein!
Habe sie als Ausgang deklariert und das STK 500 beweißt mir, dass es 
nicht falsch sein kann Dort kann ich ja meine LED`s auf Masse schalten 
und sie Leuchten.

Was mich einfach nur Verwirrt ist, dass ich an den Ausgängen, wo ich ein 
High habe keine 5 V habe.

Habe gerade mal die LED's abgeklemmt und die Spannungen nochmal 
gemessen.
Es ist das selbe...

Ich muss wohl in der HARDWARE irgendwo einen fehler eingebaut haben, 
wenn ich noch nicht mal 5 V habe, wenn ich ledeglich die VDD - GND und 
RESET angeschlossen habe ?? !!

Verdammt ich weiß einfach nicht was falsch sein könnte..


Gruß Nils

von Peter D. (peda)


Lesenswert?

Nils wrote:

> Naja eigentlich sollten die Ports schon richtig Konfiguriert sein!
> Habe sie als Ausgang deklariert und das STK 500 beweißt mir, dass es
> nicht falsch sein kann Dort kann ich ja meine LED`s auf Masse schalten
> und sie Leuchten.

Und was sagen die Fuses ?

Hast Du überhaupt den internen RC-Oszillator eingeschaltet ?
Das STK500 liefert ja einen Takt (3,6MHz).

Und das Brownout-Reset sollte man auch immer einschalten.


Peter

von Nils (Gast)


Lesenswert?

Hmm ich schätze mal da könnte der Fehler liegen...

Das habe ich nicht ..

Doch ich bin ein wenig überfragt, für welchen Frequenz ich mich bei dem 
internen RC-Oszillator entscheiden sollte?

Sorry Brownout Reset sagt mir gar nichts :( .. kann mir das mal jemand 
erläutern??

Danke Gruß Nils

von BASCOM-Looser (Gast)


Lesenswert?

Nils!
wie wagst Du es, in so einem *HIGHTECH*- Forum voller C-Programmierer so 
eine Frage zu stellen.
Als BASCOM Anfänger solltest Du in den Keller gehen und Dich in die Ecke 
stellen und schämen!!


Nun zu Deinem Problem:
Mit der "falsch" angeschlossenen LED haben die bisherigen Posts sicher 
recht, dies ist nicht "State of the art"
Zum BASCOM-Problem bin ich selbst schon x-mal hereingefallen, deshalb 
verwende ich jetzt immer direkt die Register:

DDRD =&B00001111 ' in Deinem Fall.
Mit diesem Programm solltest Du ein Lauflicht an Deinen LEDs erhalten:

$regfile = "m8515.dat"

Dim Bpinvar As Byte
Bpinvar = 0
Ddrd = &B00001111                                           'this will 
set portD1.0,portD.1,portD.2 and portD.3 to use as outputs
Portd = &B00001111

Do
  Portd = Bpinvar
  Incr Bpinvar
  Bpinvar = Bpinvar And &B00001111
  waitms 500
Loop
************
Testen kannst Du das mit dem eingebauten Simulator. (Ja, das gibt es bei 
BASCOM und ist im Preis enthalten) Unter LCD findest Du die Portanzeige.
Pass auch auf bei der Inputfunktion! PORT, PIN, DDRx sind allesamt sehr 
unklar beschrieben.


Nochmals ENTSCHULDIGUNG an alle C-Programmierer, daß hier auch ein paar 
BASCOM-Looser sind.
Ich bin bekennender BASCOM-Anwender und kann in C und C++ programmieren. 
Allerdings nicht mit keiner dieser GNU-Compiler. Ich verwende meine Zeit 
zum Programmieren und nicht um in stundenlanger Arbeit erst einmal meine 
Entwicklungsumgebung zum Laufen zu bringen.
Wenn ich ein Loch bohren will, kaufe ich mir eine vernünftige 
Bohrmaschine und fange nicht an, mit Schweissdraht einen Drillbohrer zu 
basteln. BASTA.

Gruß, mach weiter mit BASCOM, Lukas




Hier ein Auszug der BASCOM-Hilfe

'Again, note that the AVR port pins have a data direction register
'when you want to use a pin as an input it must be set low first
'you can do this by writing zeros to the DDRx:
'DDRB =&B11110000  'this will set portb1.0,portb.1,portb.2 and portb.3 
to use as inputs.

'So : when you want to use a pin as an input set it low first in the 
DDRx!
'     and read with PINx
'     and when you want to use the pin as output, write a 1 first
'     and write the value to PORTx

von Rahul D. (rahul)


Lesenswert?

[OT]
Da habe ich ja mal wieder was schönes angefangen.
Mit meinem OT-Beitrag (den ich mir doch lieber hätte verkneifen sollen), 
wollte ich eigentlich eher auf die Vorgehensweise eingehen - Ist halt 
nach hinten losgegangen...

Aus den Nils Postings ist leider nicht hervorgegangen, dass er mehr als 
nur diese eine Bit-Kombination ausprobiert hat oder vielleicht mal das 
Multimeter gezückt hat.

Die Datenblattangabe bezog sich auch auf Franz-Rainers Posting, der hier 
mit falschen Tatsachen umsich geworfen hat. Ergo war die 
Verallgemeinerung auf alle Bascom-"Programmierer" etwas überflüssig.

Entschuldigt bitte, dass ich mal wieder nicht an mich halten konnte.
[/OT]

von Nils (Gast)


Lesenswert?

Ich Danke vielmals das ihr mir geholfen habt.
Ich habe es endlich zum Funktionieren gebracht und das hätte ich ohne 
Eure Hilfe nie geschaft.

Mir war nicht bewusst, dass ich den internen Oszillator noch 
Konfigurieren muss. Habe die Vorlage die vom STK 500 gegeben wird als 
selbstverständlich angesehen und nicht damit gerechnet, dass der interne 
ozillator nicht voreingestellt ist..

Ich hoffe ich habe nicht zu viele Nerven gekostet ...

Danke

Gruß Nils

von Franz-Rainer (Gast)


Lesenswert?

Habe mich auf den AT90S1200 bezogen, und seit dem nicht mehr um die 
Ausgangsports gekümmert.
Ergab sich auch keine Notwendigkeit dazu, weil sie bei meinen Projekten 
eh nie höher belastet wurden.

Output High Voltage I  = 3 mA, V  = 5V
                    I  = 3 mA, V  = 3V
(Ports B,D)

Gruß am Samstag

von Franz-Rainer (Gast)


Lesenswert?

Funktionierts den jetzt?

von Nils (Gast)


Lesenswert?

Jeap Funktioniert ^^

Danke

Gruß Nils

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.