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.
Hallo, kannst du vielleicht das Programm, welches du geschrieben hast ins Forum schreiben? Wäre echt nett! Danke mfg Christoph
Hallo, den ASM-Quelltext hab ich schon als Anhang in meiner letzten e-mail. Oder meinst du direkt das PARSIC Programm? simon
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!
das problem ist ja eigntlich klar: du darfst nicht den reinen zahlenwert rüberschicken, sondern den ASCII Wert dessen.
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
Du wirst diese Zahlen in ASCII-Zeichen umwandeln müssen, um daraus eine Textdatei machen zu können.
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
Hast du denn schon eine entsprechende Schnittstelle an deinem Mikrocontroller?
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'.
Vielen Dank, ich bin gerade dabei, es zu machen. Ich werde euch berichten. lg Hannes
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.