usart strings senden problem

Gast #1182575
Lesenswert?

hi
also ich habe follgendes problem:

also ich verwende einen Atmega 8-16PU und betreibe diesen mit dem 
internen Oszilator mit 8Mhz

wenn ich einen string senden möchte bekomm ich bei hyperterminal 
entweder irgendwelche zeichen heraus(zb: "{Aaaa") obwohl ich "hallo" 
über die schnittstelle senden möchte oder es steht "Com9 kann nicht 
geöffnet werden.Bitte prüfen sie die Anschlusseinstellungen!"

liegt in diesem fall ein fehler mit meinem Code vor(ich tippe mal auf 
baudrate falsch eingestellt) oder ist was anderes falsch?????
stimmt überhaupt der Code wenn ich einen string senden möchte???

es funktioniert wenn ich einen buchstaben sende doch sobald mehr 
buchstaben sind geht gar nichts mehr!!

danke im vorhinein für eure hilfe!
mfg ralph
#1182610
Lesenswert?

1
UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
Das ist eine ganz schlechte Idee.
Konkret steht da nämlich im Augenblick:
1
UCSRC = UBRRH | ((1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0));
Gut, UBRRH ist bei dir im Augenblick 0, so dass es kein fehlerhaftes 
Verhalten verursacht, trotzdem würde ich das "|=" schleunigst in ein "=" 
umwandeln.
Gast #1182647
Lesenswert?

warum soll 115,2k baud rate nicht mit 8Mhz gehn????

im datenblatt steht das es funktioniert und außerdem schaffe ich es ja 
auch einen buchstaben zu senden   es geht nur nicht einen string zu 
senden!!
#1182747
Lesenswert?

> so dann werd ich mir mal einen quarz besorgen!!!!

Dann aber auch gleich einen so genannten Baudraten-Quarz.

> aber vom Code passt alles oder???

Vom bereits angesprochenen "|=" abgesehen, sehe ich keine groben 
Schnitzer.

Kleinigkeiten:

1
//Globale Variablen definieren
2
unsigned char* str;
Diese Variable wird nirgendwo verwendet.

1
     while(!(UCSRA & (1<<UDRE)));
2
     {
3
        UDR = *str++;
4
     }
Wozu Klammern und Einrückung? Das suggeriert, dass das UDR= zum while 
gehört. Dem ist aber nicht so.

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