Daten mit Atmega an Pl senden

Antworten
olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Daten mit Atmega an Pl senden

Beitrag von olmuk » Freitag 12. März 2010, 20:46

Hallo,

das Thema ist schon besprochen - bitte aber trotzdem um Hilfe :

Atmega8 soll gezählte Werte an PL schicken.

An COM3 kommen laut Hterm die Daten an.
Mit PL kann ich nur ein T erkenn, sobald ich versuche den counter
zu senden, kommt nur das Rechteck.

Das passiert im AVR :
;Werte für Ausgabe an RS232
mov wert, counter
rcall serout
; ldi wert, 'T' ; war zum Test
; rcall serout ; war zum Test
ldi wert, 13
rcall serout
ldi wert, 10
rcall serout

Was mache ich falsch ?

Vielen Dank im voraus - Gruß olmuk

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Daten mit Atmega an Pl senden

Beitrag von KAKTUS » Samstag 13. März 2010, 16:44

Hi olmuk,

es gibt zwei Möglichen Werte vom AVR zu senden, im HEX oder im ASCII Format.

Du solltest deine Variable wert im ASCII Format senden, dann ist auch die Auswertung in PL einfacher.

Angenommen deine Variable hat den Wert 500 (dezimal)

HEX senden

01 F4

ASCII senden

35 30 30 Das ist der Ascii Code der Zahlen 5 , 0, 0

Wenn du mehrere Variablen sendest, solltest du dazwischen ein Trennzeichen setzen z.B. ein Komma. In PL dann einfach über die COM reinholen und mit $PART zerlegen.
Beispiel: 500,1212,121334,34534,5555 CR LF

Ansonsten kann ich dir bei Assembler nicht helfen, nur bei Bascom Basic
Wenn du Anfänger bist, so würde ich dir Bascom empfehlen.

Dein Assembler Code würde in Bascom folgendermaßen aussehen:

Code: Alles auswählen

wert = counter
Print wert ; "T" 
stachlige Grüße, Kaktus

olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Re: Daten mit Atmega an Pl senden

Beitrag von olmuk » Samstag 13. März 2010, 17:01

Hi KAKTUS,

gerne verfolge ich Deine aufschlusssreichen Antworten in diesem Forum - hat
mir bisher immer weitergeholfen !!!

Ich habe mich nunmal auf Assembler festgelegt - vielleicht kann jemand etwas
damit anfangen ( ist nur ein Teilschritt des Projektes ) :

AVR Atmega8 :

;Werte für Ausgabe an RS232

;Lowbyte
mov wert, counter
rcall serout
ldi wert, ';' ;Trennzeichen für Auswertung in PL
rcall serout
;Highbyte
mov wert, counter1
rcall serout
ldi wert, 13
rcall serout
ldi wert, 10
rcall serout


Als Anhang noch die Auswertung in PLE - Kommentare sind sehr willkommen.

Gruß olmuk
Dateianhänge
232.prj
(4.06 KiB) 312-mal heruntergeladen

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Daten mit Atmega an Pl senden

Beitrag von KAKTUS » Samstag 13. März 2010, 17:20

Hi olmuk,

du gehst nicht auf den wesentlichen Teil meines Beitrages ein.

Wenn du alle Messwerte (counter?) als ASCII sendest ist deine Auswertung in Profilab viel einfacher.

Als Link ein Beispiel von mir:

download/file.php?id=493
stachlige Grüße, Kaktus

olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Re: Daten mit Atmega an Pl senden

Beitrag von olmuk » Samstag 13. März 2010, 18:38

Hi KAKTUS,

auf welchen Teil bin ich denn nicht eingegangen ?

Da PLE meine beiden Bytes einwandfrei ( zumindest in dem Test ) erkennt, brauche ich nicht
noch extra eine Umwandlung in ASCII vorzunehmen - dann wäre es in Bascom einfacher.

Die "Fichte" habe ich schon ausprobiert, müsste aber noch erweitert werden.

Ist denn an meinem Beispiel etwas auszusetzen, bzw. zu verbessern ?

Gruß olmuk

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Daten mit Atmega an Pl senden

Beitrag von KAKTUS » Samstag 13. März 2010, 18:43

Code: Alles auswählen

Da PLE meine beiden Bytes einwandfrei ( zumindest in dem Test ) erkennt, brauche ich nicht
noch extra eine Umwandlung in ASCII vorzunehmen - dann wäre es in Bascom einfacher.
Na dann ist doch alles in Ordnung.
stachlige Grüße, Kaktus

abacom
Site Admin
Beiträge: 3926
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Daten mit Atmega an Pl senden

Beitrag von abacom » Montag 15. März 2010, 09:21

