3x7 Segment-zähler-attiny2313

OP #633716
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
#633734
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren