Schau dir mal
varn = MAKEINT(LSB , MSB)
an
Gruß
Rolf
Hallo,
ich lese einen 12bit AD-Wandler mittel I2C Bus aus. Das funzt prächtig. Geht von 0 - 4096.
Die Werte werden aber in zwei Arbeitsschritten abgeholt und sind jeweils 8bit lang.
Einmal bekomme ich Steuerbits (y, sind immer gleich) und die oberen Werte (x) und dann extra nochmal die unteren Werte (x).
Also yyyyxxxx und xxxxxxxx
Jetzt will ich von dem ersten Byte die letzten 4 stellen nehmen und das mit dem zweiten zusammmen rechnen und die zahl zum rechnen nehmen.
ich habe das mit der umwandlung in eine string versuch und die letzten stellen wollte ich zum weiterrechnen benutzen. habe das aber nicht hinbekommen. irgendwie hätte ich jabeide zahlen in einen string umwandeln müssen. das rechnen geht aber mit strings nicht.
als zweites habe ich das mit dem & versucht. also 00001111 und yyyyxxxx ergeben ja die letzen 4 stellen. damit hätte ich ne normale zahl mit xer ich die andere adddieren kann. Aber irgendwie habe ich es so auch nicht hinbekommen.
zur zeit gebe ich die zahlen einzeln per RS232 aus und rechne die in nem kleinen delphi perogrammm aus und gebe den großen wert wiedder zurück. aber das uss doch auch kleiner und leichter im Atmega gehen.
Habt ihr ne Idee wie ich die Zahlen zusammen bekommme? Habe schon im Netz und im Forum gesucht, aber habe nichts passendes gefunden.
thx for help
Arno
Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
Sir Isaac Newton
Schau dir mal
varn = MAKEINT(LSB , MSB)
an
Gruß
Rolf
Hallo Arno,
du könntest die Variablen auch mit der Option "Overlay" definieren. Schau dir dazu mal die Bascom-Hilfe zu "Dim" an.
Gruß, Stefan
Beide Bytes addieren und die 4 oberen vom MSB subtraieren.
Alternativ das LSB in Nibbel zerlegen und mit dem unteren Nibble des MSB addieren.
Planung ersetzt Zufall durch Irrtum
Gruß aus dem Ruhrgebiet Hartmut
Lesezeichen