Hi, im Anhang ist der Quelltext für den Attiny 2313. Er sollte per multiplexing 3 siebensegmentanzeigen ansteuern, aber dabei kommt nur "wirres Zeug " raus. dh.: Wenn man in die Register ein, zehn und hundert die "5"lädt, wird nicht 5 angezeigt, sondern irgendwas...am font liegt es nicht, die anzeigen machen unabhängig voneinander den fehler Ich finde meinen Fehler nicht, kann sich evtl. jmd den Quelltext ansehen? Danke. Mfg Und3rt4ker
Ich glaube, da fehlt was. Ich sehe, daß du die Font-Basisadresse in ZH:ZL einlädst. Dann addierst du den Ziffernwert zu ZL dazu. Und da liegt, glaube ich mal, das Problem. Wenn die Fontdaten über eine Seitengrenze hinausgehen, läuft ZL über und er lädt stattdessen den Inhalt vom Seitenanfang ein. Lösen könnte man es so:
1 | clr mpr ;neu Dummynull für den add with carry |
2 | ldi ZL, LOW(font*2) ; Font-adresse in den |
3 | ldi ZH, HIGH(font*2) ; Z-Pointer laden |
4 | add ZL, ein ; Adresse des Z-Pointers um wert der anzeige erhöhen |
5 | adc ZH, mpr ;neu 0 und den beim add entstandenen Überlauf dazuaddieren |
6 | sbi enable,2 |
7 | sbi enable,1 |
8 | cbi enable,0 |
9 | ; out enable, mpr ;den hier verstehe ich nicht ganz, die Stellen werden schon durch die SBI/CBI aktiviert, resp. abgeschaltet. Rausnehmen, sage ich mal |
10 | lpm ; Lese Fontdaten in R0 |
11 | ; mov mpr, r0 ; Der ist auch überflüssig, denn |
12 | out segmente, r0 ; geht laut AVR-Doku genauso |
add immediate mit carry kann der AVR leider nicht, deshalb über den Umweg eines auf 0 gesetzten Registers. Wird der Überlauf vergessen, fehlt anschliessend der Seitenwechsel. Die mit 'neu' gekennzeichneten Stellen auch in den beiden anderen Blöcken einbauen. Die auskommentierten Zeilen können auch aus den anderen Blöcken raus, sofern vorhanden. Gruss Jadeclaw
ist es eigentlich egal ob man: font: .db XXXX,XXXX,XXXX,XXXX oder font: .db XXXX .db XXXX .db XXXX .db XXXX schreibt? Das müsste doch äquivalent sein. mfg
Nein. Zumindest in Atmels Assembler erzeugt .DB immer eine ganze Anzahl Worte. Folglich ist .db 1 .db 2 äquivalent zu .db 1,0 .db 2,0
Jou, gibt aber auch entsprechende Warnings aus ("...Padding zero byte...").
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.