Auszug aus dem Datenblatt eines ATMEGA 64:
• Operating Voltages
– 2.7 - 5.5V for ATmega64L
– 4.5 - 5.5V for ATmega64
• Speed Grades
– 0 - 8 MHz for ATmega64L
– 0 - 16 MHz for ATmega64
soweit so gut, aber wenn ich den internen BOD benutzen will, kann ich
ihm entweder auf 2,7 oder auf 4 Volt setzen. Das heisst, der Bereich von
4 bis 4,5 Volt ist nicht definiert. Da ich oft mit 16MHz arbeite
(DMX-Datenverarbeitung), erscheint mir das ganze suspekt.
Hat einer von euch eine Lösung ohne externen Spannungsmonitor?
MW
Für 16MHz solltest Du schon min. 4,5V verwenden, sodaß BOD mit 4 V
ausreicht. Oder Du stellst BOD auf 2,7 V und nimmst eine lange
Einschwingzeit für den Quarz, die deutlich länger ist als der Anstieg
der Versorgungsspannung.
Eine weitere Möglichkeit wäre der Watchdogtimer, der schon beim
Einschalten aktiv ist (fuses).
Die Brown-Out-Funktion ist nur bei den 'L'-Typen von Bedeutung, da der
µC ohne 'L' <4.5V nicht mehr sicher läuft, falls überhaupt. Die Fuses
können trotzdem gesetzt und gelöscht werden, die Funktion ist auch in
Betrieb, nur sollte man niemals in den Bereich von 4V kommen, da das
Programm sonst Mist machen könnte (internes SRAM). Um sämtlich Aus- und
Eingänge <4V hochohmig zu schalten und den Prozessortakt zu stoppen ist
die Funktion jedoch sinnvoll um weitere Schäden zu vermeiden, falls bis
dahin noch nichts passiert ist.
Probiere doch empirisch aus, wie weit herunter die Controller sicher
laufen. Bei meinen 5V-Controllern nutze ich immer den 4V Brownout und
hatte auch bei Batterie-Geräten noch nie Probleme. Solange Du nicht für
die Industrie oder andere sicherheitsrelevante Applikationen baust...
Man kann auch die nicht L typen bei weniger als 4,5V betreiben ... es
ist nur nicht garantiert, dass sie dann noch laufen. Die L Typen sind
einfach nur anders getestet, prinzipiell aber die gleichen Bauteile.
Mein mega 8 hier läuft bis 2,3V problemlos (hab ich einfach mal aus
spass getestet).
@ TravelRec.,
doch ich baue industrielle Steuerungen. Ich habe in der Richtung auch
noch keine Aüsfälle gehabt (und wenn, hab ich es nicht bemerkt, da ein
solches Phänomen nur in der Werkstatt nachvollziehbar wäre, evtl). beim
Studium der Datenblätter bin ich darauf gestoßen.
Atmel hätte den internen Spannungsmonitor auch auf 4,5 Volt trimmen
können.
Und so Aussagen, wie ...hat bei mir auch mit den und den Parametern
funktioniert... gelten einfach nicht, da ja auch ein weiter
Temperaturbereich abgedeckt werden muss. Was in der guten (Bastel)stube
bei 25°C funktioniert, mus nicht zwangsläufig (Langzeit)stabil bei +85°C
funktionieren.
Aber da keiner von euch jemals Probleme mit dem BOD hatte, werfe ich die
Geschichte in die gleiche Tonne, wo die ganzen TBDs gelandet sind.
Dank an alle.
MW
@guru:
Der ATMega162 ist ja auch von 2,7-5,5 V und bis 16 MHz spezifiziert!
Ich kann Michaels Problem gut nachvollziehen. Es geht ihm ja auch nicht
primär um eine Ersatzlösung (da gibts natürlich ne ganze Reihe, von
denen die mit Komparator sicher die einfachste wäre) sondern darum, dass
die BOD bei bestimmten µCs ziemlich "idiotisch" implementiert ist. Und
das ist eine Sache, die ich selber auch nicht nachvollziehen kann. Eine
BOD soll in der Lage sein, einen Zustand, der lt. Spezifikationen gerade
eben noch nicht kritisch ist, zu erkennen und entsprechende Aktionen
einzuleiten. Im genannten Fall jedoch tut sie das nicht, da der Zustand,
bei dem sie anspricht, bereits außerhalb der Spezifikationen liegt. Und
nur das zählt! In den meisten Fällen kann man zwar sicher den genannten
µC auch mit 4 V @ 16 MHz noch stabil betreiben, aber im Datenblatt steht
als garantierter Funktionsbereich eben 4,5-5,5 V.
Habt ihr schon mal nachgesehen, wie gross der Toleranzbereich des
internen Referenzspannung ist? Irgenwoher müsste der Sollwert "4,5V" ja
kommen. Rechnet den ARef-Bereich mal auf ~4,5V hoch und es wird rasch
klar, dass euer Ziel schlichtweg nicht erreichbar ist.
Wenn ein AVR bei 4,5V zuverlässig funktionieren soll, dann muss der
Brownout zuverlässig darunter liegen oder er ist sinnlos. Folglich liegt
er im Regelfall ziemlich deutlich darunter und es bleibt zwangsläufig
eine Lücke.
...ich setze auch AVRs in industriellen Anwendungen ein. Um solchen
Problemen aus dem Weg zu gehen, verwende ich IMMER einen externen
Reset-Baustein (LM809 oder so'n Pfennigteil - gibt's in mehreren
Spannungsabstufungen). Damit sind solche Probleme vergessen.
Ebenso ist selbst der billigste (und damit ungenaeste) LM4040 noch um
Klassen genauer als die interne Referenz der AVRs. Wenn man messen und
nicht nur schätzen will, ist es eine gute Designmassnahme, den im Layout
mit vorzusehen.
Selbst bei meinem kleinen Proto-Board (µBrain88) habe ich die mit drauf.