Daten mit Atmega an Pl senden
Daten mit Atmega an Pl senden
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
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
Re: Daten mit Atmega an Pl senden
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:
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
Re: Daten mit Atmega an Pl senden
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
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) 318-mal heruntergeladen
Re: Daten mit Atmega an Pl senden
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
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
Re: Daten mit Atmega an Pl senden
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
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
Re: Daten mit Atmega an Pl senden
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.
stachlige Grüße, Kaktus
Re: Daten mit Atmega an Pl senden
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
- 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
Re: Daten mit Atmega an Pl senden
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
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
Re: Daten mit Atmega an Pl senden
@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.
http://www.torsten-horn.de/techdocs/ascii.htm
Dann die zwei kritischen Punkte in deiner Schaltung:
COM String empfangen
Auzug aus der Hilfe:
Trennzeichen bei dir: HEX 0D 0A
PART
Auszug aus der Hilfe
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.
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.
Schau dir mal diese ASCII Tabelle genau anWas kann denn passieren ?
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
PART
Auszug aus der Hilfe
Code: Alles auswählen
Teilt den eingehenden String $ anhand eines einstellbaren Trennzeichens in mehrere Teilstrings auf...
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
Re: Daten mit Atmega an Pl senden
@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
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
Re: Daten mit Atmega an Pl senden
.. 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.
Die ASCII-Wandlung hat nun hingehauen.
Ich werde wieder berichten wenn es fertig ist.