Hallo,
ich möcht mit dem PIC16F876 einen Messwert über die serielle
Schnittstelle zum Computer übertragen.
In Hyperterminal kommen auch Signale an aber keine Zahlen sonder
irgentwelche komischen Zeichen die sich von Zahl zu Zahl
unterscheiden.
so zeigt er z.B für die Zahl 50 ein Ausrufezeichen
oder für die Zahl 16 zwei senkrecht Linien an.
Wie bekomm ich jetzt statt irgentwelche Zeichen die Zahlen auf den
Bildschirm ich gesendet habe??
Liegt es vielleicht an Hyperterminal??
mfG
s. seidl
Naja in deinem PIC Programm hast du doch das versenden Codiert. Kannst
ja mal den Abschnitt der das Versenden vornimmt hier posten, dann
wird's einfacher...
Da ich nicht wirklich eine Programmiersprache behersche.
Schreibe ich meine Programme in Parsic. Das ist ein grafisches
Programmiertool das mit bereits vorgefertigten "Bausteinen" arbeitet
Das Programm erstellt dann daraus eine ASM-Datei (Quelltext) den hab
ich mit angehängt.
Vielecht hilft er dir weiter ich komm mit ihm nicht so ganz klar.
Dann sollte doch im Handbuch drinstehen, was die vorgefertigten Module
machen?
Kleiner Tipp am Rande: Bei einem µC lohnt es sich schon, eine
Programmiersprache zu beherrschen und sich vor allem mit der Hardware
vertraut zu machen. Erleichtert die Sache ungemein.
BSF STATUS,RP0 ; Bank 1
MOVLW 207
MOVWF SPBRG ; BAUDRATE GENERATOR
MOVLW B'00000100' ; 8-BIt,TRANSMIT DISABLED,ASYNCHRON,BRGH=1=HIGH
SPEED
MOVWF TXSTA
BSF PIE1,TXIE ; enable INTERRUPT for transmit
BSF INTCON,PEIE ; PERIPHERIE INT ENABLE
--> die Einstellungen sind für 16Mhz und 1,202kbaud oder 4Mhz mit 0,3
kbaud
MOVFW INDF ; data
MOVWF TXREG ; Transmit Register
an der stelle wird gesendet... jetzt ist noch die Frage was da in INDF
drin sand... sind halt 8 Bit die du nachsehen musst... damit kannst du
in deine ASCI Tabelle gehen und weisst was für ein Zeichen kommen
müsste...
wenn statt zahlen nur schwachsinn kommt liegt das an der
Syncronisation... also RS232 falsch eingestellt!
ich habe auch eine Frage zum Hyperterminal,
ich habe ein Programm geschrieben, bei dem ich Daten vom µC über die
serielle Schnittstelle an das Hyperterminal des Computers schicken kann.
Nun möchte ich aber auch vom HyperTerminal (HT) des Comp an den µC Daten
sende.
Meine Frage ist jetzt, ob es beim HT Einstellungen gibt, die das Senden
von Daten über die serielle Schnittstelle an den µC erlauben.
Wenn man mit dem HT eine Verbindung über TCP/IP aufmacht geht das meines
Wissens nach, dass man Daten im HT eingibt und versendet aber geht das
auch wenn man eine Verbindung über die COM1 zum µC hat.
MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.
Vielen Dank für eure Antworten.
lg
Hannes
> MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.
Das macht nichts.
Eine RS232 geht in beide Richtungen.
Alles was du im HT auf dem Keybord klimperst, schickt HT über
die serielle Schnittstelle raus. Es liegt dann am µC diese
Daten zu empfangen und weiter zu verarbeiten.
Serielle Schnittstellen sind bidirektional. Wenn Du im Terminalprogramm
eine Taste drückst, wird vom Terminalprogramm deren ASCII-Code über die
serielle Schnittstelle übertragen.
Wohin?
An Deinen µC. Einfach so.
Den musst Du natürlich noch so programmieren, daß er Zeichen auf der
seriellen Schnittstelle empfangen kann, und bei empfangenen Zeichen auch
irgendwas anstellt, aber das hat nichts mit dem Terminalprogramm zu tun.
Daß das Terminalprogramm auf der Tastatur eingegebenen Text über die
serielle Schnittstelle versendet, ist das Standardverhalten. Dazu muss
man gar nichts spezielles einstellen.
Es kann allerdings sinnvoll sein, wenn Dein µC bzw. die serielle
Verbindung zu ihm kein Hardwarehandshake unterstützt (also mehr als die
Leitungen RxD, TxD und GND benutzt), das Hardwarehandshake im
Terminalprogramm zu deaktivieren oder aber im seriellen Kabel auf der
PC-Seite entsprechende Kurzschlussbrücken zwischen RTS/CTS und DTR/DSR
anzubringen.
Alles, was man beim Hyperterminal über die Tastatur eingibt, wird über
die serielle Schnittstelle verschickt.
Dass man HT auch für die Kommunikation über TCP/IP benutzen kann, ist
mir neu.
In der Codesammlung oder unter "PC-Programmierung" findet man sonst
einen Link zu einem besseren Terminal-Programm.
>MEin Problem ist, ich hab nur eine serielle Schnittstelle am µC!.
Wieso ist das ein Problem?
Man kann auch (irgendwo im Menu zufinden) ganze Dateien verschicken...
Ich hab noch eine Frage und zwar warum kann ich keinen Text in das
Hyperterminal eingeben, der auch im HT zu sehen ist. Wenn ich eine neue
Verbindung aufmache, und über die Tastatur etwas eingeben, dann kommt
auf dem HT nichts an.
Kann man das einstellen oder ist das Standardmäßig so.
Vielen Dank.
lg
Hannes
Weil HT alle Tastatureingaben einfach nur an das Gerät schickt,
dass an die Leitung angeschlossen ist.
Normalerweise sendet das Gerät dann diese Zeichen gleich wieder
zurück. Damit kann man wunderbar einfach überprüfen, ob es ein
Problem in der Kommunikation gibt: Kommt das getippte wieder
zurück, wird es vom Terminal angezeigt und man weiss dass die
Kommunikation klappt. Kommt nichts oder nur verstümmelt, dann
gibt es ein Problem in der Kommunikation.
Bei allen Terminals, und somit auch bei HT kann man aber ein
sog. lokales Echo aktivieren, bei dem das Terminal eingetippte
Zeichen selbst anzeigt.
Hallo,
ich hätte eine Frage bzg. Zahlen an das Hyperterminal schicken.
Ich hab in meinem Programm ein Array von 500 Zahlen in integer (int
arr[500];)
Die Werte repräsentatieren einen Zahlenverlauf eines Messwertes. Diese
Zahlen bräuchte ich in einer *.csv- Datei.
Hat jemand eine Idee, wie ich diese Zaheln im Array zum Hyperterminal
bekomme bzw. ich brauche diese Zahlen gar nicht dargestellt am HT,
sondern möchte nur eine *.csv- Datei.
Am Hyperterminal kann man ja auf "Übertragen -> Datei empfangen" gehen.
Weiß vielleicht jemand, ob das bei meinem Problem hilft, sprich, ob ich
vielleicht irgendein Zeichen an das HT schicken muss, damit dieses weiß,
dass jetzt die Daten kommen, und diese werden dann vom HT in eine
Textdatei gespeichert.
Bin für jede Anregung sehr dankbar und bedanke mich jetzt schon sehr
herzlich für Eure Antworten.
lg
Hannes
Das wäre ja kein Problem, aber ich muss diese Zahlen über TCPIP an das
HT schicken, dort aber nicht anzeigen, sondern das HT soll eine
Textdatei machen.
Ich weiß, dass man in C mit fopen() eine Datei aufmachen kann und da was
reinspeichern kann aber ich hab eben nur einen Zugriff auf das HT vom µC
aus.
Vielen Dank.
lg
Hannes
JA hab ich, das funktioniert alles, Es geht nur darum, mit den integer-
Zahlen am Remote- Computer in eine Textdatei zu packen, möglichst mit
dem Hyperterminal (mit "Übertragung -> Datei empfangen zum Beispiel);
lg
Hannes
Du schickst was auch immer du willst in Textform an Hyperterminal.
Hyperterminal speichert dann für dich diesen Text in eine Datei.
Wenn du also willst, dass in deiner Datei
200;100
steht, dann schickst du genau diesen String zu Hyperterminal.
Für Zahlen musst du daher zunächst auf dem µC alles in eine
Textform bringen (itoa() oder sprintf()). Dann baust du
entweder eine komplette Textzeile am µC zusammen und schickst
die in einem Rutsch an HT oder du schickst die einzelnen
Texte einzeln. Macht keinen Unterschied. HT speichert alles
so wie es über die serielle Schnittstelle kommt in einer
Datei.
Vielen Dank Karl heinz,
ich werds probieren.
Mir ist zwar jetzt noch nicht klar, wie ich da vorgehe, speichert das HT
automatisch oder muss ich da zuers "Übertragung -> Datei empfangen"
aufmachen und wo speichert das HT die Datei hin.
Vielleicht kannst du mir noch Tipps geben.
Vielen Dank auf jeden Fall.
lg
Hannes
Du willst gar nicht 'Datei empfangen'.
Was du willst ist 'Text aufzeichnen'.
Und wenn du den Menüpunkt auswählst, fragt dich HT
in welcher Datei es den Text speichern soll.
Alles was nach Anwahl dieses Menüpunkts über die
Schnittstelle reinkommt, wird in der angegebenen Datei
genau so mitgeschrieben, wie es empfangen wurde. Kannst
du ganz leicht mit zb. Notepad kontrollieren. Nach erfolgter
Übertragung machst du einfach mal die Datei auf und siehst
was der µC über die Schnittstelle gesendet hat.
Und bevor du frägst :-)
Ja, du kannst das Text mitschreiben auch wieder ausschalten.
Sobald 'Text aufzeichnen' aktiv ist, gibt es beim selben
Menüpunkt ein paar Untermenüpunkte. Einer davon ist 'Beenden'.
Hallo nochmal,
eine Frage hätte ich noch: Wenn ich beim Hyperterminal auf "Datei
empfangen" gehe, wird dann was vom HT an die COM (1,2, je nach
Einstellung) gesendet, so quasi das das HT jetzt bereit ist, eine Datei
zu empfangen bzw. wo liegt der Unterschied zwischen "Datei empfangen"
und "Text aufzeichnen".
Vielen Dank für Eure Antworten.
lg
Hannes
Hallo Karl heinz,
wenn ich beim HT auf Datei empfangen gehe, wird dann an den Remote-µC
etwas geschickt, damit dieser weiß, dass er jetzt starten muss, oder
wartet das HT bei dieser Einstellung auch nur, bis etwas kommt?
Vielen Dank.
lg
Hannes
Hyperterminal verwendet wie jedes andere Terminalprogramm auch für die
Übertragung von Dateien eines der Protokolle X-Modem, Y-Modem, Z-Modem
oder Kermit.
Der Empfang von Dateien mit den letzten beiden Protokollen wird
automatisch gestartet, bei den anderen Protokollen muss der Empfang
manuell gestartet werden.
Dafür ist die Funktion "Datei empfangen" gedacht.
Da hier aber keines der genannten Protokolle implementiert wurde, ist
diese Funktion hier völlig ungeeignet.
Also: Text aufzeichnen.
Was ich an der Diskussion beeindruckend finde, ist, daß Leute hier nach
Dingen fragen, die sie mit etwa zwei Minuten Zeitaufwand auch selbst
herausfinden könnten ...
Wenn du auf 'Datei empfangen' gehst dann wird da ein
Protokoll dazwischen geschaltet. 'Kermit' ist zb so ein
Protokoll. Ein Protokoll ist ein Satz von Regeln nach
denen die Überttragung abläuft. Das kann zb beinhalten
dass der Empfänger bescheid gibt, dass er bereit zum Empfang
ist. Das beinhaltet normalerweise auch Dinge wie Prüfsummen
und Regeln wie diese Prüfsummen ausgewertet werden und
was im Fehlerfall zu passieren hat. Das kann auch Regeln für
die Datenkompression enthalten, etc.
Diese Übertragunsprotokolle stammen noch aus Zeiten, als die
meisten Übertragung, zumindest für Normalsterbliche,
analog über Telephon abgewickelt wurden und daher fehleranfällig
waren.
Hallo,
vielen Dank für Eure Antworten.
Eine Frage hätte ich noch: Welches Protokoll soll ich wählen, damit
etwas zu meinem µC geschickt wird und dieser dann startet etwas zu
senden und was schickt das HT bzw. das Protokoll (was muss ich im
Programm des µC abfragen?
if (empfangen)
start_senden = 1;
Vielen herzlichen Dank besonders an Karl heinz und Rufus
lg
Hannes
Im einfachsten Fall:
Denk dir was aus.
Du stellst HT auf Text ampfangen scharf und drückst auf der
Tastatur zb ein 'S'. Das 'S' geht zum µC wird ausgewertet und
als Antwort schickt dir der µC die Daten in Textform, die von
HT getreulich in die Datei geschrieben werden.
Ganz ehrlich: Ich glaube nicht, dass du ein Kermit Protokoll
oder ein ZModem Protokoll hinkriegst. Also verschwende nicht
deine Zeit damit.
Hallo,
einmal möchte ich noch stören.
Mein Problem ist jetzt, dass ich am Hyperterminal ein Menü stehen habe
und wenn ich dann in einen Unterpunkt gehe, um mir die Daten vom µC in
eine Textdatei schicken zu lassen, dann geht das, aber es wird auch auf
das HT geschrieben und haut mir mein ganzes Menü zusammen bzw. es wird
darüber geschrieben.
Meine Frrage wäre jetzt, ob es möglich ist, die Daten, die vom µC kommen
nur in die Textdatei zu lesen und nicht auch auf den Monitor.
Vielen Dank!!!!!
lg
Hannes
>Ganz ehrlich: Ich glaube nicht, dass du ein Kermit Protokoll>oder ein ZModem Protokoll hinkriegst. Also verschwende nicht>deine Zeit damit.
Zu Kermit oder einem der anderen Modem-Protokolle hat Atmel sogar eine
Application Note herausgebracht....
.
.
.
such...
.
.
.
http://www.atmel.com/dyn/resources/prod_documents/doc1472.pdf
Zumindest scheint es dabei um den Empfang zu gehen...
> Meine Frrage wäre jetzt, ob es möglich ist, die Daten, die vom µC kommen> nur in die Textdatei zu lesen und nicht auch auf den Monitor.
Ursprünglich ist dieses Feature ja gar nicht dafür gedacht, Daten-
übertragung im Sinne von Dateiübertragung zu machen.
Es ging vielmehr immer darum die Arbeitssitzung zu protokollieren.
Wenn du HT dazu benutzt um eine Steuerung deines µC zu machen,
mit Menüs und so, dann stellt sich die Frage, ob dies überhaupt
ein vernünftiges Werkzeug dazu ist. Im Normalfall würde man
für sowas ein eigenes Programm auf PC-Seite schreiben. Das
hätte auch den Vorteil, dass man die komplette Menüsteuerung
und Benutzerinterkation vom µC wegkriegt und komplett auf den
PC verlagert, wo man dann das GUI mitbenutzen kann.
Vom PC gehen dann nur noch Kommandos zum µC, was zu tun ist.
ja das ist mir klar, aber es ist so vorgegeben und es kann dann jeder
benutzen, ohne ein Programm am Computer lokal zu installieren.
Diese Vorteile überwiegen gegenüber den anderen!!
Vielen Dank für die Anregungen und die Hilfe
lg
Hannes