Hallo Forum, ich beschäftige mich seit kurzer Zeit mit dem Thema uC und habe nun mein erstes "großes" Projekt angefangen. Soweit funktioniert auch alles einigermaßen, bis auf ein Problem, was ich weiter unten beschreiben werde. Zunächst einmal eine kurze Erklärung meines Vorhabens. Für eine RGB Leiste im Wohnzimmer, welche zur Zeit über den mitgelieferten Controller betrieben wird, möchte ich mir eine eigene Steuerung bauen. Dazu habe habe ich das angehänge Programm geschrieben, mit dem ich bisher die drei Farben auswählen kann und anschließend die Werte für die OCR eingeben kann, die Werte zu den jeweiligen Farben werden auf einem LC Display angezeigt. Nach einem Reset, wird auf dem Display "Farbe waehlen" angezeigt, dieser Text verschwindet, nach der ersten Auswahl einer Farbe. Das Problem besteht jetzt darin, dass wenn ich jetzt nicht nach dem Reset die Taste zur Farbauswahl, sondern zur Erhöhung des Wertes betätige, dann scheint es, als ob alle Strings, welche ich am Ende des Quellcodes angefügt habe nacheinander angezeigt werden. Das Programm läuft auf einem Mega16 am STK500. Ich habe die lcd-routines etwas verändert, daher habe ich sie auch angehängt, falls jemand das Programm mal testen möchte. Meine Vermutung, ist, dass durch die Taste der Z-Pointer irgenwie erhöht wird, aber WIE ist mir ein Rätsel. Vielleicht gibt es ja jemanden, der mir helfen kann und möchte. Viele Grüße Stefan
Da sich so lange Zeit keiner gemeldet hat, wage ich mal einen Vorstoß: Nichts gegen Assembler. Aber in meinen Augen hast du die Grenze schon überschritten, wo ich das in C schreiben würde. Mich da lange mit einem Z-Pointer rumzuschlagen und auf welchen Wegen der einen falschen Wert bekommt, dazu wär mir die Zeit zu schade. Ich weiß, das hilft dir jetzt nicht viel und es ist nicht das was du hören wolltest. Aber so ist die Situation: Das sind Probleme um die soll sich der Compiler kümmern. Nichts für ungut.
Ich möchte das Projekt noch mit Assembler zuende führen und dann mit der C Programmierung anfangen. Trotzdem danke für den Tipp
@Stefan
zieh mal dein include von "lcd-routines.asm" vor die Texte, oder ergänze
die Textzeilen die eine ungerade Länge ergeben (für die gibt's ja immer
eine Warnung) mit einem weiteren Nullbyte. Das macht zwar der Assembler
eigenlich von selbst, hab da aber auch schon die merkwürdigsten Dinge
erlebt, wenn danach noch Code kommt.
@Karl heinz
>Nichts gegen Assembler. Aber in meinen Augen hast du die Grenze schon
überschritten, wo ich das in C schreiben würde.
das ist wohl Ansichtssache - hab auch schon einen Webserver mit ASM
hinbekommen.
Sascha
Hey Sascha, wenn ich die lcd-routine vor das Programm einfüge, funktioniert der Spaß nicht, weil der dann einfach in der lcd-routine anfängt zu arbeiten und sich darin logischerweise aufhängt. Werde mal die Nullbytes anfügen. Grüße Stefan
Stefan schrieb: > Hey Sascha, > > wenn ich die lcd-routine vor das Programm einfüge, funktioniert der Spaß > nicht, weil der dann einfach in der lcd-routine anfängt zu arbeiten und > sich darin logischerweise aufhängt. ?? hinter den Programmcode aber vor den Texten! An sonsten natürlich hinter den Sprung auf Start am Begin des Programms. Wobei ich nach .CSEG ein .ORG 0 und anschließend die komplette Tabelle mit INT-Vektoren (mit RETI auffüllen) empfehlen würde. Sascha
Sascha, ist es vielleicht einfach nur das Tastenprellen, das es dem Kontroller so vorkommen lässt, als hättest Du die Taste gleich mehrfach hintereinander gedrückt? Gegen das Tastenprellen hast Du, soweit ich sehe, gar keine Vorkehrungen getroffen. Mach ruhig weiter in Assembler - ich habe damit auch schon sehr grosse Projekte erfolgreich ans Laufen gekriegt ;- ) mare_crisium
Hi
Ich vermisse jegliche Tastenentprellung
>ldi color,(0-1) ; Auswahlregister auf "1"(Rot)
Nö. Damit wird color $FF.
MfG Spess
Wie Sascha auch sagt: Füge die komplette Sprungtabelle der IRQs ein, auch wenn diese nur aus RETI und NOP besteht. Schreibe hinter das include der Routinen ein NOP. Hat bei mir schon mal geholfen, weiß aber nicht warum. Ansonsten, lass dich von ASM nicht entmutigen. Mein aktuelles Projekt hat jetzt 1500 Zeilen ASM und ist noch lange nicht fertig.
Danke für die vielen Antworten. Die Tasten, habe ich noch nicht entprellt, dass kommt später mit der Autorepeatfunktion. Will mich erstmal auf den PWM Kram konzentrieren. Meine Taster prellen nur sehr wenig, von daher ist es zu Testzwecken vertretbar. Okay, werde das mit den Interrupteinsprüngen machen! Ebenso mit der include file. Melde mich, wenn ich was neues hab. Vielen Dank schonmal!!!
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.