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

Jak odczytać wartości 16bit przez TWI/I2C (xmega)

chemik22 20 Lut 2017 18:53 1221 11
  • #1 16294050
    chemik22
    Poziom 14  
    Witam,


    Usiłuję odczytać wartość z rejestru 16bitowego i nie mam pojęcia jak to powinienem zrealizować za pomocą funkcji "TWI_read".
    Do tej pory gdy "bufor_size" był równy jeden to nie miałem z tym problemu. Teraz niestety nie wiem jak to ugryźć...
    Poniżej kod który zawiera tyko to co dotyczy pytania, na koniec funkcja "main" w której zaznaczyłem czego dotyczy problem.


    Pewnie to jest banalne, z góry dzięki z pomoc !


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 16294135
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16294817
    Konto nie istnieje
    Poziom 1  
  • #4 16294956
    chemik22
    Poziom 14  
    Mam bardzo małe doświadczenia z programowaniem i stąd wynika moje pytanie. To co tu zacytowałem jest w zasadzie tylko oderwanym od rzeczywistości przykładem. Chodzi mi o to że gdy chcę odczytać z pamięci '&wartoscA' która jest typu uint8_t to nie ma z tym problemu (np. w RTC DS3231) natomiast już podczas kompilacji kodu w którym deklaruję że '&wartoscB' jest typu uint16_t (chciałem to wykorzystać do odczytywania pamięci z czujnika temperatury MAX6634) dostaję komunikaty w AtmelStudio:


    " Warning passing argument 2 of 'TWI_read' from incompatible pointer type"
    "expected 'uint8_t *' but argument is of type 'uint16_t *"


    Co w zasadzie jest zrozumiałe bo TWI_read ma postać:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    podczas gdy ja wywołuje tę funkcję z drugim argumentem '&wartoscB' typu uint16_t... tyle wiem ale nie wiem i tak jak sobie z tym poradzić...


    Pewnie aby rozwiązać mój problem wystarczy jedna linijka kodu..
  • Pomocny post
    #5 16294978
    Konto nie istnieje
    Konto nie istnieje  
  • #6 16295061
    Konto nie istnieje
    Poziom 1  
  • #7 16295095
    chemik22
    Poziom 14  
    Dzięki, faktyczne cast rozwiązało problem...


    Co do dodania adresu urządzenia do funkcji TWI_Read pewnie niebawem dojdę jak zacznę rozbudowywać cały układ, póki co było tylko jedno urządzenie TWI na raz wieć było spoko, dzięki za radę na pewno niebawem się przyda...
  • #9 16296251
    chemik22
    Poziom 14  
    tmf napisał:
    Tak przy okazji to na XMEGA polecam ci do realizacji TWI bibliotekę LUFA:
    http://www.fourwalledcubicle.com/files/LUFA/D...1/html/group___group___t_w_i___x_m_e_g_a.html
    Prosta, przyjemna, działająca od strzału.



    Dzięki! Funkcje wyglądają na fajniejsze do implementacji.. niestety jak zaimportowałem LUF(Ę) do AS7 to teraz mam problem z kompilacją takieto kodu.. Ładuje go przez "ASF Wizard" moduł LUFA_TWI (wcześniej zmusiło mnie do wyboru "Board" więc wybrałem "User Board Template XMEGA AU" bo mam płytkę Leona-X3 to wydawało się jedyne "rozsądne".


    W "main.c" poza odwołaniem do funkcji TWI_Init/Read deklaruję:
    #define ARCH ARCH_XMEGA
    #include <asf.h>

    i dostaję kilkanaście błędów, typu:
    error AVR processor does not provide bootloader support! (plik boot.h)
    error Cannot find SPM Enable bit definition! (plik boot.h)


    już wielu modyfikacji próbowałem i nie mogę tego przezwyciężyć... ale tez nigdy dotąd nie korzystałem z bibliotek ASF... w necie szukam jak to ugryźć/tutoriali/manuali i póki co.. No chyba że mam nie korzystać z ASF ? tyle że wtedy też ciągle czegoś mu brakowało jak ręcznie deklarowałem pliki "TWI.h" itp. z katalogu LUF(Y)...
  • #10 16296323
    tmf
    VIP Zasłużony dla elektroda
    @chemik22 Nie łącz tego kodu z ASF - ASF do niczego nie potrzebujesz. Po prostu dołącz te pliki do własnego programu.
  • #11 16296748
    chemik22
    Poziom 14  
    Dzięki, tak faktycznie działa i dużo fajniejsza ta funkcja LUFA niż moje poprzednie.. hmm.. czemu jak człowiek już nad czymś spędzi kupę czasu i cieszy się że w końcu działa to później dostaje jak na tacy rozwiązanie które jest prostsze, fajniejsze i bardziej uniwersalne... hehe.. ;)


    Tak swoją drogą to czy biblioteka LUFA dla ADC/SPI jest również tak fajna jak TWI ?


    ...Choć chyba widzę że do XMEGA akurat ADC tam nie ma i jest tylko do AVR8 ?
  • #12 16296789
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA