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
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.
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.
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
@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
>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.
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.