![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo zusammen, ich habe einem Open-Maxi-Anwender per E-Mail den Rechenweg erklärt. Hier die Erklärung: Die Berechnungsvorschrift lautet "Wert/64-256". Hiermit kann der vom Modul zurückgelieferte Wert in Grad Celsius umgerechnet werden. Das Problem ist aber, daß "Wert/64" Nachkommastellen produziert, die von den OM-Controllern nicht unterstützt werden. Es gibt aber den Trick, geeignet zu skalieren, also mit einer konstanten Zahl malzunehmen. Das Ergebnis liegt dann ebenfalls skaliert vor. Wenn man zum Beispiel mit 64 skaliert, lautet die Berechnungsvorschrift "Wert*64/64-256*64". Natürlich ist "64/64" gleich 1, man muß also nur noch "Wert-256*64" rechnen. Das können die Mikrocontroller gut verarbeiten und man kann mit diesem skalierten Ergebnis gut rechnen. Im vorliegenden Fall kann die Open-Macro und Open-Maxi aber nur Zahlen von -32768 bis +32767 verarbeiten, da WORD-Zahlen im Zweierkomplement dargestellt werden. Deshalb habe ich nur mit 32 skaliert. "Wert*32/64-256*32" und "32/64" ergibt "/2". Da hierbei der Term "Wert/2" negativ werden könnte, habe ich noch "AND &h7fff" gerechnet. Dadurch wird das oberste Bit auf Null gesetzt. Es wird deshalb nur mit 15-Bit-Auflösung gerechnet. Im weiteren Programmverlauf wird das Ergebnis als Kommazahl auf der Seriellen Schnittstelle ausgegeben. Dabei muß die Skalierung beachtet werden und so muß "wert/32" und "wert MOD 32" berechnet werden. Viel Spaß und Erfolg mit den OM-Mikrocontrollern! Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |