www.mikrocontroller.net

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


Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Condi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du must einfach den Haken bei ClockDiv rausnehmen.

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sehe bei mir im fenster nur die binärzahl stehen.

mfg

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Condi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Condi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, 62 Hex ist natürlich 01100010

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man muß aber nicht die Fuses umprogrammieren.

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


Peter

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup danke ,hat funktioniert mit eurer beschreibung.

mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.