mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kriege kein LED angesteuert.


Autor: Nils (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

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

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat keiner eine Idee, der sich mit BASCOM auskennt?..

Bitte ich komme einfach nicht weiter :(

Gruß NILS

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Portd = &B00001111

Versuch mal:

Portd = &B11110000

oder
Portd = &B01010101

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Björn Wieck (bwieck)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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]

Autor: g0nz00 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke ..

Für die Hilfe ...

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nils,

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


Peter

Autor: holger (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BASCOM-Looser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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]

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktionierts den jetzt?

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jeap Funktioniert ^^

Danke

Gruß Nils

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.