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

Jak przesyłać 12-bitowe dane przez SPI z przetwornikiem MAX187?

Eltok 13 Lip 2007 19:45 2196 2
REKLAMA
  • #1 4079217
    Eltok
    Poziom 11  
    Posty: 12
    Witam, czy ktoś z Kolegów ma receptę na takowe zagadnienie?. Przetwornik 8-mio bitowy działa bezbłędnie, ale nie mogę sobie poradzić a 12-to bitowym MAX187. Temat przesyłania kilku bajtów jest dość słabo opisany w helpie Bascoma, a w każdym razie to co jest opisane nie zadziałało. Kombinowałem na wszystkie możliwe sposoby, ale efektem są wyniki zupełnie "chaotyczne", bez sensu. Chyba będę musiał wykorzystać jakiegoś "gotowca".
    Poza tym w nocie katalogowej MAX187 na wykresie przesyłania ramki przez SPI w pierwszym bajcie (MSB) widać tylko 7 bitów, następnie przerwa, a w drugim bajcie (LSB) jest czytanych 5 bitów. To mnie już całkiem zmyliło! Może tu jest problem, ale w literaturze nic na ten temat nie mogłem znaleźć.
    Jeśli ktoś się z Was może mi pomóc, będę bardzo wdzięczny!
    Tomek
  • REKLAMA
  • #2 4079883
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Według dokumentacji po ustawieniu CS (CS=0) czekasz, aż DOUT: 0->1 i po tym możesz pobierać dane. jako, że sygnalizacja EOC (End Of Convert?) wymaga ciągłego poziomu wysokiego, to pierwszy impuls zegara służy do poinformowania max187 o tym, że ma zacząć wystawiać dane. Wszystkie kolejne bity to już bity danych, potem pojawiają się bity uzupełniające o wartości zerowej. W ostateczności odczyt danych będzie polegał na pobraniu 2 bajtów - i właśnie.. z pierwszego znaczące będzie 7 dolnych bitów (przy najwyższym bicie takt zegara służył do poinformowania układu o przyjęciu zgłoszenia końca konwersji), a z drugiego bajtu znaczące będzie 5 górnych bitów (3 dolne będą bitami uzupełniającymi) - bajt musisz w tym przypadku składać i wyrównać (w zależności od potrzeb do lewej lub prawej).
    co do <<efektem są wyniki zupełnie "chaotyczne", bez sensu.>> - tutaj masz przetwórnik, który ma 12 bitów, więc jest bardziej czuły na szum. jeśli nie masz kondów filtrujących, odpowiedniego układu wejściowego etc, to szumy zaniżą efektywną precyzję przetwórnika wprowadzając pewien element losowości na dolne bity wyniku.
  • #3 4080859
    Eltok
    Poziom 11  
    Posty: 12
    Dziękuję za wyjaśnienia i jednocześnie przepraszam, bo niezbyt precyzyjnie opisałem problem! Po pierwsze jestem początkującym, jeśli chodzi o mikrokontrolery i zaczynam od Bascoma AVR. Jestem elektronikiem - układowcem i do tej pory programy pisałem w Turbo Basicu Borlanda.
    Mam tylko problemy z zagadnieniami specyficznymi dla mikrokontrolerów, w tym właśnie z przesyłaniem wyników pomiarów z ADC przez SPI. Te błędne wartości na wyświetlaczu nie wynikają z niestabilności układu, tylko z niewłaściwego przesyłania dwóch bajtów wyników. Przy jakimkolwiek ustawieniu napięcia mierzonego pojawiają się cykliczne ( i stabilne) zmiany dziwnych wartości na wyświetlaczu. Dość długo próbowałem analizować przyczyny, ale nie doszedłem do żadnych sensownych wyników.
    Może ktoś jednak poratuje mnie fragmentem sprawdzonego programu, który prześle z przetwornika takiego jak MAX187 dwa bajty do wyświetlacza LCD przez interfejs SPI, no i koniecznie w BascomieAVR.
REKLAMA