www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 3x7 Segment-zähler-attiny2313


Autor: Daniel Bauer (und3rt4ker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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:
    clr mpr  ;neu    Dummynull für den add with carry
    ldi ZL, LOW(font*2)      ; Font-adresse in den
    ldi ZH, HIGH(font*2)     ; Z-Pointer laden
    add ZL, ein              ; Adresse des Z-Pointers um wert der anzeige erhöhen
    adc ZH, mpr  ;neu  0 und den beim add entstandenen Überlauf dazuaddieren
    sbi enable,2
    sbi  enable,1
    cbi  enable,0
;    out enable, mpr  ;den hier verstehe ich nicht ganz, die Stellen werden schon durch die SBI/CBI aktiviert, resp. abgeschaltet. Rausnehmen, sage ich mal
    lpm   ; Lese Fontdaten in R0
;    mov mpr, r0  ; Der ist auch überflüssig, denn
    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

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jou, gibt aber auch entsprechende Warnings aus ("...Padding zero 
byte...").

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja^^, ist mir jetzt auch gerade aufgefallen. Danke g

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.