PDA

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
}
}

PicNick
22.09.2005, 12:58
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

PicNick
22.09.2005, 12:59
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?).

PicNick
22.09.2005, 13:43
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.

PicNick
22.09.2005, 14:21
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?

PicNick
22.09.2005, 14:30
"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

PicNick
22.09.2005, 14:43
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.

PicNick
22.09.2005, 15:43
Abschreiben.....

anabolik
22.09.2005, 16:28
was soll ich abschreiben?
auf weiteren seiten steht wie man HT formarteirt um bessere übersicht zu erhalten.

PicNick
22.09.2005, 19:36
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

PicNick
24.10.2005, 15:39
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 :)

PicNick
24.10.2005, 15:47
Das ist ein Vergleich BasCom mit GCC ( = "C") , sprich, es ist beides da. Einmal Scollen wirkt Wunder