Forum: Mikrocontroller und Digitale Elektronik wie ist das mit den 16/20MHz beim Atmega4809


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias W. (matt007)


Lesenswert?

der Atmega4809 hat einen internen RC-Oszillator, der per Fuses bzw. per 
Software beeinflusst werden kann. Im Datenblatt steht 16/20MHz. Leider 
blieb mir bisher verborgen wie zwischen 16 und 20MHz umgeschaltet werden 
kann.

Mit dem Befehl CLKCTRL_MCLKCTRLA = CLKCTRL_CLKSEL_OSC20M_gc;  soll man 
20MHz einstellen können. Um die tatsächlich erzeugte Frequenz zu messen 
stelle ich mit der Zeile CLKCTRL_MCLKCTRLA = 0x80; laut Datenblatt 20MHz 
ein und setze CLKOUT aktiv. Am Pin kamen jedoch nur 16MHz (~62ns) an.

Wie kann man auf die 20MHz kommen?

In der iom4809.h fand ich keinen Hinweis wie man 16MHz einstellen kann. 
Und doch kommen 16 MHz statt der erwarteten 20MHz an.

Wer kann das Rätsel lösen?

Gruss
Matthias

von Peter D. (peda)


Lesenswert?

Siehe Datenblatt unter:
7.8.2.3 Oscillator Configuration

von Martin (Gast)


Lesenswert?

akt. Datenblatt Seite 55
1
OSCCFG
2
3
0x0 Reserved
4
0x1 Run at 16 MHz
5
0x2 Run at 20 MHz
6
0x3 Reserved

von Peter D. (peda)


Lesenswert?

Matthias W. schrieb:
> In der iom4809.h fand ich keinen Hinweis wie man 16MHz einstellen kann.

Die Umschaltung erfolgt durch Ändern der Fusebits per UPDI.
Eine Umschaltung zur Laufzeit ist nicht möglich.

: Bearbeitet durch User
von Wunderer (Gast)


Lesenswert?

Matthias W. schrieb:
> Wie kann man auf die 20MHz kommen?

Matthias W. schrieb:
> Wer kann das Rätsel lösen?

Seltsam ... dass der Hersteller das ins Datenblatt schreibt?

Da kommt keiner drauf.

Beitrag #6309191 wurde von einem Moderator gelöscht.
von Tatenblatt (Gast)


Lesenswert?

Wunderer schrieb:
> Matthias W. schrieb:
>> Wie kann man auf die 20MHz kommen?
>
> Matthias W. schrieb:
>> Wer kann das Rätsel lösen?
>
> Seltsam ... dass der Hersteller das ins Datenblatt schreibt?
>
> Da kommt keiner drauf.

Naja, es kommt darauf an, welches Datenblatt benutzt wird. Es gibt da 
neue und überarbeitete, in denen die Hälfte fehlt, oder der 
Vorgängerversion widerspricht. Insofern ist die Frage: Was steht denn im 
Datenblatt eine zunehmend blöde.

von Matthias W. (matt007)


Lesenswert?

Peter D. schrieb:
> Siehe Datenblatt unter:
> 7.8.2.3 Oscillator Configuration

Danke Peter !

von Matthias W. (matt007)


Lesenswert?

Martin schrieb:
> akt. Datenblatt Seite 55

Danke Martin !

von Matthias W. (matt007)


Lesenswert?

Peter D. schrieb:
> Die Umschaltung erfolgt durch Ändern der Fusebits per UPDI.

Danke Peter. Das müsste dann ggf. auch mit AVRDUDE gehen oder einem Tool 
das darauf aufsetzt?

von Matthias W. (matt007)


Lesenswert?

Tatenblatt schrieb:
> Naja, es kommt darauf an, welches Datenblatt benutzt wird.

welches sollte ich denn nun nutzen? Hast Du einen Link auf die Fassung 
die Dir half?

von Wunderer (Gast)


Lesenswert?

Matthias W. schrieb:
> Das müsste dann ggf. auch mit AVRDUDE gehen oder einem Tool
> das darauf aufsetzt?

