Forum: Mikrocontroller und Digitale Elektronik baudrate


von bert (Gast)


Lesenswert?

hallo liebe kollegen!

möchte gerne eine einfache ansteuerung auf einen mega8 zusammenbringen.

verwende pcseitig das programm TERMINAL..

ich bin mir über folgende werte nicht ganz sicher:

.def temp = r16
.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

stimmen diese werte für den mega 8 wenn ich über den internen quarz 
fahren will?

denn wenn ich in TERMINAL folgende werte einstelle bringt er mir immer 
irgendwelche meldungen und durch zufall dann einmal die vom uC gesendete 
nachricht 'A' (welche ich tatsächlich empfangen möchte).

TERMINAL werte:
Baudrate 2400  (bei dieser baudrate kam durch zufall mal der korrekte 
string vom uC)
handshaking: none
parity: none
stopbits: 1
databits: 8


bitte um antwort...

lg,
bert

von A.K. (Gast)


Lesenswert?

Woher kommt eigentlich die offenbar unausrottbare Idee, die Dinger 
hätten einen internen Quarz?

von uart uart (Gast)


Lesenswert?

also meine kristallkugel sagt mir: nein...

a) die fuses sind auf 4 mhz gesetzt (standard is 1 mhz) ? wenn nicht, 
clock anpassen
b) in deinem prog steht was von baud=9600 dann nimm auch im terminal 
9600

oder guck mal bei der-hammer.info, der hat ein ganz nettes 
terminal-programm...

und sonst poste bitte noch dein programm-listing.

von bert (Gast)


Lesenswert?

die fuses sind standard... und dass is laut meiner erfahrung beim mega8 
1 mhz oder?

habe das ganze vorhin auch mit:

.def temp = r16
.equ CLOCK = 1000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

getestet falls du das meintest??
leider hat er mir bei einer baudrate von 9600 in TERMINAL nur müll 
asciis gebracht :(


was kann das sein?
warum kommt durch zufall manchmal das richtige zeichen?


lg und danke für die antwort

von Hubertus von der Weide (Gast)


Lesenswert?

> Woher kommt eigentlich die offenbar unausrottbare Idee, die Dinger
> hätten einen internen Quarz?

Die Idee kommt daher, dass Anfänger i. d. R. als erstes mit einem Quarz 
oder einem Quarzoszillator als frequenzbestimmendes Element in Berührung 
kommen und somit davon ausgegangen wird, dass der interne Oszillator des 
µCs auch durch einen Quarz definiert wird. Durchaus nachvollziehbar, wie 
ich finde. Nur jemand mit fundierten Kenntnissen kann einen integrierten 
Quarz von vorne herein ausschließen.

von Michael U. (Gast)


Lesenswert?

Hallo,

ohne die Diskussion um Quarz oder nicht Quarz vertiefen zu wollen, der 
AVR hat nur einen internen RC-Oscillator und der ist auch noch ziemlich 
ungenau...

Ohne die Diskussion "UART geht nur mit Quarz" heraufzubeschwören:

.def temp = r16
.equ CLOCK = 1000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

versuche diese Einstellung und Terminal auf 9600 mal mit etwas 
abweichenden Werten für CLOCK, also 950000 oder 1000050 oder so.
Mit einem Wert wirst Du erstmal nahe genug an der tatsächlichen Frequnz 
Deines AVR sein, damit das Terminalprogramm was sinnvolles empfängt.

Im Zimmer bleibt der Kram da auch erstmal stabil genug, um weiter zu 
experimetieren.

Wenn Du es allerdings immer zuverlässig einsetzen willst, kommst Du um 
einen Quarz wohl nicht drumrum.

Gruß aus Berlin
Michael

von uart uart (Gast)


Lesenswert?

ja, 1 mhz ist standard (seite 30 in der dokumantation)

falls nicht nur rein das "A" im terminal angekommen ist, dann war es 
zufall meiner ansicht nach. hattest du denn eine reihe A's im terminal?

von bert (Gast)


Lesenswert?

danke für die antworten!!

leider kann ich im moment nicht mehr testen da mein prog kabel 
eingegangen ist :((((

ich habe auch eine reihe A's bekommen ja, nur wenn ich dann nochmals 
connecte leider wieder nicht.. ich werde sobald als möglich die variante 
von michael testen.

danke

von lolly (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Ich habe das selbe problem und möchte nun einen externen quarz 
betreiben! Nur da gibt es ein kleines Problem ich kann die Fusebits 
leider nicht setzen! Ich habe ein Programm (PonyProg2000) von meinem 
Kollegen bekommen doch die Fuses lassen sich nicht setzen! Ich verwende 
das OLIMEX MSP430 Development Board. Ich habe andauernd Probeme mit der 
Verbindung zwischen dem PC und dem Mega! Ich kann immer nur einmal die 
Verbindung herstellen und beim zweiten mal geht es einfach nicht mehr! 
Nach einigen zahlreichen Versuchen hat es dann wieder  funktioniert aber 
eben nur ganz kurz! Was kann da sein, gibt es eventuell eine andere 
Möglichkeit.

Anbei befindet sich ein Programm mit dem ich es auch schon versucht 
habe, jedoch ohne Erfolg!

Hoffe es kann mir jemand helfen!

Danke

von dins (Gast)


Lesenswert?

Im angehängten Source ist was in
int prog_fusebits(int n); auskommentiert. Mal nachgeschaut?
Ansonsten würde ich avrdude zum flashen empfehlen.
Falls du unter Windows arbeitest: WinAVR, da ist avrdude auch schon mit 
drin.


von lolly (Gast)


Lesenswert?

Danke für deine schnelle Antwort dins!

Ja das mit den auskommentierten dingen ist absicht(das heißt ich hoffe 
das es stimmt) da ich nur die lowfusebits setzen möchte!

Danke für deinen Vorschlag, ich werde demnächst WinAVR testen ich hoffe 
das es funktioniert!!


Danke nochmal, mfG

von Marco S. (masterof)


Lesenswert?

@lolly

mit einem OLIMEX MSP430 Development Board geht es nicht.
Du must einen programmer nehmen der mit den AVR zusammen arbeitet.

von Werbungverschmäher (Gast)


Lesenswert?

Und bitte immer schön gerade (glatte) quarzfrequenzen nehmen und nicht 
dem irrtum verfallen, dass baudratenquarze besser geeignet wären.

von A.K. (Gast)


Lesenswert?

Das ist ja nun nicht so wild. Bei glatten 2MHz ist man mit 9600 schon 
dabei, nur eben nicht bei 1MHz. Die recht gängigen 8MHz taugen also bis 
rauf zu 38400 und was will man mehr.

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.