Ich versuch´s nochmal:

- Wenn Sie "$String empfangen" in PL verwenden, dann sollten (in der Regel)
auch lesbare ASCII-(Zeichen)-Strings gesendet werden ( - mit abschliessendem CR/LF).

- Werden hingegen beliebige Datenbytes versendet, sollte in PL auch "Byte empfangen" eingesetzt werden.

Merke:

"1" = chr(49dez)=chr(31hex) ------>>> ist UNGLEICH !!! -----> 49dez = 31hex
ABACOM support

olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Re: Daten mit Atmega an Pl senden

Beitrag von olmuk » Montag 15. März 2010, 09:31

Irgendwie steh ich da auf dem berühmtem Schlauch.

Der Zähler hat einen Wert, der direkt (als Bitmuster?) über die Schnittstelle gesendet
wird. PLE erkennt das einwandfrei und ich habe nun erweitert mit 2 Zählern jeweils
Low - und Highbyte, mit Trennzeichen";" und Abschluß CR, LF.

Wie schon Kaktus gesagt hat, wenn es funktioniert warum nicht?

Was kann denn passieren ?

Gruß olmuk

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Daten mit Atmega an Pl senden

Beitrag von KAKTUS » Montag 15. März 2010, 12:53

@Olmuk

Was ich bei dir nicht verstehe:
Erst stellst du eine Frage und bittest um Hilfe, plötzlich existiert dein Problem nicht mehr. Ich Frage mich, ob ich nicht meine Zeit verschwende?

Aber ich versuchs nochmal.
Was kann denn passieren ?
Schau dir mal diese ASCII Tabelle genau an
http://www.torsten-horn.de/techdocs/ascii.htm

Dann die zwei kritischen Punkte in deiner Schaltung:

COM String empfangen
Auzug aus der Hilfe:

Code: Alles auswählen

Dazu werden solange Zeichen von der Schnittstelle gelesen, bis eine sogenanntes Synchronzeichenkette empfangen wird. Erst dann werden die zuvor empfangenen Zeichen als eine Zeichenkette über den $-Ausgang des Bauteils bereitgestellt
Trennzeichen bei dir: HEX 0D 0A

PART
Auszug aus der Hilfe

Code: Alles auswählen

Teilt den eingehenden String $ anhand eines einstellbaren Trennzeichens in mehrere Teilstrings auf...
Trennzeichen bei dir: HEX 3B

Das kennst du ja alles und wirst dich Fragen was erzählt der für ein Bla Bla?

Jetzt Frage ich dich:
Nachdem du deinen WERT als zwei Bytes, also direkt im Hex Format überträgst, wie willst du sicherstellen das nicht obige Trennzeichen gesendet werden und dann alles durcheinander gerät?
Diese Schaltungen werden nie 100%tig funktionieren.

Deshalb meine Vorschlag deinen Counter Wert als ASCII zu senden, so hast du nur die Bereiche Hex 30 (zahl 0) bis 39 ( Zahl 9 ) und 0D 0A und das Komma Hex 3B. Deine PL Schaltung wir auch viel einfacher.

Wenn du sagst das es bei dir funktioniert, dann ist es Glück, wenn zufällig mal obige Werte in deinen beiden Bytes enthalten sind, dann spielt alles verrückt.

Mach mal einen Test mit ldi wert, '500' , das wird als ASCII gesendet und nicht Byte weise, dann verstehst du vielleicht was ich meine.
stachlige Grüße, Kaktus

olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Re: Daten mit Atmega an Pl senden

Beitrag von olmuk » Montag 15. März 2010, 16:28

@KAKTUS

Vielen Dank für die Geduld - ich glaube nun kommen wir zusammen.
Ich denke, das ich mich nicht klar ausgedrückt habe.

Mich wunderte das der Umweg über ASCII-Wandlung ( so fit bin ich noch nicht in Assembler )
scheinbar nicht mit der funktionierenden Testschaltung notwendig war.

Eigentlich wollte ich die Thematik zur Diskussion und Begutachtung einstellen,
falls noch jemand so ein Problem hat.

Ich werde das mal mit Zählerstand des Trennzeichens probieren und schauen was ankommt.

Gruß olmuk

olmuk
Beiträge: 47
Registriert: Mittwoch 8. April 2009, 07:15
Wohnort: Flieden

Re: Daten mit Atmega an Pl senden

Beitrag von olmuk » Dienstag 16. März 2010, 21:52

.. Gut, das Ihr mich daraufhin gewiesen habt - mit Trennzeichen x3B gab es dann Probleme.

Die ASCII-Wandlung hat nun hingehauen.

Ich werde wieder berichten wenn es fertig ist.

Antworten

Zurück zu „Thema RS232“