PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Spannungsanzeige



Naxos
30.12.2008, 10:41
Ich möchte mir über einen Interrupt am Lcd die Spannung des Akkus anzeigen lassen. Ich betätige dazu einen Schalter am Atmega16. Mein Problem ist jetzt, dass wenn ich die Variable Akku als Single definiere, dann zeigt es mir nichts mehr an. Wenn ich sie als Word definiere zeigt es mir die Zahlen hinter dem Komma nicht an. Die Formel für die Berechnung stimmt.
Hier der Bascom Code:


$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200
$framesize = 32

Config Adc = Single , Prescaler = 32
Config Portd.2 = Input
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4
Config Single = Scientific , Digits = 1
Config Int0 = Falling
Enable Interrupts
Enable Int0
On Int0 Spannungsausgabe_auf_tastendruck


Dim Batterypower As Integer
Dim Akku2 As Word
Dim Akku As Single


Portd.2 = 1
Cls
Locate 1 , 1
Lcd "Bereit"

Do
Batterypower = Getadc(0)
Print Batterypower
Wait 5
Loop


Spannungsausgabe_auf_tastendruck:
Akku2 = Getadc(0)
Akku2 = Akku2 * 5.9
Akku = Akku2 / 368.28
Locate 2 , 1
Lcd Akku
Wait 2
Cls
Return

Vielen Dank im Voraus

Naxos

magic33
30.12.2008, 12:14
warumm rechnest du aus der Wordvariable nicht einfach die kommastellen raus und zeigst sie dann an

akku mod 10
akku /10 zum beispiel
besser zum verständniss
7/3 =2 Ganzzahl
Komma setzen
rest=7 mod 3 ///ergibt 1 wenn 0 dann gelöst
rest*10 ergibt neuen teiler
10/3=3 erste kommastelle
rest= 10mod3 wieder 1
usw

Vitis
30.12.2008, 12:55
Akku2 = Getadc(0)
Akku = Akku2
Akku = Akku * 5.9
Akku = Akku / 368.28
Locate 2 , 1
Lcd Akku
'Wait 2

wait in ISR macht man nicht ... ist eher ungünstig
Cls

Naxos
30.12.2008, 18:07
Die Methode von Vitis funktioniert nur mit dem Getadc-wert 0 mit einem anderen wert zeigt es mir auf dem display gar nichts an. Hat sonst noch jemand eine Idee.

Danke im Voraus

Naxos

for_ro
30.12.2008, 18:29
Hallo Naxos,
ich habe mal dein Programm mit den Modifikationen von Vitis im Simulator laufen lassen. Dabei ist mir dann Bascom beim LCD-Befehl glatt abgeschmiert.
Daraufhin habe ich LCD Akku durch
LCD Fusing(Akku, "#.##")
ersetzt. Dann lief es fehlerfrei.

Gruß

Rolf

Naxos
30.12.2008, 21:25
Vielen Dank für eure hilfe. Ich habe jetzt die Mehtode von Vitis und die von for_ro genommen jetzt klappt es wunderbar.

Danke für eure Hilfe

Naxos

Naxos
31.12.2008, 08:25
Ich habe doch noch einmal eine Frage, wie kann ich nun diesen Wait Befehl umgehen, dass es mir aber trotzdem den Lcd löscht.

Danke im Voraus

Naxos