mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik High und Low


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 !!!

Autor: alfsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zahl / (2exp14) = highb. (ohne komma-anteil)
zahl - highb. = lowb.

Autor: Murksi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht schon mal gar nicht, weil ein Byte nur 8 Bit hat.

Autor: alfsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zahl / (2exp14) = highb. (ohne komma-anteil)
zahl -( highb.* (2exp14))= lowb.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 !

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
    RRDD.DDDD (16 bit mit (R)egister-eintrag)
AND 0011.1111 (also 0x3F)
=   00DD.DDDD (die 14 bit frequenz-daten-zeug)

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ach waren ja 16bit...na gut...wäre dann ja entsprechend...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Werte müßten so aussehen :

LSB=&B0100000000000000
MSB=&B0100000000000000

die ersten beiden (01) bleiben gleich, gefolgt vom Wert (14bit). 
Zusammen 16 Bit.

Autor: Fisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.