Doppel-Hex-Anzeige am 8-Bit-Port.

Gast #674422
Lesenswert?

Werte AVR-Gemeinde.
Da habe ich nun zur Probe zwei Hex-Dekoder
nebst Lichtschacht-Anzeige an den PortA angeschlossen.
Außerdem habe ich ein kleines Test-Programm (siehe Anhang)
in meinen AtMega8515 geladen.
Beim Ausprobieren wechselt die Anzeige aber immer nur zischen 0F und FF.
Eigentlich wollte ich doch folgende Reihenfolge sehen:
Hex00
Hex55
HexAA
Hex00
usw...
Dabei hängt ein Dekoder an den untersten 4 Bit und der andere an den 
oberen.
Oder mache ich da einen furcht baren Denkfehler.
Im AVR-Simulator läuft es aber so, wie ich es haben will.
Vielleicht weiß da jemand Rat.
Vielen Dank: Wolfgang.
Angehängte Dateien:
#674518
Lesenswert?

Um erstmal festzustellen, ob ein Hardware- oder Softwarefehler
vorliegt, würde ich das folgende Programm mit verschiedenen
'ldi'-Werten nacheinander einspielen und die Pegel am Port A
und die Sinnfälligkeit der angeschlossenen Anzeige kontrollieren.


...

prog_start:

  ldi sr16,$00   ;verschiedene Werte testen
  out PortA,sr16
LOOP:
  rjmp LOOP      ;dynamischer Halt


Ich kann beim groben Überfliegen erst mal keine offensichtliche
Softwaremacke erkennen.

Vielleicht postest du noch mal den Typ des Hex-Dekoders oder
auch die ganze Schaltung, wobei die nach deiner Beschreibung
eigentlich klar ist :-)

Gruß Reinhard
Gast #674553
Lesenswert?

Nachtrag.
Erst mal vielen Dank für Eure Antworten.
Ich habe es auch auf der STK500-Platte laufen lassen.
Da zeigen die LED's den selben Mist.
Die Anzeige per LED's und Dekoder ist also identisch.
Deswegen glaube ich nun meiner Dekoder-Anzeige.
Als Dekoder habe ich fertig programmierte PAL16V8,
welche schon in einer anderen Anwendung funktionierten.
Es bleibt erst mal bei 0F und danach FF usw...
Das hätte ich wohl besser noch gleich dazu sagen sollen.
Natürlich werde ich Eure Vorschläge auch noch probieren.
Danke: Wolfgang.
Gast #674574
Lesenswert?

Nachtrag.
Habe nun noch folgendes probiert, was mit meinen Dekodern und STK500 
geht.
Auf den Dkodern gibt es jetzt wirklich abwechselnd 55 und AA zu sehen.
Das geht erst mal. Werde also weiter probieren.
Falls aber jemand noch eine Idee hat, nur raus damit.
Vielen Dank: Wolfgang.
Angehängte Dateien:
Gast #674777
Lesenswert?

Hallo.
Das hälst Du nicht für glaubst Du kaum. Grins.
Nachdem ich noch folgendendes geändert habe,
läuft es jetzt endlich, wie ich es will.
         ldi sr23, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
         out SPL, sr23
         ldi sr23, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse
         out SPH, sr23

;  Ldi ZL,Low(RamEnd)
;  Out SPL,ZL
;  Ldi ZH,High(RamEnd)
;  Out SPH,ZH

Siehe auch zz.asm
Vielen Dank für Eure Bemühungen.
Gruß: Wolfgang.
Angehängte Dateien:
#675074
Lesenswert?

Sebastian Eckert wrote:
> Ach, ist ja interessant. Also muß man für das Initialisieren des Stack
> Pointers ein explizit angegebenes Register verwenden und nicht eine vom
> Assembler verwaltete Variable?

Nö, muss man nicht. Da geht jedes obere (immidiate-taugliche) Register.

...

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