Falls es an der Hardware liegen sollte, ist es am einfachsten, mit dem Multimeter die Spannung am Eingang nachzumessen.
Gruss,
stochri
Hallo,
um die Mißverständnisse von oben aufzulösen, autoencode ist auf false.Zitat von stochri
Das folgende minimale Codestück zeigt das komische Verhalten (Werte <255) -- und wie gesagt, eben erst seit kurzem -- vorher kamen Werte über 800 und bei vollen Batterien über 900 raus:
Vielleicht habe ich neben dem Widerstand R21 noch irgendein anderes Bauteil in eine mißliche Lage gedrückt. Welche Bauteile (außer dem AtMega) haben denn überhaupt mit der Funktion Batterie() zu tun?Code:#include <asuro.h> int main(void) { Init(); // setzt "autoencode = FALSE;" SerPrint("\r\nBatterie="); PrintInt(Batterie()); SerPrint("\r\n"); while (1) ; return 0; }
Falls es an der Hardware liegen sollte, ist es am einfachsten, mit dem Multimeter die Spannung am Eingang nachzumessen.
Gruss,
stochri
Hallo,
habe gerade mal gemessen.Zitat von stochri
Wo die Batterien am Board festgelötet sind: 5.93V
Zwischen den beiden Pins des Schalters, die ON entsprechen: 5.50V
Anzeige des kleinen Programms: Batterie=26
Im eingeschalteten Zustand messe ich 0.72V an der Diode neben dem Einschalter.
Wo soll ich denn jetzt messen -- was meinst du mit Eingang?
Sind das bestimmte Pins am AtMega?
Eigentlich kann dieses Problem nur softwareseitig sein. wenn der asuro hardwareseitig zu gering messen würde, würde er nur blinken und VLVLVL senden.
probiere doch mal die ältere asuro lib von sourceforge.
Gefühlsmässig würde ich auch auf Software tippen, aber messen kann ja auch mal nicht schaden:
Die Batteriespannung wird mit dem PIN28 des Atmega8 gemessen, dort muss die Spannung entsprechend der Spannungsteilergleichung Upin28=Vplus*10k/(10K+12K) betragen, also geschätzt ca. 2,3 V. Die Referenzspannung an PIN20 sollte man vorsichtshalber auch gleich mitmessen.
Was die Softwareseite angeht, meine Vermutung: Irgendwas stellt Dir den ADC vom 10 auf den 8Bit Modus um, deshalb erhältst Du bei Batterie() nur noch 1/4 des Wertes.
Gruss,
stochri
Hallo, und Danke für die Tips!
Ich habe folgende Werte gemessen (4xAA-Akku mit zusammen 5,37V, Jumper gesteckt):Zitat von stochri
Pin20: 5,21V
Pin28: 2,35V
Hab jetzt auch mal mit der Lib v261 getestet, mit dem folgenden Code (da SerPrint() erst ab Lib v270 verfügbar ist):Zitat von damaltor
Und nun:Code:#include "asuro.h" int main(void) { Init(); // setzt "autoencode = FALSE;" SerWrite("\r\nBatterie=",11); PrintInt(Batterie()); SerWrite("\r\n",2); while (1) ; return 0; }
Es werden wieder Werte um 930 angzeigt
Aber:
Jetzt funktioniert es auch wieder mit der Lib v270 ...
Tja, dann würde ich auf Wackelkontakt tippen. Lass doch mal die Werte vom ASURO zum PC übertragen und drück ein wenig an den Bauteiilen rum, vielleicht stellt sich der Fehler noch mal ein ...
Lesezeichen