Wert über Uart empfangen und damit weiterarbeiten

Gast #129003
Will über die serielle einen Wert empfangen, den ich nachher als
Schleifenzähler benutzen möchte. Wie stell ich sowas an? Wenn zB 100
geschickt wird, soll die Schleife 100mal durchlaufen werden. Im Prinzip
hab ich ja dann 3 Werte nämlich 1 , 0 und 0. und damit kann ich doch
nichts rechnen
mfg markus
Gast #129004
hallo markus

Warum willst du den wert in einzelnen ziffern übertragen? schik ihn
doch einfach binär. Dann bekommst du nur ein zeichen und das kannst du
dann gleich als zähler benutzen. für 100 währ das dann 0x64 oder
0b01100100 oder das zeichen oder das @ symbol. geht aber nur bis 254
wenn du mehr durchleufe brauchst musst du hald 2 zeichen empfangen.
Dann brauchst du nach de empfangen nur noch immer den wert mit dec um 1
verkleinern.
google vieleicht mal nach "ASCII Tabelle" dann verstehst du vieleicht
was ich meien.

mfg
Max
Gast #129005
Also 254 würden mir reichen, bräuchte nur Werte bis 100. Hab jetzt mal
in so ner ASCII Tabelle nachgeschaut. Also zB steht da im dez Code für
100 der Buchstabe d. Heisst das, dass ich statt der 100 auch ein 'd'
schicken kann und dann mit dem weiterrechnen als obs ne Zahl wäre? Muss
ich da nix konvertieren oder so? Also könnt ich den Wert in mein R7 oder
was auch immer laden und dekrementieren?
mfg markus
Gast #129006
Ah sorry habe was vergessen. Für die Schleife würden mir 100 reichen,
aber ich muss dem MC zusätzlich sagen wieviel Messwerte er speichern
soll. Und da ist dann der oberste Wert 20 000. Das ist dann bissel
schlecht zu realisiern oder wie soll ich das machen?
mfg markus
Gast #129007
hallo
Also wie du des schon richtig erkannt hast kannst du auch einfach nur
einzelne zeichen sicken. Der AVR (ich geh mal aus das du einen hast)
speichet das zeichen in binärer form wie es in der ASCII tabelle
angegeben ist, also für d z.B. 01100100 *. Dem Atmel is es völlig egal
was das jetzt ein zeichen oder ein wert ist. Für die Anzahl der
Messwerte musst du dann zwei zeichen übertragen, also eine 16bit zahl.
dann gehts bis 65535. Also erst das untere byte und dann das obere.Weis
aber nicht wie mann das am besten macht, da ich meist in c porgrammiere.


mfg
Max

*Hab mich da vorhin mit dem @ zeichen in der Spalte geteuscht.
Gast #129008
Was meinst du mit AVR? Ist das der Prozessortyp? Habe nen ADuC832,
scheint hier ja nicht sehr verbreitet zu sein. Ich brauche zum
Speichern des Wertes dann ja ein 16bit breites Register oder?Also das
wäre bei mir das SFR dptr(Datenpointer), das ist das Einzige mir
bekannte 16bit Register. Irgendwie auf 2 aufsplitten wird ja nicht
gehen denk ich ???
mfg markus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.