usart strings senden problem

Gast #1182575
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
Ich wiederhole mich zwar nur ungern, aber UART mit dem internen 
Oszillator ist grundsätzlich Glückssache, speziell bei den älteren AVRs 
(wie dem Mega8), deren Oszillator noch deutlich ungenauer war als bei 
den aktuellen Modellen. UART geht sinnvoll nur mit Quarz!
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
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!!
ralph wrote:

> im datenblatt steht das es funktioniert

Im Gegenteil. Da steht, dass es nicht geht:
1
115.2k 3 8.5% 8 -3.5%
8,5% und -3,5% sind zu große Fehler.

> und außerdem schaffe ich es ja auch einen buchstaben zu senden

Purer Zufall.
Gast
danke stefan

man lernt immer wieder dazu auf das wär ich auf gar keinen fall gekommen

so dann werd ich mir mal einen quarz besorgen!!!!
aber vom Code passt alles oder???

Mfg ralph
> 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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.