Archiv verlassen und diese Seite im Standarddesign anzeigen : empfangen und senden mit HyperTerminal
anabolik
22.09.2005, 12:32
hallo.
habe ein programm zum senden und empfangen (echo) von eingaben im HyperTerminal geschrieben, wie kann ich es unter HyperTerminal testen. irgendwie klappt das nicht oder ist mein programm falsch?
CODE:
#include <inttypes.h>
#include <avr/io.h>
#include <stdint.h>
int main(void)
{
unsigned char zwischensp;
UCSRB |= ( 1 << RXEN ); //Empfänger von UART einschalten
UCSRB |= ( 1 << TXEN ); //Sender von UART einschalten
UCSRC |= ( 1 << URSEL )|( 3<<UCSZ0 ); // Asynchron 8N1 ( 8 Datenbits, 1 Stopbit )
UBRRH = 0; // Highbyte ist 0
UBRRL = 23; // Lowbyte ist 23 ( dezimal ) damit Baudrate auf 9600 durch Formel (Taktrate/(Baudrate x 16))-1=23. Achtung! Überprüfen mit welchem Taktgeber(intern oder extern unterschidliche Frequenzen) der µC läuft.
while (1){
while ( !(UCSRA & (1<<RXC)) ); // Warten bis Daten empfangen wurden
zwischensp = UDR; // Empfangsregister auslesen
while ( !( UCSRA & (1<<UDRE)) );// Warten bis Senden möglich ist
UDR = zwischensp;// Daten senden
}
}
Schau dir mal das an, vielleicht entdeckst du selbst was. (Quarz mußt du anpassen)
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich2
Ich glaub aber eher, dein problem liegt beim Quartz-Setup
Nochwas: diese Formulierung ist PFUI !
( 3<<UCSZ0 )
anabolik
22.09.2005, 13:33
was meinst du mit "Quarz musst du anpassen"? meinst baudrate und die richtige quarzfrequenz in diese komische formel einsetzen? falls du das meinst , davor habe anderes programm geschrieben, welches zum HT strings schickt, hat alles funktioniert. meine frage war eher, wie ich z.B. buchstaben die ich bei HT eintippe zu µC schicke (bei HT einfach buchstaben eintippen und auf enter? geht nicht oder?).
Das Wiki-Beispiel gibt jedes x-beliebige Zeichen einfach wieder zurück, so wie es ist. Ein <ENTER> brauchst du da nicht, das enter ist auch nur ein Zeichen, daß retourniert wird.
da solltest du besser abschreiben :
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
anabolik
22.09.2005, 14:18
ok, habe so gemacht. aber in HT lassen sich überhaupt keine zeichen eintippen. habe schon mit "Übertragung/Datei senden" versucht.
Hast du eingestellt "Handshake: none" ? weil dann geht zwar "hello world", aber HT schickt nix weg
anabolik
22.09.2005, 14:27
wo ist das? unter datei/eigenschaften -> eistellungen -> ASCII-Konfiguration?
"Anschlußeinstellungen" und heißt auf Deutsch "Flußsteuerung"
Bitte, schau dir die robo-wiki seite genau an
anabolik
22.09.2005, 14:42
wollte ich ja, aber wenn ich auf "Inhaltsverzeichnis" gehe und "AVR-Einstieg mit GCC" anklicke fragt man mich nach einem password.
anabolik
22.09.2005, 14:42
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.Avrgcc?action=edit
Da geht's lang
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.TermHyper
anabolik
22.09.2005, 14:45
ist zum bearbeiten der seite gedacht oder? ist mir gerade aufgefallen.
anabolik
22.09.2005, 15:21
was auf der ersten seite steht, hatte ich schon eingestellt gehabt. was aber weitere seiten angeht, ich bin daruas nicht schlau geworden.
anabolik
22.09.2005, 16:28
was soll ich abschreiben?
auf weiteren seiten steht wie man HT formarteirt um bessere übersicht zu erhalten.
So, Ich leb' wieder.
Wenn du das Hyperterm startest, kommt der Dialog
"Beschreiben der Verbindung"
Da gibts du einen (neuen) Namen ein und "OK"
Es erscheint "verbinden mit"
Du wählst COM1 oder was du halt hast und "OK"
Es erscheint eigenschaften von COM1
Baud, Bitzahl, Parität, stop Bits wie du es brauchst (9600, 8, keine, 1)
UND "Flußsteuerung" da wählst du "KEIN" und dann "OK"
Jetzt sollte das Senden vom Controller zum PC erstens klappen wie vorher (prüf' es aber lieber nochmal),
Und dann probier das ECHO-Programm mal aus.
Berichte dann, was sich abspielt
navyseal
24.10.2005, 15:11
habe auch mit uart derzet zu kämpfen.... die ausgabe auf den ht funkt auch schon tadellos jedoch das schicken vom ht funkt noch nit so super :(
habe ein demoprojekt bekommen und möcht das ein wenig erweitern ... nun aber meine frage ....
diese funktion ja war shcon da :) ....
// **************************************************
SIGNAL (SIG_UART0_RECV)
// **************************************************
{
}
nur was kann die ?
hab zum senden vom at128l wie im datasheet beschrieben das ganze so gelöst
int sendchar(char sign) /*function to send data to seriell port*/
{
while ( !( UCSR0A & (1<<UDRE)) )
;
/* wait until puffer is empty */
UDR0=sign;
return 0;
}
und das funkt auch nur senden über ht nicht .... achja beim empfang von einen char wir das ja in nen puffer gelegt und kann dann ja über udr abgerufen werden oder ?!
hier noch mein recievecode:
int getchar(getsign) /*function to get data to seriel port*/
{
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC)) )
;
/* Get and return received data from buffer */
char kot;
kot = UDR1;
sendchar(kot);
return UDR1;
}
vllt kann mir einer mit diesen probs helfen :) würd mich sehr freuen!!!
danke für euer bemühen! mfg navyseal
Die SIGNAL - Funktion ist für Interrupt. Tu sie für's erste Mal weg.
Ein Echo -Beispiel findest du hier.
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich2
Das Senden / Empfangen in Funktionen zu stellen kannst du dann im nächsten Schritt.
navyseal
24.10.2005, 15:45
danke für deine schnelle anwort aber ist das nit bascom ?!
verwende doch c !
Edit: sorry erst jetzt gesehn :)
Das ist ein Vergleich BasCom mit GCC ( = "C") , sprich, es ist beides da. Einmal Scollen wirkt Wunder
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.