Forum: Compiler & IDEs Interner Takt


von heiri (Gast)


Lesenswert?

ich beschäftige mich erst seit kurzem mit den AVR.
im VCC-Tut konnte ich leider nichts darüber finden, wie man den internen 
Clock einstellt. Im Datenblatt des ATMega48 hats zwar schöne Tabellen, 
doch es ist kein Register angegeben.
sind die in einem speziellen Register? und wie stelle ich die um?
Konkret will ich den Takt auf 1MHz stellen, also auf den internen 8MHz 
ozilator und dann durch 8 dividieren. (dividiern kann ich, doch allein 
wird das wohl wenig bringen)

eine weitere Frage: im Datenblatt ist angegeben, dass der MC mit 2.7-5.5 
V läuft. Kann ich ihn direkt an 3 oder 4 1.2V Akkus hängen oder ist dies 
nicht empfehlenswert?

Gruss heiri

von Matthias (Gast)


Lesenswert?

Der Atmel ist ein RISC. Der teilt den Osillatortakt NICHT!
Wenn der Takt 1MHz sein soll, so brauchst du einen Quartz/RC-Osz. mit 
1MHz.

von Stefan (Gast)


Lesenswert?

Der interne R/C Oszillator des Atmega48 läuft mit 8 MHz. Du kannst 
diesen Takt runterteilen, so dass das System z.B. mit 1 MHz läuft. Das 
Runterteilen stellst du nicht mit einem Spezialregister ein (wie z.B. 
auf einem Renesas R8C möglich) sondern über eine sog. Fuse, die wie das 
Flash mit einem Programmer programmiert wird. Die Fuse heisst CHDIV8 und 
ist im Datenblatt im Kapitel 7. System Clock and Clock Options 
beschrieben. Genauer ist bei 7.2.1 Default Clock Source beschrieben, 
dass diese Fuse bereits voreingestellt ist ,d.h. wenn der Atmega48 aus 
der Fabrik kommt, ist er auf 1 MHz voreingestellt.

Du kannst Akkus wie beabsichtigt verwenden. Es gibt einige Nachrichten 
hier, dass Leute die Methode erfolgreich eingesetzt haben. Du musst aber 
die Entladekurve der Akkus im Auge behalten, denn ohne 
Spannungsüberwachung und geregeltes Runterfahren des µC ggf. mit 
unvorhersagbarem Verhalten gegen Ende der Ladekurve rechnen.


von Volker (Gast)


Lesenswert?

Also ich verstehe die Problematik nicht.
Hab mir gerade mal das Datenblatt vom ATmega48 angesehen und natürlich 
kann man den Takt runterteilen.

Eigentlich nicht zu übersehen:
Auf Seite 37 Absatz 7.12.2 CLKPR Clock Prescale Register und folgende 
Seiten.

Der Teilerfaktor wird über die 4 Bits CLKPS0...CLKPS3 eingestellt, siehe 
Tabelle auf Seite 38.



Die ClkDiv 8 Fuse ist lediglich eine Voreinstellung einzelner Bits 
dieses Registers, würde in deinem Fall aber ausreichen.

Gruß Volker

von Sigint 112 (sigint)


Lesenswert?

@Stefan:
  Die neuen AVRs haben eine BrownOut-Detection... also sollte es 
unmöglich sein den FLASH durch Unterspannung zu verändern. Praktisch 
kann das eventuell trotzdem Probleme geben.... ist aber sehr 
unwahrscheinlich.
Ich betreibe meine AVRs immer mit Batterien und hatte noch nie Probleme.
PICs konnte ich sogar mit einem Schrittmotor, einer Diode und einem 
großen Elko zuverlässig betreiben :)

Gruß,
  SIGINT

von Rahul D. (rahul)


Lesenswert?

>Der Atmel ist ein RISC. Der teilt den Osillatortakt NICHT!

Was hat das eine mit dem anderen zu tun?

>Wenn der Takt 1MHz sein soll, so brauchst du einen Quartz/RC-Osz. mit
>1MHz.

Und wenn er den internen Taktgenerator benutzen will, muß er die 
entsprechenden Fuses setzen, oder das von Volker beschrieben Register.

>Der Teilerfaktor wird über die 4 Bits CLKPS0...CLKPS3 eingestellt, siehe
>Tabelle auf Seite 38.

von heiri (Gast)


Lesenswert?

vielen Dank für eure Antworten!
nun brauch ich ja offenbar gar nichts zu tun um den gewünschten Takt 
einzustellen da er standartmässig eingestellt ist. - Aber ich würde doch 
noch gern wissen womit ich die fuses verstellen kann? (Ich benutze das 
AVR-Studio)

von Stefan (Gast)


Lesenswert?

Wenn dein ISP Adapter im AVR Studio erkannt wird, kannst du damit 
Programme in das Flash des AVR brennen UND Fuses ändern. Schau aber 
vorher doppelt und dreifach im Datenblatt nach, bevor du was 
umstellst!!! Es gibt da ein paar Fallstricke siehe auch 
http://www.mikrocontroller.net/articles/AVR_Fuses

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.