Bloss nicht das Atmel Original Tool verwenden! Das könnte
zu einfach sein. Da würde einem das Schreiben von Kommando-
zeilen verwehrt bleiben und man dürfte sich auch nicht mit
der fehlerbehafteten Umrechnung von Bits in Hexzahlen
herumschlagen.

von Tatenblatt (Gast)


Lesenswert?

> welches sollte ich denn nun nutzen? Hast Du einen Link auf die Fassung
> die Dir half?

Das hier stimmt (bei dem, was ich an dem Kntroller benutzt habe)

https://www.microchip.com/wwwproducts/en/ATMEGA4809

von Tatenblatt (Gast)


Lesenswert?

Wunderer schrieb:
> Matthias W. schrieb:
>> Das müsste dann ggf. auch mit AVRDUDE gehen oder einem Tool
>> das darauf aufsetzt?
>
> Bloss nicht das Atmel Original Tool verwenden!

Bezahlst Du mir und dem TO jeweils ein Atmel-Original Tool?

Nein? Dann halt die Fresse und verpiss Dich hier!

von Tatenblatt (Gast)


Lesenswert?

Ergänzung: Es gibt Leute, die verstehen's nur, wenn die Worte klar und 
unmißverständlich sind.

von Georg M. (g_m)


Lesenswert?

Tatenblatt schrieb:
> Bezahlst Du mir und dem TO jeweils ein Atmel-Original Tool?

Was kostet denn das Atmel Studio 7?

von Tatenblatt (Gast)


Lesenswert?

Georg M. schrieb:
> Tatenblatt schrieb:
>> Bezahlst Du mir und dem TO jeweils ein Atmel-Original Tool?
>
> Was kostet denn das Atmel Studio 7?

Nerven.

Gegenfrage, Herr Schlauberger: Was kostet ein Atmel-Programmiergerät, 
das vom
Atmel-Studio 7 unterstützt wird?

von Wunderer (Gast)


Lesenswert?


von Wunderer (Gast)


Lesenswert?

(Mann, bin ich schlau ...)

von A. B. (Gast)


Lesenswert?

Matthias W. schrieb:
> welches sollte ich denn nun nutzen? Hast Du einen Link auf die Fassung
> die Dir half?

Das vollständige Datenblatt des interessierenden uCtrl ist ein 
unabdingbares MUSS bevor man sich irgendwie mit uCtrl-Software oder 
uCtrl-Hardware beschäftigt.

Microchip stellt alles zur Verfügung: Im Fall des ATmega4809 in einer 
ersten zweigeteilten, eher ungeeigneten Fassung, seit Anfang 2020 in 
einer neuen Version.

Google - Microchip - Atmega4809 :
*******************************
http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega4808-09-DataSheet-DS40002173B.pdf

https://www.microchip.com/wwwproducts/en/ATMEGA4809#additional-features
[Documents] liefert auch Application-Notes

...

von Wunderer (Gast)


Lesenswert?

Tatenblatt schrieb:
> Dann halt die Fresse und verpiss Dich hier!

Jetzt hab ich immer noch nicht die Fresse gehalten und
mich immer noch nicht verpisst! So ein Mist.

von Georg M. (g_m)


Lesenswert?

Tatenblatt schrieb:
> Was kostet ein Atmel-Programmiergerät,
> das vom
> Atmel-Studio 7 unterstützt wird?

ATmega4809 Curiosity Nano kostet bei Mouser 13,89 € (+MwSt.)

von Georg M. (g_m)


Lesenswert?


von Wunderer (Gast)


Lesenswert?

Georg M. schrieb:
> Das ist kein UPDI-Programmer.

Doch, nur dass es früher nur PDI Interface genannt wurde.
Mit dem genannten Interface (das ein Clone zum Original ist)
kann man zwar nicht debuggen, aber programmieren.

von Georg M. (g_m)


Lesenswert?

Wunderer schrieb:
> kann man zwar nicht debuggen, aber programmieren.

Dann gehts noch billiger:

ATTINY416-XNANO kostet
bei Mouser 8,22 € (+MwSt.),
bei Digi-Key 8,06 € (+MwSt.).

Beitrag #6309337 wurde von einem Moderator gelöscht.
Beitrag #6309340 wurde von einem Moderator gelöscht.
von Wunderer (Gast)


Lesenswert?

