Bascom avr Single umwandeln

Gast #361891
Lesenswert?

Hallo

Ich habe eine Single Variable (Luftfeuchte )
Anzeige auf Lcd

Will die jetzt seriell ausgeben  da reicht mir die Feuchtigkeit ohne
Kommazahlen nun versuche ich jetzt das Single in ein Byte umzuwandeln
und das zu übertragen (will mir die umwandlerei H-Byte ,L-Byte sparen)
Hatt da von euch einer eine einfache Lösung ?

Mfg

Wolfi
#361892
Lesenswert?

SINGLE CONVERSION
When you want to convert a SINGLE into a byte, word, integer or long
the compiler will automatic convert the values when the source string
is of the SINGLE data type.

integer = single

You can also convert a byte, word, integer or long into a SINGLE by
assigning this variable to a SINGLE.

single = long

Beste Gruesse,
André
Gast #361893
Lesenswert?

Tja das dachte ich auch (ist in C genauso) aber das klappt nicht .

Wennn ich zB eine Luftfeuchte von 74,56% habe dann die single variable
(feuchte) in eine Byte Variable(feuchte 2) schiebe dann schwankt die
Feuchte zwischen 52 und 55 hin und her .

Feuchte = Feuchte 2

was kann  das denn sein

Gruß Wolfi
Gast #361895
Lesenswert?

hier mal mein Code vielciht kann man ja was daraus lesen warums nicht
Funktioniert

Dim F As Word
Dim Feu As Single
Dim Feu_ As Single
Dim Comp As Single
Dim Comp1 As Single
Dim Feuchte As Byte
Dim T As Word
Dim Temp As Single

Dim A As Byte



Cls
Anfang:


                                          '
Config Adc = Single , Prescaler = Auto
Start Adc

Do
F = Getadc(0)








Feu = F * 0.48875
'5 Volt / 1023=0,0048875
Feu_ = Feu / 100
Waitms 5


Comp = Feu_ / 5
Comp1 = Comp - 0.16
Feu_ = Comp1 / 0.0062



Feuchte =Feu_

Cls

Lcd " Rel" ; Fusing(feu_ , "#.##") ; " %"
Lowerline

Lcd Feuchte;



Waitms 600

Goto Anfang
#361896
Lesenswert?

Ich vermute, du hast den Codefetzen einfach aus deinem Projekt
herausgerissen, da mir das alles doch sehr unvollstaendig vorkommt. An
sich voellig wertlos, denn dieser Teil des Programms funktioniert
wunderbar. Bitte nochmal alles posten, inkl. der Initialisierungen.

Ansonsten ist da ein Do ohne Loop. Nimmt man das Do raus, wird bei
jedem Durchlauf der ADC initialisiert und gestartet - Schwachsinn.
Schwankungen koennen in diesem Teil des Programms nur durch externe
Schwankungen verursacht werden, d.h. das am ADC anliegende Signal
schwankt schon.

Beste Gruesse,
André
Gast #361897
Lesenswert?

Guten Morgen

Danke für deine Antwort .
Das ist schon mein ganzer Code hab da nur noch ein loop ganz unten
gehabt das hab ich rausgeschmissen und das Do vergessen dazu,

Klar Funktioniert das Programm  einwandfrei, die Luftfeuchte wird
ordungsgemäß ausgegeben aber dann diese  in ein byte umzuwandeln klappt
nicht !wiegesagt bei 75,74 %luftfeuchte umgewannelt (In ein Byte) gibt
52...55  (anzeige zweitezeile LCD) klar schwankt die Luftfeuchte im
Kommabereich das ist  nicht schlimm es Funktioniert nur die Umwandlung
nicht .(Feuchte =Feu_  )

Gruß

Wolfgang
#361898
Lesenswert?

Wie sollte das gehen? Wenn es im Simulator funktioniert, muss es auch
auf der ZielHW laufen.

Was mir als erstes auffaellt: Kein $regfile, kein $crystal, kein config
LCD. Auch wenn du das ueber den Wizard richtig eingestellt hast, ist es
besser, das explizit ins Programm zu schreiben. Weiterhin solltest du
testweise beide Stacks und die Framesize auf irgendwas groesser 70
stellen (auch wenn ich mir kaum vorstellen kann, dass das der
Verursacher ist. Eher die HW. Lass dir am besten mal den ADC Wert mit
aufs LCD ausgeben.

Beste Gruesse,
André

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren