logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[M8] [BASCOM] - Wysłanie wartości HEX zmiennej przez I2C

Ture11 25 Gru 2013 02:06 1443 2
  • #1 13096315
    Ture11
    Poziom 39  
    Witajcie.
    Nadszedł ten czas, gdy potrzebuję Waszej pomocy w zapewne błahym, choć dla mnie nieprzekraczalnym, problemie.

    Mam zmienną typu string, która przechowuje wartość heksadecymalną zmiennej... Potrzebuję tą wartość wysłać przez I2C za pomocą I2cwbyte... Problem w tym, że nie mam pomysłu, jak mogę ją zapisać tak, by poszła w formie hex.

    Oczywiste dla mnie jest, że gdy wysyłam coś takiego:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    to wysyłam przez magistralę wartość '0A' w hex.

    Problem mój jest w tym, jak zapisać komendę i2cwbyte by wysłać wartość string, przykładowo '9E' zawartą w zmiennej o nazwie np. "podzial"

    Coś takiego zdaje się być bzdurą...
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Niestety, wszystkie pomysły jakie mi przychodzą do głowy są odrzucane przez kompilator.
    Myślałem jeszcze o czymś, co wyciągnęłoby wartość decymalną z hex, czyli o poleceniu HEXVAL(), lecz próby na szybko wykazały brak działania układu...

    Czy ktoś może mi podpowiedzieć, jakie mam jeszcze możliwości?
    Pozdrawiam.
  • Pomocny post
    #2 13096413
    Kuniarz
    Moderator Projektowanie
    Użyj po prostu VAL(zmienna typu string).
    Ale nie jestem teraz przekonany, czy VAL zwróci wartość stringa zawierającego HEX. Możesz napisać prostą procedurę, która zamieni dwa znaki w HEX na wartość dziesiętną, a tą już łatwo wyślesz.

    EDIT: Jest komenda HEXVAL - opis w helpie.
    Pomogłem? Kup mi kawę.
  • #3 13097089
    Ture11
    Poziom 39  
    Witam.
    Problem właśnie w tym, że instrukcja VAL() dla np. '9A' zwróci wartość 9.
    W przypadku HEXVAL() dokonwywana jest konwersja HEX<=>DEC... Teoretycznie wpisanie wartości DEC do urządzenia I2C powinno spowodować zadziałanie. Wczoraj jednak miałem z tym problemy. Dziś podejmę kolejną próbę.


    EDIT:
    Zgodnie z tym, co podejrzewałem, puściłem gafę, źle wpisałem wartości do I2Cwbyte. Urządzenie na magistrali bez problemu reaguje na wartości DEC, bo i na pewno te są przekształcane na postać binarną wysyłaną szeregowo :-).

    Po przeróbce programu tuner QN8025 działa bez problemu :-)

    Dziękuję za pomoc, zamykam.
REKLAMA