ATTiny 2313 Baudrate

Gast #3932667
Lesenswert?

Hallo,

ich versuche bei dem ATtiny und dem internen Osscilator (8MHz) eine 
Baudrate von 4800 einzustellen.

Aus dem datenblatt habe ich den Wert 103 (dez.) genommen und in das 
UBRRL geschrieben. Mit dem Ossziloscope messe ich dann eine Frequenz von 
555Hz.

Ich würde mich freuen wenn ihr mir helfen könntet.

Dabke & Grüße
Gast #3932868
Lesenswert?

Hallo,

vielen Dank für deine Antwort. Fuses hatte ich auf 8MHz eingestellt. Das 
der Interne RC etwas ungenauer sein soll habe ich auch gehört aber kann 
man den nicht kallibrieren?

Weißt du wie das geht?

Viele Grüße
Gast #3933094
Lesenswert?

Hallo,

C-Code der initialisierung der UART:
1
void iniUART()
2
{// USART initialization
3
// Communication Parameters: 8 Data, 1 Stop, No Parity
4
// USART Receiver: On
5
// USART Transmitter: On
6
// USART Mode: Asynchronous
7
// USART Baud rate: 9600
8
UCSRA=0x00;
9
UCSRB=0x18;//transmitter and receiver enable
10
UCSRC=0x06;//8 data bits and ...
11
UBRRH=0x00;//-|
12
UBRRL=0x10;//-- set baudrate 4800 bei internen 4MHz
13
}

Und die CKDIV8 Fuse beachtet? --> nein, habe ich leider nicht beachtet.

Das LOW Fuse hat lauf AVRStudio den wert 0x44;

Vielen Dank für eure Hilfe. Ich weiß das zu schätzen!!!!!!

Viele Grüße
Gast #3933249
Lesenswert?

Hallo,

hast du recht das war echt blöd geantwortet. Nee, läuft noch nicht ich 
versuche gerade zu verstehen wie das mit dem Kalibrieren geht. Ich hoffe 
das das des Rätsels lösung ist.

In wie weit das CKDIV8-Register einzustellen ist habe ich noch nicht 
ganz verstanden.

Vielleicht hat noch jemand einen Tipp. Ich würde mich sehr freuen.

Derzeit sehe ich 2 Möglichkeiten.

- Umstieg auf externen Quarz
- kalibrierung

Vielen Dank noch mal für eure Hilfe!!!!!
#3933263
Lesenswert?

hans schrieb:
> - Umstieg auf externen Quarz

Das löst dein Problem mit der /8 Fuse nicht.

> In wie weit das CKDIV8-Register einzustellen ist habe ich noch nicht
> ganz verstanden.

Die hat 2 Zustände, einer ist richtig, einer ist falsch. ;-)

In beiden funktioniert der AVR, nur eben mit um den Faktor 8 
unterschiedlicher Frequenz. Damit wirst du dich nicht aussperren.
#3933268
Lesenswert?

hans schrieb:
> aber kann
> man den nicht kallibrieren?
>
> Weißt du wie das geht?

Letztendlich musst Du nur den geeigneten Wert ins OSCCAL-Register 
schreiben. Nach dem Einschalten steht da schon ein Wert drin, das ist 
der werksseitig kalibrierte. Der wird jedes mal beim Einschalten wieder 
da reingeschrieben.

Du musst also gleich nach dem Reset Deinen eigenen (selbst ermittelten) 
Wert in dieses Register schreiben, das ist alles. Augenblicklich wird 
sich die Oszillatorfrequenz entsprechend ändern.

Natürlich ist das eigentliche Problem: Wie ermittelst Du diesen Wert, er 
wird bei jedem Exemplar unterschiedlich ausfallen. Wenn Deine Schaltung 
nur ein Einzelstück ist und keine Serienproduktion kannst Du den 
benötigten Wert einmal von Hand per Ausprobieren ermitteln, das wird 
dann perfekt funktionieren bis ans Ende der Zeit.

Wenn es eine Serienproduktion wird dann rate ich DRINGEND dazu 
stattdessen einen Quarz zu nehmen, und zwar einen von den 
Baudratenquarzen mit den "krummen" Frequenzen die sich perfekt auf die 
glatte Baudrate runterteilen lassen (und dann nimm gleich den mit der 
höchsten Frequenz die der Tiny noch kann (18.432MHz?) dann bekommst Du 
auch gleich einen ordentlichen Kick in der Rechenleistung). Du WILLST 
Dir das Problem nicht antun mit dem notwendigen Kalibrieren jedes 
einzelnen Geräts und der möglichen Fehlerquelle einer fehlerhaften 
Kalibrierung, der Kunde wird Dir das um die Ohren hauen wenn solche 
Probleme auftreten und die werden auftreten sobald mehr als nur ne Hand 
voll Geräte gebaut werden.
Gast #3933294
Lesenswert?

