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