Forum: Mikrocontroller und Digitale Elektronik [AVR] Probleme bei UART Kommunikation


von Dome (Gast)


Lesenswert?

Hallo liebes µC.net-Team,
ich habe einige Probleme mit meinem ATmega8 und der Kommunikation über 
RS232.
Ich habe den ATmega8 mit einem MAX232 mit meinem Computer verbunden und 
versuche nun einige Befehle zu übertragen. Die Hauptaufgabe des ATmegas 
ist, eine LED einzuschalten und danach ADC Daten zu übermitteln.
Als ich aber Putty gestartet habe, um dort die Befehle einzugeben, waren 
in der Konsole nur Hieroglyphen zu sehen. Also ich konnte keinen reinen 
Text eingeben, sondern nur irgendwelche Sonderzeichen.
Die Schaltung an sich habe ich schon überprüft und keine Fehler 
gefunden. Auch die Einstellungen in Putty stimmen.

Hier ist mein BASCOM-Code:
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
$baud = 9600
4
5
Config Portd.2 = Output
6
7
Led Alias Portd.2
8
9
Config Adc = Single , Prescaler = Auto , Reference = Avcc
10
Start Adc
11
12
Dim Gets As String * 255
13
Dim Iinput As Integer
14
15
Do
16
   Gets = ""
17
   Iinput = 0
18
19
   Input Gets
20
21
   Select Case Gets
22
      Case "An":
23
         If Led <> 1 Then
24
            Led = 1
25
            Print "LED wurde eingeschaltet!"
26
         Else
27
            Print "LED ist schon an!"
28
         End If
29
      Case "Aus":
30
         If Led <> 0 Then
31
            Led = 0
32
            Print "LED ist ausgeschaltet!"
33
         Else
34
            Print "LED ist noch aus!"
35
         End If
36
37
   End Select
38
39
40
   Iinput = Getadc(0)
41
42
   Print "ADC(0) returns: " ; Iinput
43
44
   Waitms 500
45
46
Loop
47
48
End

Ich hoffe ihr könnt mir helfen.

von Sebastian R. (sepp1985)


Lesenswert?

Moin,

Ich kann zwar nichts mit dem Bascom anfangen, aber hatte das gleiche 
Prob..
Bei mir lag es an der Baudrate. Habe bei mir ins Register für die Baud 
9600 reingeschrieben. Da musste aber 25 rein. Diese repräsentiert dabei 
die 9600.
Desweiteren würde ich mir den Frame Aufbau anschauen. Anzahl Stop Bits 
Parity usw

MfG
Sebastian

von Sascha W. (sascha-w)


Lesenswert?

also mit 1MHz Takt hat die UART im Nomalmodus schon 7% Abweichung -> das 
ist viel zu viel. Wenn du in der UART-Config irgenwie den U2X Modus 
(Double-Speed) aktivieren kannst - kenne mich mit BASCOM nicht aus.
Schau einfach mal ins Datenblatt, da ist auch eine Tabelle drin!


Sascha

von Dome (Gast)


Lesenswert?

OK,
danke erstmal für die Antworten. Ich habe jetzt die Frequenz($crystal) 
und die BAUD-Rate angepasst. Dennoch besteht das Problem noch immer mit 
dem Unterschied, dass ich jetzt nur ca. 5-7 Zeichen eingeben kann und 
danach nichts mehr.

von Sascha W. (sascha-w)


Lesenswert?

Dome schrieb:
> OK,
> danke erstmal für die Antworten. Ich habe jetzt die Frequenz($crystal)
> und die BAUD-Rate angepasst.
das klingt so als ob du nicht wüsstest mit welcher Frequenz der AVR 
läuft?
Hast du einen Quarz angeschlossen? Fuses richtig eingestellt.

Sascha

von Dome (Gast)


Lesenswert?

