Forum: Mikrocontroller und Digitale Elektronik Uart tickt nicht richtig? ;)


von User N. (panzerkeks) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe in meinem STK500 einen ATTiny2313 auf dem angehängtes Programm 
läuft:

Ein Byte wird aus dem USART gelesen und anschliessend wieder 
zurückgesendet. (alles in einer while schleife, die UART funktionen habe 
ich unverändert dem Datenblatt des 2313 entnommen)

Einstellungen fürs UART am µC: 9600 Baud, 8 Bit Daten, 2 Stop Bits,
8Mhz internal RC Oscillator, startup 14CLK+65ms, spi enabled alles 
andere disabled (kein häckchen im AVR Studio)

Auf dem PC läuft Br@y++ Terminal.
Mit denselben Einstellungen wie im tiny bekomm ich nur <0> :(
Nach viel rumprobieren hab ich allerdings rausgefunden: 300 Baud, 7 
Daten Bits und 2 Stop Bits - es funktioniert!

- darf ich fragen warum?

BTW: kann mir vlt einer erklären wie das mit dem Oscillator Calibration 
byte im AVR Studio funktioniert? hab da so nen verdacht...

thx pk

von vielleicht so (Gast)


Lesenswert?

Interner RC & UART ... keine gute Idee.

von Thilo M. (Gast)


Lesenswert?

Hast du die 'CKDIV8' - Fuse 'rausgenommen?
Mit dem internen Oszillator ist der UART-Betrieb Glückssache. Du 
solltest einen Quarz benutzen.

von Jean P. (fubu1000)


Lesenswert?

Hallo,
der interne Takt ist nicht so das Wahre für den USART.
Nimm nen externen Quarz dann sollte das bei 9600 Baud auch ohne Probleme 
gehen.

Gruß

von Andreas W. (geier99)


Lesenswert?

vielleicht so wrote:
> Interner RC & UART ... keine gute Idee.

stimmt :-(

aber, wenn er zumindest mit dem AVR-Studio das CAL-Byte für seinen Takt 
ausliest,  und dieses dann direkt ins EEPROM programmiert. Sollte er in 
seiner Init-Routine legendlich diese EEPROM - Adresse  auslesen und den 
Wert im  OSCAL-Register ablegen.

Zumindest im Zimmer sollte er damit gut durchkommen :-)

Ich hatte bis jetzt damit noch nie Probleme gehabt,
 und das mit einer 19200-8-N-1 Schnittstellen Konfiguration.

Bye
Andy

von User N. (panzerkeks) Benutzerseite


Lesenswert?

Hmm hab ja den tiny auf dem STK500, also flink die fuse auf "Ext. 
Crystal Osc. 8.0- MHz; startup 14CLK + 65ms" geändert, jetzt krieg ich 
mit vorigen Einstellungen "X@xX^~~", mit den gleichen wie am µC <0>.

von Matthias R. (mnr)


Lesenswert?

Du kannst doch die vom STK generierte Standardfrequenz nehmen 
(3.64...MHz). Die ist 100% für die krummen Baudraten geeignet.

Gruß,
Matthias

von User N. (panzerkeks) Benutzerseite


Lesenswert?

Fuse gesetzt auf Ext. Clock; startup 14Clk + 65ms
Auch mit Clock Generator auf 3686400 funktioniert es nicht (-> "<0>")

Habe für X@xX^~~ vorhin übrigens "Hallo Welt!" gesendet.

von Falk B. (falk)


Lesenswert?

@ Laurenz Altenmüller (panzerkeks)

>Fuse gesetzt auf Ext. Clock; startup 14Clk + 65ms
>Auch mit Clock Generator auf 3686400 funktioniert es nicht (-> "<0>")

Du musst auch F_CPU auf den richtigen Wert im Quelltext setzen, neu 
compilieren und brennen.

MFG
Falk

von Thilo M. (Gast)


Lesenswert?

Hast du die 'CKDIV8' - Fuse 'rausgenommen?

von User N. (panzerkeks) Benutzerseite


Lesenswert?

ja

von User N. (panzerkeks) Benutzerseite


Lesenswert?

@ falk hab ich gemacht.

Hab spaßeshalber mal nen anderen 2313 probiert, bei dem ging allerdings 
nicht mal der trick mit den einstellungen (siehe 1.post) ?

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.