Moby schrieb im Beitrag #6309337:
> Schon die Anzahl der Leitungen unterscheidet sich. PDI kommt mit einer
> extra CLK Leitung daher, UPDI ist bidirektoral auf nur 1 Datenleitung...

Ja scheint so zu sein.

UPDI ist nicht gleicht PDI, der AVR ISP MKII dürfte es zwar
von der Hardware her können aber an der Firmware wird sich
wohl nichts mehr dahingehend tun.

von Neuling (Gast)


Lesenswert?

Für UPDI braucht ihr nur ein UART-USB converter und dann PyUPDI

von Matthias W. (matt007)


Lesenswert?

Tatenblatt schrieb:
> es kommt darauf an, welches Datenblatt benutzt wird.

offensichtlich !

im "Family Data Sheet - megaAVR® 0-series" DS40002015C von 2019 ist der 
Punkt 7.8.2.3 Oscillator Configuration nicht enthalten. Auch auf S.55 
steht nichts dazu.

im "48-Pin Data Sheet – megaAVR® 0-series" DS40002016C von 2019 gibt es 
auch keinen Punkt 7.8.2.3. Auf S.55 dazu nichts.

von Matthias W. (matt007)


Lesenswert?

Wunderer schrieb:
> Bloss nicht das Atmel Original Tool verwenden! Das könnte
> zu einfach sein.

welches Originaltool meinst Du denn? Das was beim Studio 7 dann 
aufgerufen wird? Ich nutze bewusst kein Studio 7 weil mein Laptop älter 
ist.

von Matthias W. (matt007)


Lesenswert?

Tatenblatt schrieb:
> Das hier stimmt

Danke !

von Matthias W. (matt007)


Lesenswert?

A. B. schrieb:
> Das vollständige Datenblatt ist ein unabdingbares MUSS bevor
> man sich irgendwie mit uCtrl-Software oder uCtrl-Hardware beschäftigt.

ja. genau deswegen hatte ich das 2019 heruntergeladen. Nur war auf den 
457 Seiten dieses wichtige Thema nicht zu finden.

> seit Anfang 2020 in einer neuen Version.

Danke für den Hinweis.

von Georg M. (g_m)


Lesenswert?

Es ist schon eigenartig, dass man zwischen 20MHz und 32kHz umschalten 
kann, nicht aber zwischen 20MHz und 16MHz.

von Moby (Gast)


Lesenswert?

Georg M. schrieb:
> Es ist schon eigenartig, dass man zwischen 20MHz und 32kHz
> umschalten kann

Sind eben auch physikalisch verschiedene Taktquellen.

>nicht aber zwischen 20MHz und 16MHz.

Immerhin lassen sich während der Laufzeit 11 verschiedene Vorteiler 
zuschalten und auch ein Tuning via OSC20MCALIBA/B vornehmen. Das sollte 
doch alle Ansprüche an eine Taktänderung zur Laufzeit erfüllen

Die Vorfestlegung auf 20/16MHz geht doch im wesentlichen auf die 
Festlegung von Baudraten im Design zurück und beides ist halt schon im 
voraus: festgelegt!

von m.n. (Gast)


Lesenswert?

Georg M. schrieb:
> Es ist schon eigenartig, dass man zwischen 20MHz und 32kHz umschalten
> kann, nicht aber zwischen 20MHz und 16MHz.

Das finde ich nicht. 16/20 MHz ist die Option für ein und denselben 
internen Oszillator. Die Umschaltung der Taktquelle per Programm ist 
eine andere Baustelle. Da kann man sogar auf einen externen Takt 
umschalten.

Wenn das Teil mit 20 MHz läuft, sähe ich in 16 MHz keinen Vorteil.
Der "Main Clock Prescaler" ist ja jederzeit umstellbar.

von Matthias W. (matt007)


Lesenswert?

m.n. schrieb:
> Der "Main Clock Prescaler" ist ja jederzeit umstellbar.

ja. Nur leider sind die Teiler nicht immer so genial. Wenn ich eine 
Frequenz von 12MHz nutzen will, so geht das nicht. Denn mit Teiler 2 
kommt ich von 20MHz auf 10 und nicht auf 12. Ich muss dann also einen 
Quarz verbauen.

