Hallo,
habe mich jetzt heute nachmittag mit der Bascomumsetzung auseinandergesetzt, aber noch kein zufriedenstellendes Ergebnis erhalten.
Wenn ich aufsummiere dann rennt der AVR ja sehr schnell durch die Schleife mit seinen 16Mhz und ich habe wieder nur eine Momentaufnahme. Mit waitms zu arbeiten ist ja nicht sonderlich elegant, weil der ganze Controller währenddessen nichts macht.
Als ich noch ein paar Single oder Double Variablen zusätzlich deklariert habe kam auch schon die Fehlermeldung, dass ich an die Grenzen der Bascom Testversion hinsichtlich Codeumfang gestoßen bin. Kann das sein mit so einem kleinen Progrämmchen?
Ich würde nämlich noch gerne zusätzlich einen 1wire Temperaturfühler (Ds1820) implementieren. Das ganze soll später auf einem Mega8 laufen. Nur zum programmieren benutze ich der Schnittstelle wegen das RNControl mit Mega32.
Mein vermutlich höchst ineffizienter Code lautet bisher wie folgt:
Explizit geht es um die Berechnungsroutine. Das Volint würde ich gerne auf einem LCD ausgeben und würde gerne verhindern, dass die Anzeige zu sehr schwankt. Aber ich bekomme wie schon gesagt keinen kompakten Code für dieses Problem auf die Reihe.Code:$regfile = "m32def.dat" $crystal = 16000000 'Quarzfrequenz $baud = 9600 $hwstack = 64 $swstack = 64 Dim Aw As Integer 'Analogwert Dim Men As Integer 'Menüvariable Dim Volumen As Single Dim Volint As Integer 'Volumen als Integer Dim Hoehe As Single Dim Prozent As Integer ' Dim Balken As Single 'Balkenanzeige LCD Dim U As Integer 'Konvertierung Single Integer Dim I As Integer Dim X As Integer 'Zählvariable For Schleife 'Variable initialisieren: Men = 1 'LCD: Config Lcdpin = Pin , Rs = Portb.7 , E = Portb.6 , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 Config Lcd = 16 * 2 Initlcd Cursor Off Cls 'ADC: Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung Config Pina.7 = Input 'Für Tastenabfrage Porta.7 = 1 'Pullup Widerstand ein Start Adc Cls Lcd "****Zisterne****" Wait 2 Cls Portd.2 = 0 Portd.3 = 0 Config Pind.2 = Output Config Pind.3 = Input Config Debounce = 10 Do Gosub Berechnung Debounce Pind.3 , 1 , Menuvar , Sub Gosub Menu Loop End 'Volumenberechnung aus Analogwert Berechnung: Aw = Getadc(7) Hoehe = Aw / 240 Hoehe = Hoehe * 23 Volumen = 176.714 * Hoehe Volint = Volumen Return 'Menü Menuvar: If Pind.3 = 1 Then Waitms 500 If Pind.3 = 1 Then Locate 2 , 1 Lcd " " Incr Men End If End If Return 'Menüauswahl Menu: Select Case Men Case 1 : Lcd " " Locate 1 , 1 lcd "Fuellstand:" Locate 2 , 6 Lcd Volint ; " l" Case 2 : Lcd " " Locate 1 , 1 lcd "Fuellstand:" Balken = 0.004 * Volumen Balken = Round(balken) U = Balken For I = 0 To U Step 1 Locate 2 , I Lcd Chr(0) Next U Case 3 : Lcd " " Locate 1 , 1 lcd "Fuellstand:" Locate 2 , 6 Prozent = Volumen / 40 Lcd Prozent ; " %" Case 4 : Men = 0 Cls Locate 1 , 1 Lcd "Temperatur" End Select Return
Vielleicht kann mir jemand den entscheidenden Tipp geben.
Besten Dank
Florian.







Zitieren

Lesezeichen