Gast
#2465252
Guten Abend zusammen,
ich arbeite zur Zeit an einer Fernbedienung mit einem 2,4GHz
Transceiver.
Funktioniert soweit alles wunderbar. Als "Sahnebhäubchen möchte ich nun
eine "Batterie leer" Erkennung realisieren. Also was tun? Brown out
detection in den Fuse-bits auf 2,7V einstellen und das BORF bit im MCUSR
Register auswerten. Laut Datenblatt sollte dies ja bei einer BOD auf "1"
gesetzt werden und nach einem Power-on Reset wieder auf "0" gesetzt
werden.
Das Bit frage ich dann bei jedem Programmstart ab.
Programm läuft > BOD > irgendwann erholt sich die Batterie > MCU startet
das Programm, wertet das BORF-Bit aus und bleibt in einer while hängen >
Led leuchtet und signalisiert "battery low".
Mein Problem ist das das Bit immer als "1" gelesen wird, obwohl kein
Broun Out eingetreten ist. Hab die Spannungsversorgung mehrmals
getrennt, doch das Bit wird immer als "1" gelesen.
Jemand ne Idee warum das so ist? bzw. was ich falsch mache?
Hier mal ein ausschnitt aus dem Code:
int main(void)
{
while (bit_is_set (MCUSR, BORF))
{
DDRB |= (1<<led_red);
PORTB |= (1<<led_red);
}
...
...
...
}