von A. B. (Gast)


Lesenswert?

Matthias W. schrieb:
> Ich muss dann also einen Quarz verbauen.

Quarz geht nur für RTC
EXTCLK nur mit externem Oszillator ..

von m.n. (Gast)


Lesenswert?

Matthias W. schrieb:
> Wenn ich eine
> Frequenz von 12MHz nutzen will, so geht das nicht. Denn mit Teiler 2
> kommt ich von 20MHz auf 10 und nicht auf 12.

Nur mit 16 MHz und ganzzahligem Teiler kommst Du auch nicht auf 12 MHz.

Moby schrieb:
> Immerhin lassen sich während der Laufzeit 11 verschiedene Vorteiler
> zuschalten und auch ein Tuning via OSC20MCALIBA/B vornehmen. Das sollte
> doch alle Ansprüche an eine Taktänderung zur Laufzeit erfüllen

Das würde ich auf jeden Fall probieren. Laut Datenblatt läßt sich der 
int. Oszillator zwar recht grob aber doch deutlich und ausreichend 
linear "verstimmen". Fig. 5-67 im Datenblatt.

von Moby (Gast)


Lesenswert?

Matthias W. schrieb:
> Nur leider sind die Teiler nicht immer so genial.

Wünschen kann man sich vieles nur müssen eben in der Praxis leider immer 
irgendwelche Kompromisse gemacht werden.
Im Fall des Falles muss man einen anderen Controller nehmen.

> Wenn ich eine
> Frequenz von 12MHz nutzen will, so geht das nicht. Denn mit Teiler 2
> kommt ich von 20MHz auf 10 und nicht auf 12. Ich muss dann also einen
> Quarz verbauen.

Nur mal so aus Interesse: Was wäre an 12MHz so begehrenswert? Jenseits 
10MHz gibts bei diesem Controller halt nur noch 16 und 20 im Angebot.

von Moby (Gast)


Lesenswert?

Matthias W. schrieb:
> Ich muss dann also einen
> Quarz verbauen.

Wenn dann einen entsprechend extern generierten Takt. Externe Quarze 
werden hier nur 32kHz Typen unterstützt!
Aber alles kein Drama, hochfrequente Quarze sind für die meisten 
Anwendungen neuerer AVR Controller längst überflüssig.

von Matthias W. (matt007)


Lesenswert?

Moby schrieb:
> Was wäre an 12MHz so begehrenswert?

laut Datenblatt S.477 kann der Atmega4809 bei 3.6V 14MHz und bei 3V 
10MHz. Daher sind bei 3.3V wohl 12MHz zu erwarten. Nur kann man die eben 
nicht mit dem internen Oszillator und dem Teiler /2 darstellen. Es sei 
denn man versucht es mit Kalibrierwerten hinzubiegen was ich im ersten 
Ansatz nicht machen wollte.

von Matthias W. (matt007)


Lesenswert?

Moby schrieb:
> Externe Quarze werden hier nur 32kHz Typen unterstützt!

also ist kein 12MHz Quarz so wie beim LPC1343 da möglich? man kann dann 
natürlich einen MEMS-Oszillator nehmen.

von Matthias W. (matt007)


Lesenswert?

m.n. schrieb:
> Laut Datenblatt läßt sich der
> int. Oszillator zwar recht grob aber doch deutlich und ausreichend
> linear "verstimmen". Fig. 5-67 im Datenblatt.

Danke für den Hinweis.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Wunderer schrieb:
> Georg M. schrieb:
>> Das ist kein UPDI-Programmer.
>
> Doch, nur dass es früher nur PDI Interface genannt wurde.
> Mit dem genannten Interface (das ein Clone zum Original ist)
> kann man zwar nicht debuggen, aber programmieren.

Quatsch! PDI ist eine synchrone 2-Draht-Schnittstelle, Daten und Takt 
verwenden getrennte Leitungen. UPDI ist ein asynchrones 1-Draht-Format.

