hallo ihr lieben,
kann mir vll einer von euch weiter helfen?
Ich grad abissal an denk fehler und komm nicht weiter, habe versucht
meine LED zum blicken zu bringen. mit dem on_reset und der main_loop hab
ich geschafft sie mal zum leuchten zu bringen aba der zeit blinkt sie
nich so schnell dass ma des mit freiem auge nicht sieht, jetz hab ich
versucht mit den delay_loops da einbisschen herum zu spielen. was aber
leider nicht funktioniert :( freu mich über jeden Tipp danke
im anhang hab ich den code von mir.
Du hast Glück, dass ich zu spät gesehen habe, dass du ein Word File
hochgeladen hast, Da hatte ich schon draufgedrückt.
WElcher Teufel hat dich geritten, dein Programm in ein Word-File zu
stellen?
Lade das Assembler-File hoch, so wie du es auf dem Rechner hast! Mehr
braucht es nicht. Das ist für dich am wenigsten Arbeit und für uns auch.
Und die Chancen, dass sich wer das Machwerk ansieht steigen enorm, weil
an und für sich niemand leichtfertig ein Word-File aus dem Web aufmacht.
Müsste das rjmp nicht rcall heissen?
Der Unterschied ist: rcall kehrt zurück beim ret, dafür wird dabei die
Rücksprungadresse auf dem Stack gespeichert.
rjmp kehrt (eigentlich) nicht zurück, deshalb wird die Retouradresse
nicht gespeichert.
Da da aber trotzdem ein RET steht, wird etwas undefinierbares gelesen
und der Prozessor crasht.
Birgit schrieb:
Conny hat ja schon was dazu gesagt
> versucht mit den delay_loops da einbisschen herum zu spielen.
Du brauchst auf jeden Fall 2 Delays. Denn es muss ja 2 mal gewartet
werden! EInmal nach dem Einschalten, einmal nach dem Ausschalten
> was aber> leider nicht funktioniert :( freu mich über jeden Tipp *danke*
Der Tipp lautet:
Überleg mal ein bischen, wie schnell deine Delay Loops abgearbeitet
werden. Dein µC macht (wenn er noch mit den Standardmässigen 1Mhz
arbeitet) rund 900-tausend Befehle in der Sekunde. Was denkst du, wie
lange es dauert, bis der von 1 auf 0 (oder von 230 auf 0)
heruntergezählt hat? Tip: Das kann man berechnen, weil man weiß,
wieviele Takte für jeden einzelnen Befehl benötigt werden und die
Befehle kennt man ja.
Fazit: Es gibt Dinge, die kann man durch 'spielen' rausfinden bzw.
adaptieren. Es gibt aber auch Dinge, die werden einfach mal knallhart
ausgerechnet bzw. bestimmt und dann zieht man seine Schlüsse.
oh sorry... des mit dem Word war nicht bös gemeint :)
haha is mein erster eintrag in so ein forum, man lernt ja nie aus :)
wenn ich nicht alles täuscht arbeitet er mit 4 MHz.
Danke für die Tipps ich werd sie gleich mal aus probieren!!
Tip:
ein Register von 0xFF runter zu zählen reicht nicht.
Das geht so schnell, dass du kein blinken erkennen wirst.
Das Register mus mehrfach runtergezählt werden. Das erreicht man durch
eine Art Verschachtelung zweier Zählschleifen.
Delay:
1-Lade Zähler_1
2-Lade Zähler_2
3-Verringere Zähler_2 bis auf 0
4-Wenn Zähler_2 Null ist, DEC Zähler 1 und beginne wieder bei 2
5-Wenn Zähler_1 dann endlich auch Null ist, simmer fertisch.
6-Ret
Andere Frage: Wird so etwas heutzutage in der Schule gelehrt? In
welcher?
Hilfe schrieb:> Andere Frage: Wird so etwas heutzutage in der Schule gelehrt? In> welcher?
Also In der berufsschule als Automatiker Elektroniker lernt man dass,
wenn auch nur kurz, und ich nicht aufgepasst habe-.- leider..
ich studieren eig medizintechnick. aber ich mach grad ein internship im
department of electronic and computer engineering. In da FH zuhause hab
ich hochsprachen programmiert und hier wollen sie dass ich mit assembler
arbeite. Jetz versuch ich mir des irgendwie selbst bei zu bringen.Und da
dacht ich dass es nicht so schwer sein kann eine LED zum blinken zu
bekommen...hahaha abissal verdacht :P
Hallo Birgit,
vielleicht kannst Du mit einem Oszilloskop während Deiner
Programmiererei die Takte an der Led verfolgen. Das Auge kann nur bis
etwa 20 Hz auflösen.
Eventuell kannst Du kapazitiv (über 100nF oder 10nF) ein Headset
ankoppeln und dann einen Schaltton hören.
... kleiner Tip zum debuggen.
Gruß
Bernd
Oliver Bucher schrieb:> Ist zwar nicht blink sondern Blitz artig, funktioniert aber auch, indem> du den Kondensator vergrösserst, verkleinerstOliver Bucher schrieb:> Also In der berufsschule als Automatiker Elektroniker lernt man dass,> wenn auch nur kurz, und ich nicht aufgepasst habe-.- leider..
Den Sinn von LED-Vorwiderstaenden scheint man dort aber nicht zu
lehren..
Birgit schrieb:> ich studieren eig medizintechnick. aber ich mach grad ein internship im> department of electronic and computer engineering. In da FH zuhause hab> ich hochsprachen programmiert und hier wollen sie dass ich mit assembler> arbeite. Jetz versuch ich mir des irgendwie selbst bei zu bringen.Und da> dacht ich dass es nicht so schwer sein kann eine LED zum blinken zu> bekommen...hahaha abissal verdacht :P
Wenn du Hochsprachen schon kannst:
ein Funktionsaufruf ist nichts anderes als ein RCALL. Zurück gehts aus
der Funktion mit einem RET.
Aber auch in einer Hochsprache muss dir klar sein, dass ein 'Schalte LED
ein' 'Schalte LED aus' 'Schalte LED ein' 'Schalte LED aus' ohne
irgendwelche Pausen dazwischen, viel zu schnell für ein sichtbares
Blinken ist. Und zwar zischen JEDER Operation und nicht nur zwischen dem
Einschalten und dem Ausschalten.
in
1
while( 1 )
2
{
3
4
LED ein
5
<-----
6
LED aus
7
<-----
8
}
muss an BEIDEN markierten Stellen eine Wartezeit rein, denn sonst würde
die jeweils gegenteilige Operation zeitlich unmittelbar auf die
vorhergehende folgen und das wäre viel zu schnell.
Helmut Lenzen schrieb:> Den Sinn von LED-Vorwiderstaenden scheint man dort aber nicht zu> lehren..
hehe, lehren schon, nur bei der Anwendung tut s bisschen schwer..:)
Also meiner läuft jetzt schon ca 1 Monat ununterbrochen, mit ca alle
1-1.5 sec blinkung, und das led hats nicht gehauen..
oli
PS. habs von da, und nicht selber gezeichnet..
Eine LED nimmt ja auch nur Schaden, wenn sie längere Zeit überlastet
wird.
In jedem LED-Datenblatt gibt's die maximale Impulsbelastung zu sehen.
Wenn das also mehr blitzt als blinkt, dann ist es nur ein Impuls (der
hoffentlich in den Impuls-Specs liegt) und die LED hat Zeit zum Abkühlen
und es geschieht ihr nichts.
Also hat Helmut Recht, weil da eigentlich ein Vorwiderstand hingehört.
Und die Schaltung ist trotzdem "tragbar", weil's die LED auf diese Weise
aushält.
Conny G. schrieb:> Also hat Helmut Recht, weil da eigentlich ein Vorwiderstand hingehört.> Und die Schaltung ist trotzdem "tragbar", weil's die LED auf diese Weise> aushält.
Was aber nicht durch sorgfältiges Design, sondern sehr "empirisch"
ermittelt wurde.
Conny G. schrieb:> dann ist es nur ein Impuls (der hoffentlich in den Impuls-Specs liegt)
Nennt sich auch in Denglisch: "Development by accident"
Conny G. schrieb:> Also hat Helmut Recht, weil da eigentlich ein Vorwiderstand hingehört.> Und die Schaltung ist trotzdem "tragbar", weil's die LED auf diese Weise> aushält.
Wie gesagt, Der Plan ist nich von mir:
http://www.elektronik-radio.de/41332.html
und ich habe ja nie gesagt, man solle keine Vorwiderstände nehmen..
Udo Schmitt schrieb:> Was aber nicht durch sorgfältiges Design, sondern sehr "empirisch"> ermittelt wurde.
Sorgfältiges Ausprobieren.
Stromquelle.
LED dran.
Fump, Rauchwolke.
"Oh, dann müssen wir sie mal blinken lassen, vielleicht geht's dann.".
Blinkt.
Freut sich.
Minuten später, schmurgel, Rauchwolke.
"Mmmh, kürzer blinken."
Yuhuuh.
Conny G. schrieb:> Also hat Helmut Recht, weil da eigentlich ein Vorwiderstand hingehört.> Und die Schaltung ist trotzdem "tragbar", weil's die LED auf diese Weise> aushält.
Ich würd' eher anders vermuten:
Der Output kann bei weitem nicht die 20mA und wenn, geht die
Ausgangsspannung derart in den Keller dass da wirklich nur roundabout
20mA fließen (lass es 25mA sein oder 30mA, das haut die LED nicht um
noch dazu wenn sie blinkt).
Problem dabei ist: "Wieso geht das jetzt nicht mehr, das ist ja vorher
auch gegangen".
rgds