-
Hast Du den Code runtergeladen ?.
Bedarf evtl. einiger Erklärungen.
Es gibt 4 Vraiablen a 32 Bit
var_ARG_A,var_ARG_B,var_ARG_C,var_ARG_D
Hierbei liegt jeweils das niederwertigste Byte Bit0.7 in
....AL die Bits 8..15 in ...AH Bit 16..23 in ....AHL Bit 24.31 in ....AHH
Möchtest Du zwei 16 Bit Werte multiplizieren, muss Du die Variablen
entsprechend mit den Werten laden
z.B 1000*2000=2000000
mov LOW D'1000',W ; A Wert setzen
movwf var_ARG_AL
mov HIGH D'1000',W
movwf var_ARG_AH
mov LOW D'2000',W ; B Wert setzen
movwf var_ARG_BL
mov HIGH D'2000',W
movwf var_ARG_BH
call MUL16 ; Berechnung ausführen, Ergebnis nach Wert A
; nun steht das Ergebnis 32 Bit breit in der Variablen ARG_A
Bit 0..7 in in var_ARG_AL
Bit 8..15 in var_ARG_AH
Bit 16..23 in var_ARG_AHL
Bit 24..31 in var_ARG_AHH
!!!! es wird also der A Wert überschrieben mit dem Ergebnis
Beim dividieren läuft das in ähnlicher Weise ab.
mfg. Siro
-
sorry, muss natürlich
movlw LOW D'1000' heissen um Konstanten zu laden.
oder bei deinen Messwerten
mov Messwert_Low,W
movwf var_ARG_AL
mov Messwert_High,W
movwf var_ARG_AH
usw.
-
Wenn Du mir deine Berechnung genau beschreibst,
welche Variable mit wieviel Bits mit wem multipliziert,dividiert usw.
werden muss implementiere ich Dir den Code mittels meinen Berechnungs Routinen. Stellt kein Problem dar. Ich hab ja auch meinen Spaß daran.
mfg Siro
-
Servus,
wo kann ich mir den Code denn ziehen? Hab ich den Link verpasst?
Also ich würde gerne zur Berechnung der Feuchte die Formel aus dem Datenblatt anwenden... Habe mich da auch schon dran versucht allerdings tue ich mich sehr schwer beim multiplizieren.
Das heißt:
rH= c1+c2*Mess+c3*Mess²
das bedeutet für 12 bit
rH= -4+0,0405*Mess-2,8*10^(-6)*Mess²
Mess steht für den digitalen Wert der Feuchtemessung. maximal 2^12=4096
Um mit 0,0405 zu multiplizieren hatte ich mir überlegt einfach mit 4 und mit 5 zu multiplizieren und dann für eine Null einfach das Komma zu verschieben. Zum Schluss werden die Werte dann noch aufeinander addiert und zwar so, dass die jeweilige Additionen an die richtige Stelle gerückt wird. So wie man das früher brav in der Schule gelernt hat.
Zumindest kläppt das auf dem Papier aber leider nicht in meinem Programm.
Hast dafür eine Idee?
Gruß
-
Da wurde anscheinend das Attachment aus meiner Antwort gelöscht,
keine Ahnung warum. Ich selbst hatte extra probiert ob ich es runterladen
kann und das ging getsern auch einwandfrei.
Kann ich Dir den Code auch per email schicken ?
Siro
-
Deine Feuchteumrechnung ist fertig. Habe Dir den komplett getesteten
Code per email geschickt. Ein "Mini"-PIC kann also doch rechnen, ist nur eine Frage des Aufwands. Und das beste: es hat mir tatsächlich Spaß gemacht.
mfg Siro
-
Servus,
also noch mal eine kurze Resonanz zu der ganzen Geschichte.
Ich habe die Umrechnung für die Temperatur fertig. Abweichung zum kalibrierten Messgerät beträgt +/-0,5 Grad. Also funktioniert wunderbar
Die Feuchte habe ich mit einigen Geraden genähert. Da mir die Rechnung laut Datenblatt einfach zu viel war. so beträgt die Abweichung rund +/- 2%, was mich nicht unbedingt glücklich macht aber vertretbar ist.
Trotzdem noch mal fettes fettes Danke an Siro. Bei der Multiplikation habe ich einiges gelernt.
Gruß Daniel