Forum: Mikrocontroller und Digitale Elektronik Doppel-Hex-Anzeige am 8-Bit-Port.


von Wolfgang Meyer (Gast)


Angehängte Dateien:

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.

von Reinhard R. (reirawb)


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

von Gast (Gast)


Lesenswert?

Debugger fragen und Spannungen am Port messen.

von Wolfgang (Gast)


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.

von Wolfgang (Gast)


Angehängte Dateien:

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.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.
Auch das funktioniert noch (siehe neues z.asm).
Der Mist geht offenbar dann los,
wenn ich anfange die Zeitschleifen als Unter-Programme einzubinden.
Wolfgang.

von Wolfgang (Gast)


Angehängte Dateien:

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.

von Sebastian Eckert (Gast)


Lesenswert?

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?

von Hannes L. (hannes)


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.

...

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
Noch kein Account? Hier anmelden.