-
        

Ergebnis 1 bis 9 von 9

Thema: High und Lowbyte errechnen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121

    High und Lowbyte errechnen

    Anzeige

    Hallo, ich habe folgendes Problem. Ich habe z.b. eine Zahl von 10737.4189, die ich in ein 14Bit high und 14Bit lowbyte zerlegen muß. Wie könnte ich das mit Bascom machen? Die Befehle HIGH und LOW erzeugen ja ein 16Bit Byte?????

    Danke !!!

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Die Zahl ist ja wohl in einem long mit 32 Bit enthalten

    Du kannst die oberen 14 byte um 2 Bit nach oben shiften, sodaß sie sich im High -Word befinden

    dadurch erhältst du zwei 16-Bit Zahlen, die jeweils die unteren bzw. oberen 14 Bit enthalten.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Also es ist so. Ich muß zwei 16 bit worte seriell übertragen, wobei die bit´s 15 und 16 steuercodes enthalten, und die anderen 14 bit´s das jeweilige high und low eines wertes. Wie erhalte ich nun die richtigen 16 bit worte ?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    In dem Beispiel unten kann ich unter Frequenz eintragen was ich will, das Flsb und Fmsb ändert sich nicht....

    Frequenz = 2000
    Freq = Frequenz
    Freq = Freq / Mclk
    Freq = Freq * Parameter

    Flsb = Low(freq)
    Shift Freq , Left , 2
    Fmsb = High(freq)

    Fsend = &B0100000000000000 + Flsb
    Gosub Send
    Fsend = &B0100000000000000 + Fmsb
    Gosub Send

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Das ist ein Programmiergefummel.
    Code:
    DIM Zahl as LONG 
    DIM ausgabe as WORD
    
        Zahl = nnnnnnnnn
    DIe_LOWER_14:
        ausgabe = zahl  AND &H00003FFF
        ausgabe = ausgabe + steuerzeichen
        SEND (ausgabe)             ' wie auch immer
    DIe_HIGHER_14:
        shift  ausgabe, RIGHT, 14     ' zahl 14 Bit nach rechts schieben 
        ausgabe = zahl  AND &H00003FFF     ' so wie oben 
        ausgabe = ausgabe + steuerzeichen  ' 
        SEND (ausgabe)                               ' wie auch immer

    Geht eleganter, aber so ist es wohl verständlicher

    Steuerzeichen einfügen kommt drauf an, wo und wie die daherkommen

    "senden" weiß ich auch nicht, was du da für eine Methode hast
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Das ist die Send Routine........


    Send:
    Reset Fsync
    Shiftout Sdata , Sclk , Fsend , 0
    Set Fsync
    Return

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Also so ............

    Frequenz = 1000
    Freq = Frequenz
    Freq = Freq / Mclk
    Freq = Freq * Parameter

    '----------- in freq steht die Zahl um die es geht

    Flsb = Freq And &H00003FFF
    Flsb = Flsb + &B01
    Shift Freq , Right , 14
    Fmsb = Freq And &H00003FFF
    Fmsb = Fmsb + &B01

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ah so. Na dann machst du erst
    Code:
    shiftout  sdata, sclk, ausgabe , 0, 14   ' 14 bit raus
    shiftout  sdata, sclk, ctl-bits  , 0, 2       ' 2 steuerbit raus
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2004
    Beiträge
    121
    Das geht leider nicht, da von dem angesteuertem Bauteil zwei 16 bit worte hintereinander erwartet werden, von denen die ersten beiden ein register beinhalten, und die 14 nachfolgenden den wert

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •