Allgemeines
Vorbeugen
Was ist der Bandgap?
Brown-out-Detect
Der Test
Probleme bei
falschen
Bandgap
Einige PIC-Typen haben in der Configuration einige Bits, die als Bandgap-Einstellung bezeichnet werden. Dort lässt sich ein Wert zwischen 0 und 3 einstellen. Der Bangap-Wert wird für denen PIC individuell vom Hersteller eingestellt, und darf nicht verändert werden.
Programmiergeräte kümmern
sich
in der Regel darum, dass vor dem Löschen oder Neuprogrammieren
eines
PIC der Bandgap-Wert ausgelesen wird, und brennen ihn dann in den PIC
zurück.
Es kann aber auch mal passieren, das dieser Wert verloren geht. Was
dann?
Prinzipiell ist es eine gute Idee, vor
den Neuprogrammieren eines solchen PIC den spezifischen Bandgap-Wert
auszulesen
und aufzuschreiben. Gründliche Zeitgenossen kratzen den Wert dann
in das Plastikgehäuse des Chips (was aber spätestens bei SMD
schwierig ist). Wer sich den Wer notiert, hat aber ein "Backup", auf
das
er im Falle eines Datenverlustes zurückgreifen kann.
Klappt das Brennen problemlos, kann man
den Zettel ja wieder wegwerfen.
Von Microchip gibt es keinerlei
Informationen
darüber, aber unter Bandgap versteht man eine
Referenzspannungsquelle.
Um was für eine
Referenzspannungsquelle
mag es sich da handeln?
Die betroffenen PICs haben nur an drei Stellen prinzipiell einen eventuellen Bedarf für eine Bandgap-Referenzspannungsquelle:
Es bleibt nur die
Brown-out-Detect-Funktion
übrig.
Falls die Betriebsspannung des PIC
unter
einen kritischen Wert fällt, ist die Funktion des PIC nicht mehr
gesichert,
und der PIC kann "abstürzen". Als Gegenmaßnahmen gibt es die
Brown-out-Detection, die in einem solchen Fall ein Reset für den
PIC
auslöst.
Genaugenommen wird beim Unterschreiten
einer Spannung von 2V intern im PIC der Reset-Taster
heruntergedrückt.
Damit ist der PIC gestoppt. Gleichzeitig wird das Bit 0 im
PCON-Register
auf 0 gesetzt.
Überschreitet die Betriebsspannung
wieder die 2V-Grenze, dann wird der interne Resettaster mit 72ms
Verzögerung
wieder losgelassen, und der PIC fängt an sein Programm
von
Anfang an abzuarbeiten. Die Software kann das Bit 0 im PCON-Register
prüfen,
und im Falle eines Brown-out-Resets anders arbeiten als im Falle eines
Power-on-Resets.
Die Brown-out-Detection-Funktion muss
in der Config aktiviert sein und
heißt
dort BOD bzw. BODEN.
(In früheren
PIC-Familien war BOD auf 4V festgelegt, in modernen PIC18F-Typen kann
man
die BOD-Schwelle in der Config flexibel einstellen.)
Wenn man den PIC mit einer niedrigen
Betriebsspannung
(nahe 2V) betreibt, dann kann BOD sehr hinderlich sein, da schon keine
Spannungsschwankungen ein Reset auslösen würden. Es stellt
sich
damit auch die Frage nach der Genauigkeit der BOD-Schaltschwelle. Falls
ein einem PIC durch Exemplarstreuung die BOD-Schwelle bei 2,2V liegen
sollte,
dann kann der PIC mit 2,0V Betriebsspannung nicht mehr funktionieren.
Liegt die Schwelle aber unter 1,5V, so
kann es schon zu Datenverlust im Speicher gekommen sein, und der PIC
könnte
falsch arbeiten, was oft schlimmer ist als ein PIC der kontrolliert
stoppt.
Die BOD-Spannung sollte also
möglichst
dicht an 2,0V liegen. Damit besteht ein Kalibrierungsbedarf. Die
Bandgap-Referenzschwelle
des PIC stellt die genaue Höhe der BOD-Schwelle ein.
Dafür spricht auch, das bei den PICs
mit Bandgap-Einstellung der Hersteller eine BOD-Spannung von 2.0V
angibt.
Bei Typen ohne Bandgap wird dagegen immer ein Spannungstoleranzbereich
(z.B. 3,65 .. 4,35V beim 16F876A) angegeben. Wahrscheinlich sind diese
Toleranzen
nach der Absenkung der BOD-Sollspannung von 4V auf 2V schlichtweg zu
groß.
Ich habe einen einzelnen PIC12F629 auf
die Wirkung verschiedener Bandgap-Einstellungen hin getestet. Das
Ergebnis
steht in der nachfolgenden Tabelle. Andere PICs werden natürlich
ganz
andere Spannungswerte aufweisen. Ohne Exemplarstreuung wäre die
Bandgap-Einstellung
ja gar nicht nötig.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mit dem Bandgap-Wert kann die BOD-Schwelle um 50mV ..100mV pro Stufe verstellt werden. Das ist nicht gerade viel, kann aber beim Betrieb mit kleiner Betriebsspannung wichtig werden.
Berichte, nach denen ein PIC mit
Bandgap=3
nicht funktionierte, aber nach der Änderung auf Bandgap=1
wunderbar
lief, lassen sich mit den Daten nicht untermauern. So etwas kann wohl
nur
passieren, wenn der PIC ohnehin mit sehr kleiner Betriebsspannung
(deutlich
unter 5V) betrieben wird, und man ein Exemplar mit hohen
Bandgapspannungen
erwischt hat.
Der Bandgap liegt im Bereich von 0 bis 3. Dabei entspricht 0 der niedrigsten BOD-Spannung und 3 der höchsten. Die meisten PICs haben ab Werk eine Einstellung von 2 oder 1.
Ist der Bandgap-Wert zu niedrig eingestellt, kann es passieren, das BOD nicht korrekt funktioniert. Beim Unterschreiten des sicheren Arbeitsbereichs der Betriebsspannung arbeitet der PIC unkontrolliert weiter oder stürzt ab.
Ist der Bandgap-Wert zu hoch
eingestellt,
kann BOD schon weit oberhalb von 2V aktiv werden. Wird dann mit einer
kleinen
Betriebsspannung (kleiner als die BOD-Schwelle) gearbeitet, bleibt der
PIC im Dauerreset, und beginnt einfach nicht zu arbeiten
.
23.02.2006
letzte Änderung: 23.02.2006