Forum: Mikrocontroller und Digitale Elektronik Wert über Uart empfangen und damit weiterarbeiten


von Markus (Gast)


Lesenswert?

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

von max.p (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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

von max.p (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

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

von max.p (Gast)


Lesenswert?

Sorry ADuC832 kenn ich nicht. bei einem Atmel AVR uC dibt es spezielle
register die sich zu einem 16 bit register zusammenfügen.

mfg
Max

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.