Forum: Mikrocontroller und Digitale Elektronik atmega644 auf internen takt von 8mhz einstellen


von roboterheld (Gast)


Lesenswert?

hallo, ich komme mit dem datenblatt vom 644 nicht klar.
ich möchte den atmega644 auf internen takt stellen von 8mhz.

wer weiss wie das geht?

mfg

von jack (Gast)


Lesenswert?

>hallo, ich komme mit dem datenblatt vom 644 nicht klar.

Was soll das heißen? Kannst Du es nicht lesen, oder was?

>ich möchte den atmega644 auf internen takt stellen von 8mhz.

Auf Seite 28 im DB ist unter "clock sources" eindeutig beschrieben,
welche Fuses wie gesetzt werden müssen.

Und nochwas, nicht m(milli)Hertz sondern M(Mega)Hertz.

von senex24 (Gast)


Lesenswert?

Datenblatt 02/07:

Seite 29: 7.2.1

Seite 285: table 25-5

Wenn der 644 im Auslieferungszustand ist, muss CKDIV8 im low fuse byte 
umgeschaltet werden.

von Kai G. (runtimeterror)


Lesenswert?

@jack
bleib mal locker!

Habe heute meinen netten Tag ;)

Seite 28:
Default Clock Source: The device is shipped with internal RC oscillator 
at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz 
system clock

In Deutschisch:
Der Controller wird mit einem internen 8 MHz RC-Oszillator ausgeliefert, 
welcher durch die gesetzte CKDIV8-Fuse bei effektiv 1 MHz läuft.

Eine Suche nach "CKDIV8" im Dokument liefert Seite 33: "Calibrated 
Internal RC Oscillator" mit weiteren Informationen zum internen 
Oszillator.
CKSEL3..0 muss z.B. auf 0010 gesetzt werden (was es wahrscheinlich ab 
Werk schon ist)

Hier findet sich auch folgende Info:
"If 8 MHz frequency exceeds the specification of the device (depends on 
VCC), the CKDIV8 Fuse can be programmed in order to divide the internal 
frequency by 8."

In Deutschisch:
Falls die 8 MHz zu schnell für den Controller sein sollte (z.B. bei zu 
niedriger Versorgungsspannung), kann das CKDIV8-Fuse gesetzt 
(programmed) werden um die Rate auf 1 MHz zu reduzieren.

Ich interpretiere das so, dass einfach nur die CKDIV8 Fuse (unprogrammed 
= 1) werden muss, und schon hast du die Werkskalibrierten 8 MHz (bei Vcc 
= 5V). Ich kenne den 644 nicht - kann sein, dass ich mich irre... aber 
auch dann steht's im Datenblatt.

von roboterheld (Gast)


Lesenswert?

...Wenn der 644 im Auslieferungszustand ist, muss CKDIV8 im low fuse 
byte
umgeschaltet werden.....


wie muss denn nun CKSEL3..0 gesetzt werden, damit die 8mhz intern 
eingestellt sind?

danke.

mfg

von Condi (Gast)


Lesenswert?

Du must einfach den Haken bei ClockDiv rausnehmen.

von roboterheld (Gast)


Lesenswert?

ich sehe bei mir im fenster nur die binärzahl stehen.

mfg

von senex24 (Gast)


Lesenswert?

Seite 34: 7.6, table 7-8: CKSEL3..0: 0010

Dies ist der Auslieferungszustand, d.h. 8 MHz. Allerdings wird dieser 
Takt noch durch 8 geteilt, was Sie durch umschalten von CKDIV8 ändern.

von Condi (Gast)


Lesenswert?

Tja, was soll man da machen. Das ist nunmal bei jedem Programmer ein 
wenig anders, leider hast du ja noch immer nicht verraten welchen du 
hast.

In der Tabelle im Datenblatt steht ja was man eintragen muss drin und 
Kai hat oben auch geschrieben wie CSEL3..0 sein müssen. CKDIV8 ist aber 
nicht in den CSEL3...0 drin, sondern ein extra bit.

Fuse Low Byte      Bit No       Description         Default Value
CKDIV8(4)             7         Divide clock by 8      0 (programmed)
CKOUT(3)              6         Clock output           1 (unprogrammed)
SUT1                  5         Select start-up time   1 (unprogrammed)
SUT0                  4         Select start-up time   0 (programmed)
CKSEL3                3         Select Clock source    0 (programmed)
CKSEL2                2         Select Clock source    0 (programmed)
CKSEL1                1         Select Clock source    1 (unprogrammed)
CKSEL0                0         Select Clock source    0 (programmed)


so nun ließt du die Fuse bits ein:

da sollte 62 stehen: also 0110010

nun CKDIV8 rausnehmen: 11100010  = E2


Kannst du aber auch gern selber nachrechnen oder im AVR Studio 
anschauen, geht auch ohne Programmer.

oder hier
http://palmavr.sourceforge.net/cgi-bin/fc.cgi

allerdings sind da die Fusebits nicht so wie im Datenblatt, die muss man 
erst selber einstellen.

von Condi (Gast)


Lesenswert?

Ups, 62 Hex ist natürlich 01100010

von Peter D. (peda)


Lesenswert?

Man muß aber nicht die Fuses umprogrammieren.

Man kann auch ganz profan das CLKPR-Register in Software setzen.


Peter

von roboterheld (Gast)


Lesenswert?

jup danke ,hat funktioniert mit eurer beschreibung.

mfg

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.