Bernd K. schrieb:
> Wenn es eine Serienproduktion wird dann rate ich DRINGEND dazu
> stattdessen einen Quarz zu nehmen, und zwar einen von den

Na klar. Klingt nach dem Projekt eines Entwicklers für Serienproduktion. 
Falls nicht, reicht vor allem bei den niedrigen Baudraten wie 4800 der 
interne Oszillator.
Gast #3933306
Lesenswert?

> Das LOW Fuse hat lauf AVRStudio den wert 0x44;

Freut mich, dass Du inzwischen erkannt hast, Dass die Fuses wirklich 
falsch sind.

> Falls nicht, reicht vor allem bei den niedrigen Baudraten wie 4800 der
> interne Oszillator.

Nicht ohne Kalibrieriung. Falls des TOs Messung richtig ist und er 555 
Bd statt der eingestellten 600 Bd bekommt, dann liegt er um immerhin 
fast 8% daneben - das schluckt ein normales(tm) Gegenüber 
normalerweise(tm) nicht mehr.
#3933308
Lesenswert?

@ janos (Gast)

>Falls nicht, reicht vor allem bei den niedrigen Baudraten wie 4800 der
>interne Oszillator.

Und noch Einer, der die Prozentrechnung nicht verstanden hat.

5% Fehler sind immer 5% Fehler, egal ob bei 4800 oder 115200 Baud.
Ich hab mit Kalibrierung auch schon 115200 Baud benutzt, alles kein 
Thema.
Gast #3933338
Lesenswert?

Hallo,

ich trau mich kaum zu fragen aber welches Register verbirgs sich hinter 
dem "Fuses LOW"? Ist das das CLKPR Register? Und wird dadurch die 
Frequent für den gesamten Kontroller herunter geteilt?

Welches wäre denn der richtige Wert für dieses Register?

Bitte steinigt mich nicht. (ist doch bald Weihnachten) ;-)

Grüße an alle.
Gast #3933384
Lesenswert?

Hallo,

Ok ich denke ich habe das mit den Fuse Bytes verstanden. Die Fuse 
Byte/Bits configurieren unter anderem welche Quelle für den SystemClock 
verwendet wird oder den Divisor8.

Was mir aber derzeit noch nicht so ganz klar ist, ist das ich nun bei 
einem externen Quarz (7,3...MHz) in das UBRRL Register eine 5 eintragen 
musste um auf 9600 Baud zu kommen. Im datenblatt steht 47 oder 95. Also 
muss irgendwo noch ein teiler sein der die externe Frequenz runter 
teilt. Könnte das das  CLKPR Register sein?

Grüße Hans
Gast #3933400
Lesenswert?

> Was mir aber derzeit noch nicht so ganz klar ist, ist das ich nun bei
> einem externen Quarz (7,3...MHz) in das UBRRL Register eine 5 eintragen
> musste um auf 9600 Baud zu kommen. Im datenblatt steht 47 oder 95.

Welchen Wert hat die low fuse jetzt? Hast Du die CKDIV8 auf 1(!) 
gesetzt?
Gast #3933411
Lesenswert?

Hi

>Was mir aber derzeit noch nicht so ganz klar ist, ist das ich nun bei
>einem externen Quarz (7,3...MHz) in das UBRRL Register eine 5 eintragen
>musste um auf 9600 Baud zu kommen.

Wie kommst du auf 5?

MfG Spess
Gast #3933421
Lesenswert?

> Wie kommst du auf 5?

Er stellt (imaginär) 76800 Bd ein um auf 9600 Bd zu kommen -> Der 
Systemtakt läuft immernoch um Faktor 8 zu langsam. Ich vermute der TO 
ist gerade damit beschäftigt, die CKDIV8 zu löschen.
Gast #3933680
Lesenswert?

Hallo zusammen,

vielen Dank für eure Hilfe. Nun scheint alle so zu funktionieren wie es 
das Datenbaltt vorgibt. Top!!!!!

Ich allen schöne Feiertage. Noch mal vielen Dank such für eure Geduld. 
;-)

Viele Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren