Forum: Mikrocontroller und Digitale Elektronik Atmega mit 3V ?


von Philipp K. (philipp_k59)


Lesenswert?

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 ?

von 4toTakoe (Gast)


Lesenswert?

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...

von Kaj (Gast)


Lesenswert?

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?

von Georg G. (df2au)


Lesenswert?

Brownout Schwelle anpassen.

von Georg G. (df2au)


Lesenswert?

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.

von Amateur (Gast)


Lesenswert?

>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.

von c-hater (Gast)


Lesenswert?

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.

von npn (Gast)


Lesenswert?

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.

von Uwe (de0508)


Lesenswert?

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 ?

von Georg G. (df2au)


Lesenswert?

Uwe S. schrieb:
> funktionieren wird ?

Laut Datenblatt sind 12MHz bei 3V die Grenze. Warum also nicht?

von Philipp K. (philipp_k59)


Lesenswert?

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
Noch kein Account? Hier anmelden.