Forum: Mikrocontroller und Digitale Elektronik Datenaustausch zwischen PC und AVR


von Gerd (Gast)


Lesenswert?

Hi!

ich möchte gerne div. Variablen zwischen einem AVR-Programm (in C 
geschrieben) und dem PC austauschen, damit ich a) mir div. Variablen auf 
dem PC anzeigen lassen und b) diese vom PC aus ändern kann. Ich habe 
hier mal etwas herumgesucht, aber bin irgendwie nicht so recht fündig 
geworden.

Meine Idee wäre, die div. Variablen (integer) in eine struct zu 
verpacken und diese periodisch per RS232 auszutauschen. Ich bin mir 
jetzt allerdings nicht sicher, ob ich wirklich 8bit roh über RS232 
austauschen kann oder ob nur 7bit netto möglich sind (irgendwie habe ich 
noch uuencode im Hinterkopf).

Weiterhin bin ich in PC-Programmierung etwas ausser Übung, hat hier 
jemand irgendeinen Tipp oder Link wie ich das mit Visual C++/C#/Basic an 
eine Mini-GUI kopple?

Danke vorab!
Gerd

von Floh (Gast)


Lesenswert?

Ich würd die Bedienung des uC über ein Terminalprogramm machen, dann 
musste nur für den uC das Programm anpassen.
So nach dem Motto:
"
Welche Variable aendern?
0: bla = 200
1: buh = 31
...

1
Welcher Wert?
234
"
und wider von vorne :-)

von dunno.. (Gast)


Lesenswert?

für ersteres würde ich dir die uart library von peter fleury empfehlen.

klar kannst du 8 bit über uart übertragen, wenn du das entsprechend 
einstellst.

zum 2. kann ich grad nicht so viel sagen, habs nur mal mit java gemacht.

mfg

von Armin (Gast)


Lesenswert?

dunno.. schrieb:
> klar kannst du 8 bit über uart übertragen, wenn du das entsprechend
> einstellst.

Klar, 8N1. Ich weiß aber nicht mehr, ob hier bestimmte Bytes als 
Sonderkommando ala XON/XOFF interpretiert werden oder ob alles wirklich 
"roh" durchgereicht wird.

@Floh
>Ich würd die Bedienung des uC über ein Terminalprogramm machen, dann
>musste nur für den uC das Programm anpassen.

Da ich mir bestimmte Daten in kurzen Intervallen anschauen will, ist 
eine GUI übersichtlicher.

BTW: Das ganze ist eine selbstgebaute Waschtrocknersteuerung als Ersatz 
für eine kaputte Originalsteuerung. Sozusagen ein 
Waschmaschinen-Barebone ;-)

von Hans M. (Firma: mayer) (oe1smc) Benutzerseite


Lesenswert?

> Klar, 8N1. Ich weiß aber nicht mehr, ob hier bestimmte Bytes als
> Sonderkommando ala XON/XOFF interpretiert werden oder ob alles wirklich
> "roh" durchgereicht wird.

das haengt stark von den einstellungen auf beiden seiten ab. primaer 
natuerlich auf der empfaegerseite.

aber wenn es integer sind, warum nicht auf ASCII umwandeln und diese 
uebertragen ? das ist auf einer seriellen sicherlich problemloser.

gruss
hans

von Armin (Gast)


Lesenswert?

Hans Mayer schrieb:
> aber wenn es integer sind, warum nicht auf ASCII umwandeln und diese
> uebertragen ? das ist auf einer seriellen sicherlich problemloser.

Meinst Du als String oder als 2*7bit ala uuencode?

von Peter D. (peda)


Lesenswert?

Gerd schrieb:
> Meine Idee wäre, die div. Variablen (integer) in eine struct zu
> verpacken und diese periodisch per RS232 auszutauschen. Ich bin mir
> jetzt allerdings nicht sicher, ob ich wirklich 8bit roh über RS232
> austauschen kann

Im Prinzip ja, praktisch aber nein.
Du brauchst eine Synchronisation, damit der andere weiß, welches Byte 
welche Bedeutung hat.
Und beide Compiler müssen den gleichen Aufbau der Struct haben 
(Byte-Order).

Ein einfaches Protokoll ist die Übertragung als Text (Hex-Nibble), die 
Synchronisation erfolgt am Ende durch CR/LF.


Peter

von Hans M. (Firma: mayer) (oe1smc) Benutzerseite


Lesenswert?

> Meinst Du als String oder als 2*7bit ala uuencode?

als ASCII string. wenn der wert 123 ist, dann uebertraegst du die 3 
zeichen 123

gruss
hans

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.