Gast
#485590
Hallo, ich habe folgendes Problem mit Bascom. Ich habe eine Zahl, z.b. 10747.4562, die ich in ein High und Lowbyte mit jeweils 14bit zerlegen muß. Wie könnte ich das realisieren ? Danke !!!
|
Anzeige
|
High und Low
Gast
#485590
Hallo, ich habe folgendes Problem mit Bascom. Ich habe eine Zahl, z.b. 10747.4562, die ich in ein High und Lowbyte mit jeweils 14bit zerlegen muß. Wie könnte ich das realisieren ? Danke !!!
Gast
#485637
zahl / (2exp14) = highb. (ohne komma-anteil) zahl - highb. = lowb.
Gast
#485701
Nochmals. Die Zahl ist 28 bit und die moechte man in ein low und ein highbyte mit jeweils 14 bit packen ? Dh durch irgend einen kompressor die ueberzaehligen 6bit pro byte verschwinden lassen. M. Das geht schon mal gar nicht, weil ein Byte nur 8 Bit hat.
Gast
#485709
zahl / (2exp14) = highb. (ohne komma-anteil) zahl -( highb.* (2exp14))= lowb. Diese C-Programmierer können nicht so ganz klar im Kopp sein ! Einen Wert von 10747 durch 2^14 teilen ergibt etwas um 0. Das würde ich nicht als High-Byte bezeichnen. Also, Du hast entweder eine Welt, in der ein Byte 14 Bit hat, oder Du möchtest 10747 auf 8 Bit umrechnen. Ersteres ist leicht: 10747 braucht ca. 14 Bit. Der Nachkommateil hat es dann in sich ! Wie ist die Zahl denn überhaupt gespeichert ? Zweiteres ist auch leicht: Du vergißt die 6 niederwertigsten Bits und hast eine 8-Bit-Zahl für den 14-Bit-Wert. Nennt sich "verlustbehaftete Komprimierung". Bei dem Nachkommateil gilt gleiches, hast aber 6 Bit weniger ! Ober ist das alles als BCD-codierte 5-Byte-Wert gespeichert ? Oder als x-Zeichen-ASCII-Wert ? Etwas binäre Arithmetik (besonders nach dem Komma) würde hier helfen !
Gast
#486231
Es soll ein AD9833 DDS-Chip angesteuert werden. Der erwartet 2 mal ein 14 bit Wort, das die Frequenz enthällt. Es werden 2 * 16 bit übertragen, wobei die ersten beiden das Register beinhalten, und wie gesagt die restlichen 14 die Frequenz. Wie beckomme ich nun aus einer Zahl die Passenden 16(14)Bit Worte ?
Gast
#486270
@ Gast >Es soll ein AD9833 DDS-Chip angesteuert werden. Der erwartet 2 mal ein >14 bit Wort, das die Frequenz enthällt. Es werden 2 * 16 bit übertragen, >wobei die ersten beiden das Register beinhalten, und wie gesagt die >restlichen 14 die Frequenz. Wie beckomme ich nun aus einer Zahl die >Passenden 16(14)Bit Worte ? Grundlagen der Zahlendarstellung auf Computern anschauen und möglichst verstehen. MFG Falk
Gast
#486321
RRDD.DDDD (16 bit mit (R)egister-eintrag) AND 0011.1111 (also 0x3F) = 00DD.DDDD (die 14 bit frequenz-daten-zeug)
Gast
#486323
...ach waren ja 16bit...na gut...wäre dann ja entsprechend...
Gast
#486595
Die Werte müßten so aussehen : LSB=&B0100000000000000 MSB=&B0100000000000000 die ersten beiden (01) bleiben gleich, gefolgt vom Wert (14bit). Zusammen 16 Bit.
Gast
#486612
Speicher in den ersten 14Bits die 10747 = 10.1001.1111.1011 und berechne die Nachkommastellen bis zu einer Genauigkeit von 14Bit wie folgt: 0,4562 * 2 = 0,9124 + 0 0,9124 * 2 = 0,8248 + 1 0,8248 * 2 = 0,6496 + 1 . . . Immer den ganzzahligen Anteil "rausziehen", das entspricht dann von oben nach unten gelesen den binären Nachkommastelle. Wahrscheinlich kommst du aber mit 14Bit nicht auf ein genaues Ergebnis... MFG Fisch Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|