Also einen externen Quarz habe ich (noch) nicht angeschlossen. (Hätte da 
noch einen 20 MHz und einen 16 MHz)
Da ich gerade erst angefangen habe, mich mit Microcontrollern zu 
beschäftigen, benutze ich Bascom. Bascom müsste theoretisch die Fuses 
automatisch setzen.
Im Moment bin ich eigentlich auch ein wenig überfragt, denn das Problem 
scheint eher mit der Verbindung mit dem PC zusammenzuhängen als mit dem 
Mega8.

von Jobst M. (jobstens-de)


Lesenswert?

Dome schrieb:
> Also einen externen Quarz habe ich (noch) nicht angeschlossen.

Quarz anschliessen!
Mit dem internen Oszillator wird das nichts.


Gruß

Jobst

von Dome (Gast)


Lesenswert?

Jobst M. schrieb:
> Quarz anschliessen!
> Mit dem internen Oszillator wird das nichts.

Danke für die Antwort.
Also funktioniert das nur mit ext. Quarz, oder?

von Jobst M. (jobstens-de)


Lesenswert?

Dome schrieb:
> Also funktioniert das nur mit ext. Quarz, oder?

Nein, aber das ist die günstigste Variante.


Gruß

Jobst

von Dome (Gast)


Lesenswert?

So, danke für die hilfreichen Antworten.
Ich werde dann mal versuchen einen Quarz anzuschließen. Da hätte ich 
jedoch noch eine Frage:  Irgendwo habe ich gelesen, dass man max. 18MHz 
nehmen kann, sodass der 20MHz weg fällt und ich den 16MHz nehmen muss. 
Reicht dieser denn überhaupt aus bzw. hat er eine passende Frequenz?

von Sebastian R. (sepp1985)


Lesenswert?

Dome schrieb:
> So, danke für die hilfreichen Antworten.
> Ich werde dann mal versuchen einen Quarz anzuschließen. Da hätte ich
> jedoch noch eine Frage:  Irgendwo habe ich gelesen, dass man max. 18MHz
> nehmen kann, sodass der 20MHz weg fällt und ich den 16MHz nehmen muss.
> Reicht dieser denn überhaupt aus bzw. hat er eine passende Frequenz?

Welchen Mega8 hast du denn?
Ich verwende den atmega8-Pu und der verträgt bis zu 16Mhz. Am besten 
lädst du dir das Datenblatt mal runter. Dort kannst du unter USART auch 
ein paar Baud-examples anschauen. Desweiteren würde ich die Empfehlen 
das Uart Tutorial durchzulesen.

16 MHz reichen dicke aus.

Bin auch gerade dabei mein Uart inbetrieb zunehmen. Würde dir gern 
Helfen nur wie schon gesagt kann ich kein Bascom

MfG
Sebastian

von Jobst M. (jobstens-de)


Lesenswert?

Baudratenquarze sind:

6.144
7.3728
9.8304
11.0592
12.288
14.7456
18.432
22.1184
24.576
...MHz

Damit lassen sich die gebräuchlichen Baudraten mit 0%-Fehler erzeugen.


Gruß

Jobst

von Dome (Gast)


Lesenswert?

Da muss ich mir noch mal einen dieser Quarze zulegen.
Ich habe es jetzt auch ohne ext. Quarz hinbekommen. Ich musste einfach 
nur die richtige Baud-Rate wählen (bei 1MHz internen Oszi. $baud = 
2400).
Bevor ich aber Geld für einen Quarz ausgebe, den ich hinterher nicht 
gebrauchen kann, würde ich gern eure Meinung hören. Welche Frequenz 
empfehlt ihr? Ich würde mir ja einen 3.6864 Mhz Quarz kaufen, da er laut 
dieser(http://www.wormfood.net/avrbaudcalc.php) Tabelle viele (/alle 
aufgelisteten) Baud-Raten fehlerfrei unterstützt.

von Jobst M. (jobstens-de)


Lesenswert?

Dome schrieb:
> Bevor ich aber Geld für einen Quarz ausgebe, den ich hinterher nicht
> gebrauchen kann

Wenn man Deine Texte liest, bekommt man den Eindruck, als wenn es sich 
bei einem Quarz um eine riesen Investition handelt. So ein Ding kostet 
(bei Reichelt z.B.) 18ct!

Nimm 14.7456MHz (= 4 x 3.6864MHz) - damit sind ebenso alle Baudraten 
möglich und der Prozessor rennt etwas schneller.

Es ist nie verkehrt verschiedene Frequenzen auf Vorrat zu haben - wenn 
man damit bastelt ...

Ich verwende am Atmega 48, 168 und 644 gerne 18,432MHz und an 8051ern 
24,576MHz - sofern ich die UART benutze.


Gruß

Jobst

von Sascha W. (sascha-w)


Lesenswert?

Dome schrieb:
> Bevor ich aber Geld für einen Quarz ausgebe, den ich hinterher nicht
> gebrauchen kann, würde ich gern eure Meinung hören. Welche Frequenz
> empfehlt ihr?
das hängt ganz von deinen Bedürfnissen ab - höhere Frequenz -> höherer 
Stromverbrauch. Wenn sich dein µC sowiso nur in irgendwelchen 
Warteschleifen langweilt und nichts zeitkritisches zu tun ist braucht 
auch die Frequenz nicht unnötig hoch sein.

> Ich würde mir ja einen 3.6864 Mhz Quarz kaufen, da er laut
> dieser(http://www.wormfood.net/avrbaudcalc.php) Tabelle viele (/alle
> aufgelisteten) Baud-Raten fehlerfrei unterstützt.
eine passable Größe - hab ich auch schon oft verbaut.
Die Baudratentabelle findest du auch im Datenblatt des M8.

Sascha

von Dome (Gast)


Lesenswert?

Jobst M. schrieb:
> Wenn man Deine Texte liest, bekommt man den Eindruck, als wenn es sich
> bei einem Quarz um eine riesen Investition handelt. So ein Ding kostet
> (bei Reichelt z.B.) 18ct!

Dann kommt aber noch Porto dazu und dann lohnt es sich nicht NUR einen 
Quarz zu bestellen.

Sascha Weber schrieb:
> eine passable Größe - hab ich auch schon oft verbaut.
> Die Baudratentabelle findest du auch im Datenblatt des M8.
>
> Sascha

Danke für die Antwort.

von Karl H. (kbuchegg)


Lesenswert?

Dome schrieb:
> Jobst M. schrieb:
>> Wenn man Deine Texte liest, bekommt man den Eindruck, als wenn es sich
>> bei einem Quarz um eine riesen Investition handelt. So ein Ding kostet
>> (bei Reichelt z.B.) 18ct!
>
> Dann kommt aber noch Porto dazu und dann lohnt es sich nicht NUR einen
> Quarz zu bestellen.

Wegen EINEM Quarz macht man auch keine Bestellung.
Kauf gleich ein paar verschiedene. Dazu ein paar verschiedenfarbige LED 
samt Vorwiderständen (braucht man imer mal), dazu ein paar Taster 
(braucht man auch immer wieder mal), Draht ist auch nie verkehrt und was 
sonst halt noch so anfällt. Ein paar Standardbauteile vorrätig zu haben, 
hat beim Basteln noch ni geschadet. Da sind offenbar Störungen auf einer 
Baugruppe? OK, dann gleich mal ein paar 100nF Blockkondensatoren 
verteilen.

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Hi,

das mit den Baudratenquarzen stimmt so im wesentlichen, dennoch geht es 
auch wunderbar mit dem 16 Mhz Quarz (dann sparst du die 18 cent ;-))

Hab nämlich gerade eine Schaltung mit TWI und RS232 aufgebaut, da TWI 
zwar nicht ganz so zeitkritisch ist, aber mit 100.000 oder 400.000 Hz 
läuft, ist mein 8 Mhz Quarz besser geeignet, mit dem sind übrigens 
19.200 Baud auch noch problemlos möglich.

Lies mal nach auf Seite 156 im Atmega8-Datenblatt, bei 16 Mhz-Quarz sind 
etliche Baudraten mit 0,2% Abweichung möglich!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.