mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik in SRAM direkt schreiben


Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe das Problem das ich eine kleine Datemenge sortieren muss. Nur 4
"Arrays" a 2 Bytes. Müsste also einen festen Speicherplatz von 8
BYtes nutzen.


Folgende Situation: ich pop 3 Byte an Daten vom Stack. Das erste Byte
bestimmt die Position ("sortieren"). Die anderen 2 sind Timerwerte
und lese ich zunächst in jeweils ein Register ein (eins für Low und
eins fürs High Byte).

Wie schreibe ich nun diese Bytes an eine für mich nutzbare Adresse
(nutze auch Stack, den ich mit SP, RAMEND initialsiert habe), so dass
alle 8 Bytes hintereinander stehen. Und wie kann ich diese 8 BYtes dann
wieder sukzessive auslesen und ausgeben.

Ich weiß das alles in der Doku steht, aber leider verstehe ich das
nicht ganz.

MfG.Olli

P.S nutze den 4433

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
STS/LDS?

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die ausfürhliche Antwort

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Speicherbereich kann ich nutzen? (ohne mit dem Stack in
Berührung zu kommen, mit dem ich max 12 Byte speicher)

Inder Doku steht als BEispiel für das Store Indirect eine Speicherplatz
von $0060. (= Dezimal 96) Ist das auch für meinen 4433 sinnvoll? Dann
könnte ich ja im Low Byte 60 bis 68 nutzen.

Fürs lesen nehme ich dann wahrscheinlich indirekt Adressierung. Ist
wahrscheinlich schöner...

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

Bewertung
0 lesenswert
nicht lesenswert
Hier ist mein Codeschnipsel: leider funktioniert da irgendwas nicht. Er
macht eine Endlosschleife.

Vielleicht erbramt sich einer und schaut sich das mal. Es ist ziemlich
einfacher Code..

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du Deinen Code schonmal durch den Simulator gejagt?

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

du bedankst dich für meine ausführliche Antwort (STS/LDS). Nix zu
danken, Kundendienst.

Du fragst nach dem zu benutzenden Speicherbereich. Nunja, sagen wir mal
Adressbereich, denn da gibt es nicht nur Speicher:

- 0-31 ($00-$1f): 32 Register,
- 32-95 ($20-$5f): 64 I/O-Adressen,
- ab 96 ($60): SRAM

Deinen Stackpointer initialisierst du auf die letzte SRAM-Adresse. Er
wirkt decrementierend, zählt bei Anwachsen des Stacks also herunter.
Wie weit, hängt von deinem Programm ab. Frei nutzen kannst du den
Adressbereich zwischen SRAM-Beginn und maximalem Stackbedarf, also die
Adressen ab $60.

Aber aufgepasst, das gilt nicht für alle AVRs, es gibt welche, die
haben so viel I/O-Bereich, dass der RAM-Anfang nach oben verschoben
wurde. Du wirst also schon mal einen Blick ins Datenblatt riskieren
müssen. Aber beim 4433 fängt SRAM definitiv bei $60 an.

Übrigens habe ich mir dein Programm nicht näher betrachtet da ich beim
ersten flüchtigen Hinsehen wichtige Teile vermisst habe. Vielleicht
solltest du dir erst mal Programme anderer Beiträge ansehen, z.B. aus
der Codesammlung. Und dann auch mal den Simulator bemühen, der ist
(Fehlermeldungen betreffend) recht geschwätzig (hilfreich).

Viel Erfolg!

MfG, Heinz

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.