Forum: Mikrocontroller und Digitale Elektronik Atmega 8 register über Visual Basic MsComm laden


von Joachim H. (husky)


Lesenswert?

Hallo ,

vielleicht hat von Euch schon jemand Erfahrung mit der Schnittstelle,
von Visual Basic über die UART zum Mikrocontroller.

Ziel ist es eine Zahl 0-255 in ein Register meines Atmega 8 
einzuspielen, damit ich diese intern im Atmega 8 weiterverarbeiten kann.

Atmega8 - max232 - PC

Ich kann mit dem Aufbau Text vom Atmega8 an den PC senden.

Was muß man beachten wenn man eine Zahl vom PC an den Atmega8 schickt,
damit dieser aus dem String der übertragen wird, wieder eine Zahl macht 
?

vielen Danke für Eure Hilfe
Joachim

von Hubert G. (hubertg)


Lesenswert?

Wie sendest du das Zeichen, als ASCII-Zeichen, dann musst du es mit atoi 
umwandeln, oder als hex-Wert, dann kannst du es ja direkt 
weiterverarbeiten.
Am einfachsten ist natürlich ein unsigned char.

von Klaus W. (mfgkw)


Lesenswert?

Hubert G. schrieb:
> oder als hex-Wert, dann kannst du es ja direkt
> weiterverarbeiten.

Was meinst du mit Hex-Wert?

Direkt weiterverarbeiten kann man bestenfalls eine binär übertragene 
Zahl.
Ein in hexadezimaler Darstellung übertragener Wert muß wieder
zurückkonvertiert werden.

von Karl H. (kbuchegg)


Lesenswert?

Joachim H. schrieb:

> Ich kann mit dem Aufbau Text vom Atmega8 an den PC senden.

Das ist dann schon mal die halbe Miete

> Was muß man beachten wenn man eine Zahl vom PC an den Atmega8 schickt,
> damit dieser aus dem String der übertragen wird, wieder eine Zahl macht
> ?

Das du im String eindeutig den Textbereich erkennen kannst, an dem die 
'Zahl' anfängt und an dem die 'Zahl' endet.

Wenn du die Zahlen 23 45 78 hintereinander übertragen willst, muss da 
ein Trennzeichen dazwischen, denn aus dem Text

   234578

kann man viele Zahlen bilden. Aber zb

  23;45;78;

ist eindeutig.

Auf µC Seite musst du dann nach diesem Trennzeichen suchen, den 
entsprechenden Abschnitt herauskopieren und mit einer geeigneten 
Umwandlungsfunktion aus dem Text "45" die richtige Zahl 45 machen.

Das ganze ist mehr eine Übung in Textverarbeitung bzw. Benutzung der 
Stringfunktionen als sonst irgendetwas anderes.

von Joachim H. (husky)


Lesenswert?

Ich möchte mich für die Antwort bedanken.

Werde jetzt nach einer Umwandlungsfunktion suchen,
 mit der es möglich ist

z.B.

Text"45" in Zahl 45 zu wandeln.


Danke !!!

von Klaus D. (kolisson)


Lesenswert?

Es gibt ein "val()" Funktion

Gruss K.

von Klaus W. (mfgkw)


Lesenswert?

Klaus De lisson schrieb:
> Es gibt ein "val()" Funktion

Wo?

Eher atoi() oder atol():
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga3a1fe00c1327bbabc76688a7a1d73370

Oder sscanf(), wenn man den Platz hat.

von Joachim H. (husky)


Lesenswert?

gibt es auf µC Seite einen Befehl.

was in Visual Basic das Val ist.

Nach einem Trennzeichen suchen, das kann ich programmieren.

Mit welchem Befehl kann ich in Assembler die Umwandlung beeinflussen ?

von Klaus D. (kolisson)


Lesenswert?

>> Klaus De lisson schrieb:
>> Es gibt ein "val()" Funktion

>Wo?

Naja z.B. in Bascom..  aber es steht ja eigentlich garnicht im Text,
mit was hier programmiert werden soll.

Gruss Klaus

von Joachim H. (husky)


Lesenswert?

"Mit welchem Befehl kann ich in Assembler die Umwandlung beeinflussen ?"

mit Assembler würde ich gerne den  Miktocontoller programmieren und die 
Daten weiterverarbeiten sollen

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.