So, jetzt tun mir die Augen weh, aber ich glaube ich habs rausbekommenDie Updaterate ist jetzt 0,5Sekunden und es wirrd der Aktuelle Stromverbrauch angezeigt und der gesammte Verbrauchte Strom
Hier der Code :
Dabei gibt Bascom mir allerdings noch zwei Errors aus :Code:$regfile = "m8def.dat" 'Definieren des Chips $crystal = 8000000 'Frequenz Config Adc = Single , Prescaler = Auto , Reference = Off 'ADC konfigurieren mir Aref als Referenzspannung Start Adc Config Lcd = 16 * 1 'LCD konfigurieren Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Cls Config Timer1 = Timer ; Prescaler = 256 'Timer1 (16-bit) konfigurieren Start Timer1 'Mit dem Prescaler ergibt es 31250Hz Stop Timer1 Dim Strom2 As String * 5 'Strom 0 bis 1.099.511.628.000 Dim Strom As String * 4 'Strom2 0 bis 4.294.967.296 Dim Strom_wert As Word 'Strom_wert 0 bis 65.536 Dim Verbraucht As Word 'Verbraucht 0 bis 65.536 Do Gosub Hauptprogramm ' Verweis auf Subroutine Loop End Hauptprogramm: Timer1 = 0 Start Timer1 'Timer1 Starten Strom_wert = Getadc(5) 'ADC an Portc.5 auslesen (Werte 0 bis 1024) Strom = Strom + Strom_wert 'Gemessener Wert wird in jedem Durchgang addiert Strom2 = Strom * 100000 'Umrechnung des Wertes in den realen Amperewert (in mAh) Strom2 = Strom2 / 4096 'Umrechnung des Wertes in den realen Amperewert (in mAh) Verbraucht = Strom2 / 7200 'Umrechnung wie viel mA in einer halben Sekunde verbraucht werden If Verbraucht < 10 Then Locate 1 , 4 End If If Verbraucht < 100 Then Locate 1 , 3 End If If Verbraucht < 1000 Then Locate 1 , 2 Else Locate 1 , 1 End If Lcd Verbraucht ; " mAh" 'die bisher verbrauchten mAh werden angezeigt Strom2 = Strom_wert * 100 'Aktueller Stromverbrauch (in A) ausrechnen Strom2 = Strom2 / 4096 If Strom2 < 10 Then Locate 1 , 14 Else Locate 1 , 13 End If Lcd Strom2 'Am Ende des Displays wird der aktuelle Stromverbrauch angezeigt Locate 1 , 16 Lcd "A" Gosub Warten 'Jetzt ist der Auswertung fertig und der AVR soll warten bis ne halbe Sekunde rum ist Return Warten: If Timer1 > 15624 Then 'Wir errinnern uns - am anfang wurde der Timer gestartet, bei 32,25kHz ist er nach genau einer halben Sekunde bei 15625 Stop Timer1 Gosub Hauptprogramm 'Dann wird das Hautprogramm wieder gestartet und die Werte werden Aktualisiert Else Gosub Warten 'Wenn der Wert noch nicht erreicht ist Wird die Subroutine so lange wiederholt, bis der Wert erricht wird End If Return
Error : 86 Line : 13
Error : 242 Line : 38
Ihr könnts ja mal kopieren und dann könnt ihr genaueres zu den Fehler lesen..
Was haltet ihr von dem Code?? Meiner Meinung nach müsste das dunktionieren, aber ich hol mir lieber noch einmal eine Expertenmeinung![]()







Zitieren

Lesezeichen