www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPM und r0


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

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

Autor: leo (Gast)
Datum:

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

Autor: EMSEK (Gast)
Datum:

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

Autor: Uwe (Gast)
Datum:

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

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.