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
Nach ausgiebiger Lektüre deines Programmcodes kam ich zu dem Schluss das da wohl ein Fehler drin sein muss...
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...
Hat keiner eine Idee, der sich mit BASCOM auskennt?.. Bitte ich komme einfach nicht weiter :( Gruß NILS
>Portd = &B00001111
Versuch mal:
Portd = &B11110000
oder
Portd = &B01010101
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?
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 ?
>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]
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
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.
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
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.
Danke .. Für die Hilfe ... Besonderen Dank an dich Franz-Rainer, das ist die richtige Einstellung !!!
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
@Nils, versuch mal je 100µF+0,1µF vor und hinter dem 7805 und nochmal 0,1µF direkt am MC. Peter
Und Reset bitte nicht direkt an VCC anschliessen. Am besten über 47k Widerstand.
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
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
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
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
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
[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]
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.