UART STK500

Gast #350062
Lesenswert?

Hallo,

ich will an meinen Mikrocontroller auf dem STK500 eine dezimale 1 oder
0 schicken. Dazu verwende ich den PC und ein Terminal-Programm, welches
über eine RS232-Schnittstelle mit dem STK500 verbunden ist.

Wie kann ich kontrollieren ob diese Daten auch wirklich an dem RX Pin
auf dem STK500 ankommen?

Gruß
Gast #350065
Lesenswert?

Hallo,

gibt doch viele Möglichkeiten.

-- die Daten vom Mikrocontroller wieder zurück schicken (=> ECHO)
-- auf LCD anzeigen lassen (falls vorhanden)
-- Empfangsregister mit ensprechenden Referenzwert vergleichen
   und dann Port setzen (z.B. LED)
-- oder einfach messen, z.B. Speicheroszi (wahrscheinlich nicht
   vorhanden)

usw.

Gruß
Gast #350066
Lesenswert?

Hi,

zum testen habe ich ein Programm geschrieben welches die empfangenen
Daten (1 oder 0) an die LED's ausgibt(an bzw. ausschaltet).

Doch das hat nicht funktioniert. Jetzt habe ich gerade mit nem Osc. den
RXD Pin auf dem STK500 gegen Masse gemessen, um zu schauen ob dort
überhaupt etwas ankommt. Doch dort liegt die ganze Zeit ein Pegel von
5V an. Im Maual des STK500 ist zwar irgendwie beschrieben, das ein 5V
Converter zwischen dem RS232(SPARE) und den TXD/RXD Pins sitzt, aber so
ganz kapier ich das nicht.

Wenn ich direkt am Kabel Messe passt das Signal.... Warum kommt das da
nicht so an? Muss ich irgendwas am Board umstellen? Jumper?

Gruß
Gast #350067
Lesenswert?

hast du denn auch die RS232 Spare mit einem 2pol. Kabel an den richtigen
Port deines Controllers angeschlossen? Für einen Mega16/32 z.B. muss das
Kabel RXD an PD0 und TXT an PD1 verbunden werden.
Der Pegelwandler ist nötig weil die RS232 ja nicht mit den Spannungen
arbeitet die der Controller verträgt.
Gast #350071
Lesenswert?

hi, ich würde versuchen erst was von uC zum PC zu schicken,
wenn das geht ists vielleicht einfacher, da man sich sicher ist das
wenigstes etwas funktioniert (z.b. der richtige Takt im STK 500
verwendet wird, da kann man ja zwischen internem Takt des uC und
externen Takt vom Board usw. wählen .....

chris
#350073
Lesenswert?

Hi

#define UBRR ((FOSC/16*(BAUD))-1)
muss heißen
#define UBRR ((FOSC / (BAUD * 16L)) - 1)
oder
#define UBRR (FOSC / ( 16L*BAUD) - 1)

UCSR0C = (1<<USBS0) | (3<<UCSZ00);
Muss ins
UCSRC = (1<<URSEL)| (1<<USBS) | (3<<UCSZ0);
Geändert werden, wegen der URSEL siehe dein Datenblatt zum Controller
Ich hoffe des steht bei allen so drinnen.

Nach dem
if (UCSR0A & (1 << RXC0)) {
solltest du die empfangenen Daten auch mal an den buffer geben.
buffer = UDR;

Deine Registernamen solltest du wieder anpassen.

Gruß MISZOU
#350075
Lesenswert?

hallo,leute
ich möchte euch alle begrüßen als Neuankommende ;) verzweifelt habe ich
ältere Einträge durchgesucht nach der Beschreibung meines
Stefans-ähnlichen Problem.Ich benutze auch stk500 mit atmega8515 und
programmiere mittels Assembler in Avr studio. Es funktioniert alles bis
auf UART/receive/transmit Sache.Ich kann es nicht die "rs232 spare"
zum  receive/transmit bringen :(  Ich benutze nullmodem kabel um pc mit
stk500 zu verbinden,auch "serial port terminal" programm,das mir
erlaubt "connect the port" und binären code zu schicken, es kommt
auch etwas an der rs232sp. an. Ich hab auch die Rx und Tx von der
Spare-Schnittstelle an die RxTx Pins des Mikrocontrollers
angeschlossen. Kann es vielleicht an der Einstellung der Avr studio
liegen oder an Assebler code?
Ich werd euch sehr dankbar wenn jemand die Zeit opfert,um die Fehler zu
finden und darauf zu deuten
code als Dateianhang,mfg danke
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren