mikrocontroller.net

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


Autor: Wolfgang Meyer (Gast)
Datum:
Angehängte Dateien:

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

Autor: Reinhard R. (reirawb)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Debugger fragen und Spannungen am Port messen.

Autor: Wolfgang (Gast)
Datum:

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

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

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

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

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

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

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

Autor: Sebastian Eckert (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

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.