Forum: Mikrocontroller und Digitale Elektronik LPM und r0


von EMSEK (Gast)


Angehängte Dateien:

Lesenswert?

Habe ein Problem, immer wenn ich daten aus dem Flash auslese und dann r0
mit mov kopiere kann ich es nicht ausgeben, zwar kopiert er alles in
das neue register aber am stk selbst werden die lämpchen nur schwach
leuchtend angezeiht undzwar alle und nicht die die leuchten sollen.

Habe auch probiert r0 direkt auszugeben im simulator klappt alles prima
aber sobald es dies im chip tun soll das selbe problem.
Anbei mal der unkommentiere Quelltext, is eigentlich so simpel das es
klappen müßte aber der Teufel steckt im detail

Weiss etvl wer nen rat?
Assembler,stk500,

von leo (Gast)


Lesenswert?

hab den source zwar jetzt nur kurz überflogen, aber ein paar
Ungereimtheiten fallen mir auf.

1) wofür ist das compare r18 mit 0 ? (würde bei STK doch bedeuten daß
du alle Tasten gleichzeitig drückst??

2) Im ersten Durchlauf ist alles in Ordnung, du initialisierst den
Pointer z und liest erst die linken, dann die rechten 4 LEDs, danach 0.
und ab dann icrementierst du den pointer lustig weiter bis er bei 2^16
überläuft und wieder bei 0 anfängt. Dabei wird natürlich ausgegeben was
immer im Memory steht. -> Ende der Tabelle abfragen und gegebenenfalls
pointer wieder auf daten: setzen

3) das Ganze passiert viel zu schnell, wenn du z.B. mit 8MHz taktest
sind alle (65000) Datenstellen in 80ms dargestellt worden (Dein Program
braucht ca. 10 Takte pro Runde). Je nach dem wieviele 0 und 1 jezt im
Memory stehen werden die LEDs unterschiedlich hell leuchten, den
Bewegungsablauf wist du mt freiem Auge nicht mitbekommen. -> delays
einbauen oder mit Timerinterrupt arbeiten.

grüße leo

von EMSEK (Gast)


Lesenswert?

Zu 1 : Naja wenn er irgendwann aus dem flash null liest soll er stoppen
.


Das ist alles immer recht irritierend wenn es im Avrstudio simuliert
funktionniert und in  der Praxis dann nicht mehr, zudem habe ich in
anderen Programmen delays eingebaut und es ändert sich nix.
hmm hat evtl. jemmand ein beispiel welches bei ihm funktioniert
?irgendein Lauflicht ?

von Uwe (Gast)


Lesenswert?

Hi!
Ist klar, wenn du nicht auf 0 testest kann es nicht gehen.
Habe schnell mal was eingefügt was die Sache erledigt.

loop:
  lpm

        tst r0
        brne ok
        ldi zl,low(daten*2)
        ldi zh,high(daten*2)
        rjmp loop

ok:  in r18,pind
  cpi r18,0b11111110
  breq knopf.


MFG Uwe

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.