www.mikrocontroller.net

Forum: Compiler & IDEs usart strings senden problem


Autor: ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ralph (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so hier ist der Code

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ralph wrote:
> so hier ist der Code
Und warum als .txt? Wenn schon C-Code, dann bitte als .c!

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
Das ist eine ganz schlechte Idee.
Konkret steht da nämlich im Augenblick:
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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, noch was:
Auch wenn du einen Quarz verwendest, wird nichts Sinnvolles am PC 
ankommen. 115,2 kBaud geht mit 8 MHz nicht.

Autor: ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ralph wrote:

> im datenblatt steht das es funktioniert

Im Gegenteil. Da steht, dass es nicht geht:
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.

Autor: ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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:

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

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.