Ich habe mich schon ein wenig informiert und möchte meine laufende Schaltung Atmega328p mit 3V/5V i2c Signalkonverter und 16Mhz Quarz komplett auf 3V umstellen. Dafür habe ich mir schon passend 12MHz Quarze besorgt. Ich frage mich nun ob ich da jetzt Fuses setzen muss oder die umstellung von F_CPU im Quelltext ausreicht. Gibts sonst noch was ?
Natürlich muss der Takt über die Fuses eingestellt werden. F_CPU ist nur ein Makro für dich zum berechnen von Takten/Teilern/Ticks. Außerdem solltest du die Brownout-Detection runter setzen...
Philipp K. schrieb: > die umstellung von > F_CPU im Quelltext Das ist nur für irgendwelche Berechnungen die Du im Code machst, interessiert aber den Controller herzlich wenig bis gar nicht. Philipp K. schrieb: > ob ich da jetzt Fuses setzen muss Ja, musst du. Unter welchem OS arbeitest du? Mit welcher IDE?
4toTakoe schrieb: > Natürlich muss der Takt über die Fuses eingestellt werden. Welche Fuse Bits bewirken das nach deiner Meinung? Ob 12MHz oder 16MHz macht für die Fuses keinen Unterschied.
>Das ist nur für irgendwelche Berechnungen die Du im Code machst, >interessiert aber den Controller herzlich wenig bis gar nicht. Nicht ganz, delay geht mit falschen Werten zwar auch, aber falsch. Da man es eigentlich nicht benutzen sollte, hast Du wiederum Recht.
Amateur schrieb: >>Das ist nur für irgendwelche Berechnungen die Du im Code machst, >>interessiert aber den Controller herzlich wenig bis gar nicht. > > Nicht ganz, delay geht mit falschen Werten zwar auch, aber falsch. Da > man es eigentlich nicht benutzen sollte, hast Du wiederum Recht. Nö, du hast es auch nicht gerafft. Die Delays gehen nämlich genau *deshalb* falsch, weil sich der µC nicht die Bohne für die Deklaration irgendeines Symbols in irgendeiner Programmiersprache schert. Der µC arbeitet schlicht den (in diesem Fall bezüglich seines Zweckes fehlerhaften) Code ab, den ihm der Compiler vorsetzt. Wüßte der µC irgendwas von F_CPU, würde er seine Takt dem Code anpassen können und die Delays würden stimmen.
c-hater schrieb: > Die Delays gehen nämlich genau deshalb falsch, weil sich der µC > nicht die Bohne für die Deklaration irgendeines Symbols in irgendeiner > Programmiersprache schert. Von welcher Seite man es auch betrachtet, entweder passt die Deklaration nicht zum Takt des Controllers -oder- der Takt passt nicht zur Deklaration, das Ergebnis ist doch das Gleiche. Die Deklaration muß mit dem Takt übereinstimmen, fertig.
Hallo, hast Du mal im Datenblatt nachgesehen, ob dein Vorhaben /Atmega328p mit 3V/5V i2c Signalkonverter und 16Mhz Quarz komplett auf 3V umstellen./ funktionieren wird ?
Uwe S. schrieb: > funktionieren wird ? Laut Datenblatt sind 12MHz bei 3V die Grenze. Warum also nicht?
okay danke schonmal.. also habe halt in einer tabelle gesehen das 3,3V bis zu 13,3MHz laufen sollte, über dieser Frequenz müsste Vcc erhöht werden und 12Mhz im grünen bereich liegen.. solang der i2c Bus dem gleich läuft sehe ich da kein problem. Habe mitlerweile eine Anleitung für 12MHz samt neuem Serial Upload Bootloader gefunden der genau in meine Vorstellung passt. Trotzdem wäre es Sinnvoll diese Teilung zu verstehen. # Low power xtal (12MHz) 16KCK/14CK+65ms atmega328_12: LFUSE = FF das ist jetzt Logo: # 2.7V brownout // atmega328_12: EFUSE = 05
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.