Mit einem FT230x und ein paar Gattern habe ich mir einen UPDI-Programmer 
gebaut, der sogar echtes HV-Programming beherrscht und mit 
Target-Spannungen von 1,8V bis 5V arbeitet.
Den Schaltplan findet man auf 
https://www.dr-bosch.com/bilder/elektronik/updi230x.htm
Die Beschreibung auf 
https://www.dr-bosch.com/elektronik_mikrocontroller.php
(ganz nach unten scrollen).

Als Software (Linux) habe ich diesen Code verwendet:
https://github.com/Polarisru/updiprog
der für die HV-Programmierung geringfügig ergänzt werden muss.

Grüßle
Volker

von Moby (Gast)


Lesenswert?

Matthias W. schrieb:
> Moby schrieb:
> Was wäre an 12MHz so begehrenswert?
>
> laut Datenblatt S.477 kann der Atmega4809 bei 3.6V 14MHz und bei 3V
> Daher sind bei 3.3V wohl 12MHz zu erwarten.

OK. Du willst also bei 3,3V das Maximum nutzen können. Ohne externen 
Takt sind wir hier bei 10MHz. Daran ist leider nichts zu ändern. Bei 
dieser Gelegenheit aber noch ein Tipp: Der neue (auch in schmalem DIP) 
lieferbare AVR128DAxx schafft seine bis 24 MHz bereits mit jeder 
Betriebsspannung, das dürfte wohl zukünftig Standard werden.

von Moby (Gast)


Lesenswert?

Moby schrieb:
> mit jeder
> Betriebsspannung

... ab immerhin 1,8V bis 5,5.

Beitrag #6310436 wurde von einem Moderator gelöscht.
von Matthias W. (matt007)


Lesenswert?

Moby schrieb:
> Der neue (auch in schmalem DIP)
> lieferbare AVR128DAxx schafft seine bis 24 MHz bereits mit jeder
> Betriebsspannung, das dürfte wohl zukünftig Standard werden.

Danke für den Hinweis. Hier ist das vorläufige Datenblatt: 
http://ww1.microchip.com/downloads/en/DeviceDoc/40002183A.pdf

das schaue ich mal an.

von Matthias W. (matt007)


Lesenswert?

Moby schrieb:
> ab immerhin 1,8V bis 5,5.

leider habe ich im vorläufigen Datenblatt keine Diagramme zum 
Strombedarf gesehen. Auf S.562 steht: 4.7mA bei 24MHz und 1.1mA bei 
4MHz. Leider ist da keine Spannung angegeben. Also wohl bei 1.8V?

von Moby (Gast)


Lesenswert?

Matthias W. schrieb:
> Moby schrieb:
> ab immerhin 1,8V bis 5,5.
>
> leider habe ich im vorläufigen Datenblatt keine Diagramme zum
> Strombedarf gesehen. Auf S.562 steht: 4.7mA bei 24MHz und 1.1mA bei
> 4MHz. Leider ist da keine Spannung angegeben. Also wohl bei 1.8V?

Gute Frage. Vorläufig steht wohl auch für unvollständig. Evt. könnte ich 
das mal ausmessen...

von Matthias W. (matt007)


Lesenswert?

Moby schrieb:
> Evt. könnte ich das mal ausmessen...

das wäre interessant !

Beitrag #6313414 wurde von einem Moderator gelöscht.
von S. Landolt (Gast)


Lesenswert?

AVR128DA28, I [mA]:
1
  f [MHz]  24   4.0
2
U [V]
3
5.0       4.75  1.15
4
3.0       4.60  1.05
5
2.0       4.25  0.90

von Matthias W. (matt007)


Lesenswert?

S. Landolt schrieb:
> AVR128DA28, I [mA]:

vielen Dank ! das sieht ja so aus als ob der Strom kaum 
spannungsabhängig ist. Interessant !

von Anselm (Gast)


Lesenswert?

gerade bei 4809 muss man immer nachgucken ob das vorhandene Datenblatt 
schon veraltet ist.
Auch heute war mal wieder eine PCN im Mailverteiler:
https://www.microchip.com/mymicrochip/NotificationDetails.aspx?pcn=SYST-19FKNH955

Anselm

von Matthias W. (matt007)


Lesenswert?

Anselm schrieb:
> gerade bei 4809 muss man immer nachgucken ob das vorhandene Datenblatt
> schon veraltet ist.

Danke Anselm !

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.