www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: Daten aus dem UART ins SRAM (Tabellen)


Autor: boese (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,

ich benutze für ein aktuelles Projekt recht große Lookuptables (ca. 20 
verschiedene Wertetabellen die vom Eprom ins SRAM geladen werden und 
während des Programmablaufes über die UART verändert werden sollen 
(direkt im SRAM) und bei Bedarf ins EPROM zur Dauerhaften speicherung 
abgelegt werden sollen).

Problem ist, wie kann ich möglichst elegant unter Bascom oder ASM direkt 
von der UART die Speicherbereiche ohne dutzende "if" befehle ablegen?

Hat da jemand eine Idee bzw. Codegeschnippsel?

Gruss

Boese

Autor: boese (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so läuft es bisweilen:
   Do
      Name = Inkey()
      If Name = 0 Then
         Exit Do
         Else
         Sinput = Sinput + Chr(name)
         If Name = 13 Then Gosub Programmierung
      End If
  Loop


dann springt das ganze zu "Programmierung" dort werden die gesendeten 
Zeichenketten mit dem "mid-Befehl" zerlegt und mit if-abfragen in die 
richtige Variable geschrieben.

Ich halte das für recht aufwendigt und sehr langsam gelöst :((( Ich 
hoffe jemand hat eine elegantere Idee...

Gruss

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anstelle der etwas aufwändigen String-Funktionen ist es manchmal 
günstiger, die Zeichen des Strings direkt anzusprechen, ähnlich einem 
Pointer in C.
Dazu musst du ein Array von Bytes deklarieren, was genau auf dem String 
liegt.
Das geht so:

Dim My_string As String * 20
Dim My_str_array As Byte At My_string Overlay

Wenn du den String mit Zeichen gefüllt hast, kannst du 6. Zeichen 
einfach über
My_str_array(6)
bekommen und auch ändern. Aufpassen musst dann allerdings auf das 
abschließende \0-Byte, welches das Ende des Strings identifiziert.
Wenn du nun weißt, dass du das 17. Zeichen über den UART einliest, 
kannst du einfach
My_str_array(17)=inkey() und dann
My_str_array(18)=0 setzen, damit dein String wieder ordentlich beendet 
ist. Dies ist nur dann nötig, wenn du auch mit den String-Funktionen auf 
My_string zugreifen willst. Die Zugriffsmethoden kannst du beliebig 
mischen.

Gruß

Rolf

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.