µC Taktung: krumme Werte Warum?

OP #3501563
Lesenswert?

Hallo,

ich verstehe eine Sache bei der angegebenen Taktung im Makefile noch 
nicht ganz. Warum sind das in Beispiel Makefiles oft so krumme Werte wie 
"F_CPU = 14745600" ?

Kann ich jede Zahl wählen innerhalb des Bereiches, den mein Atmel µC 
hinbekommt?

Gibt es eine Übersicht der standard Taktung verschiedener Atmel Modelle?

Liebe Grüße,
Adrian.
#3501575
Lesenswert?

Du musst hier den Takt eintragen, mit dem dein AVR versorgt wird. Die 
Angabe dient nur zu Berechnung von Delays usw. Damit kannst du NICHT 
einstellen wie schnell der AVR läuft und mit welchem Takt er arbeitet.

Wenn du zum Beispiel einen 8MHz Quarz an deinem µC angeschlossen hast, 
dann muss du hier 8000000 eintragen.

Die "krummen" Werte haben damit zu tun, dass mit ihnen durch 
entsprechende Teiler die Baudraten von zum Beispiel 9600 Baud recht 
einfach und genau erreicht werden kann.

Viele Grüße Michael
#3501645
Lesenswert?

Oszillatorschaltungen mit Quarz brauchen wegen der hohen Schwinggüte des 
Quarzes recht lange, bis die für den Takt notwendige Schwingamplitude 
erreicht ist.

Zusammen mit Quarz also immer die längste Wartedauer zwischen 
Spannungsanlegen und Start des Prozessors (start-up-time) zu nehmen, 
meist sind das bei AVRs 64ms.

Bei Keramikschwingern ist die Schwinggüte um den Faktor 100 schlechter, 
da kann  man auch kürzere Startzeiten nehmen.

Bei RC-Oszillatoren, die schon nach wenigen Takten volle Amplitude haben 
gehts ohne Wartezeit. Ebenso wenn der Takt von einem externen Oszillator 
bereits geliefert wird.

Brauchen tut man die kurzen Startzeiten meistens nur in Ausnahmefällen.
Gast #3501672
Lesenswert?

Markus Müller schrieb:
> 14745600 ist ein super gerader Wert um eine exakte Baudrate von 115200
> Baud erzeugen zu können.
>
> Die alten Atmel-Prozessoren haben leider schlechte Teiler und deshalb
> benötigt man solche Quarze.

Und wie machen das neue Prozessoren? Die brauchen keine Baudratenquarze 
weil sie gute Teiler haben? Schon drüber nachgedacht, was das für ein 
Schwachsinn ist?
#3501683
Lesenswert?

> Die brauchen keine Baudratenquarze weil sie gute Teiler haben?

Naja, irgendwelche Quarze werden sie schon noch brauchen. Aber keine 
Vielfachen mehr der Art 19200*16*x...

> Schon drüber nachgedacht, was das für ein Schwachsinn ist?

Wieso, stimmt doch. Heute gibts entweder PLLs oder fractional Divider 
dafür.
(Firma: EleLa - www.elela.de) #3501761
Lesenswert?

atmel schrieb:
> Markus Müller schrieb:
>> 14745600 ist ein super gerader Wert um eine exakte Baudrate von 115200
>> Baud erzeugen zu können.
>>
>> Die alten Atmel-Prozessoren haben leider schlechte Teiler und deshalb
>> benötigt man solche Quarze.
>
> Und wie machen das neue Prozessoren? Die brauchen keine Baudratenquarze
> weil sie gute Teiler haben? Schon drüber nachgedacht, was das für ein
> Schwachsinn ist?

Bei einem STM32 kann ich bei 16MHz einen Teiler von 139 einstellen um 
115107 Baud mit einer Fehlerrate von 0,08% zu erreichen.

Beim Atmel muss man bei 16MHz einen Teiler von 9 einstellen um eine 
Baudrate von 111111 zu erreichen mit einer Fehlerrate von 3,55% zu 
haben. (Interner Teiler von 16)

Das sind die Unterschiede zu modernen "fractional Divider". Andere µC 
haben z.B. auch nur einen internen Teiler von 8 (kleinere PIC's), ob das 
AVR auch kann weiß ich jetzt nicht auswendig.
Gast #3501776
Lesenswert?

Dein Beispielquarz hat genauso eine gerade Frequenz wie ein Uhrenquarz 
mit 32.768 Hz. Geteilt durch 2^15, ein in der Computertechnik gerader 
Teiler, ergibt das 1 Hz oder einen Tick pro Sekunde.

Die serielle Übertragung wird vielfach mit dem 16-fachen (ein im 
Computer grader Teiler) der Übertragungsfrequenz also 16 x 115200 = 
1.843.200 Hz kontrolliert. Dieser Wert mal 15 ergibt Deine ominösen 
14.745.600 Hz.

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