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

Atmega32[C] SPI - jak poprawnie zainicjalizować potencjometr MCP41100?

Eres1989 26 Lis 2012 23:14 2490 10
REKLAMA
  • #1 11579116
    Eres1989
    Poziom 10  
    Witam,
    Borykam się z problem odpowiedniej inicjalizacji przez SPI (sprzętowe) wymienionego w tytule potencjometru cyfrowego. Z noty katalogowej wynika, że musze wysłać 16 bitów (8 bitów sterowania i 8 bitów ustawiających pożądaną rezystancję).
    Póki co wypociłem taki kod 'testowy':
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Próbowałem już różnych wersji z CLK (ustawiałem bity CPOL oraz CPHA), gdy poprawna moim zdaniem wersja zawiodła. Nie wiem... może chodzi też o coś innego, przez cały dzień nie wpadłem na nic 'rozjaśniającego' sytuację, wiec postanowiłem założyć ten temat.

    Pozdrawiam.

    P.S. Potencjometr jest sprawny, ponieważ testowałem go na SPI programowym (kod znajduje się na elektrodzie). Używam zewnętrznego kwarcu 16MHz.
  • REKLAMA
  • #2 11582497
    TQelektronik
    Poziom 11  
    Witam,
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    TQelektronik
  • REKLAMA
  • #3 11582812
    Eres1989
    Poziom 10  
    Niestety, nie pomogło - potencjometr dalej milczy
  • #4 11582957
    TQelektronik
    Poziom 11  
    Spróbowałbym jeszcze z następującymi ustawieniami SPI
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Bez przerwań (nie widzę ich obsługi) oraz w trybie 0.
  • REKLAMA
  • #5 11583016
    Eres1989
    Poziom 10  
    Nic - jak było, tak jest....
  • #6 11583206
    piotrva
    VIP Zasłużony dla elektroda
    A może sprawdź jaka jest maksymalna prędkość SPI dla tego układu?
    Być może sprzętowe SPI jest za szybkie...
  • #7 11583378
    GSM
    Poziom 25  
    Czy na programowym SPI potencjometr działał w tej samej konfiguracji sprzętowej?
    Programator nie zostawia /RESET-u? Prawidłowo jest podłączony ten potencjometr? Najlepiej by było gdybyś pokazał schemat/zdjęcie układu.

    Pozdrawiam,
    GSM
  • #8 11585259
    Eres1989
    Poziom 10  
    Witam,
    Maksymalna częstotliwość dla potencjometru to 10MHz (jeśli chodzi o transmisje), więc to raczej nie to...
    Poniżej zamieszczam schemat:
    Atmega32[C] SPI - jak poprawnie zainicjalizować potencjometr MCP41100?

    Dodano po 2 [godziny] 38 [minuty]:

    Jednak zmienie koncepcje na obsługe programową, bo z tym sprzętowym SPI robi się paranoja... więc tak, przerobiłem troche kod z elektrody:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Tylko jest jedno ale - o ile na początku krok jest równy 0.5k (prawidłowo), o tyle po przekroczeniu 5k, następuje gwałtowny wzrost rezystancji. Innymi słowy - operuje jedynie na 4 bitach, zamiast 8....
  • REKLAMA
  • #9 11585987
    ks_fenix
    Poziom 23  
    A masz wyłączony JTAG na porcie C?
    Dodaj te dwie linijki kodu przed ustawieniem portu C:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jeśli to nie pomoże to zmień pin CS z PB4 na jakiś inny np PB3.
  • #10 11585996
    Eres1989
    Poziom 10  
    Już dawno jest wyłączony.
    Mam wyłaczony JTAG w fusebitach inaczej by mi przyciski szalały na porcie C....

    Dodano po 1 [godziny] 10 [minuty]:

    Zaczynam się już gubić... jak to jest: pomiaru dokonuje multimetrem między masą a PW0... zacząłem sie już zastanawiać czy mierzę rezystancję statyczną czy dynamiczną :| bo to jest niemożliwe, żeby potencjometr wyciągał prawie 200k (skoro w notach max jest koło 100k) i nagle przeskoczył z rezystancji 6k do 70k.

    Dodano po 32 [minuty]:

    Z ostatnich pomiarów:
    rezystancja wzrasta w miare liniowo do wartości 20k (wysyłana dana: 0b000 10001 1110 1000) potem gwałtownie wzrasta do 80k :|
    Po za tym, drażni mnie fakt, że to dekrementacja (a nie inkrementacja) zwiększa wartość potencjometru...
  • #11 11587944
    GSM
    Poziom 25  
    Eres1989 napisał:
    Po za tym, drażni mnie fakt, że to dekrementacja (a nie inkrementacja) zwiększa wartość potencjometru...

    Wartość potencjometru? Pozycję "suwaka" raczej zmienia, wtedy w miarę "kręcenia" w górę, rezystancja między jednym końcem a suwakiem będzie maleć, a między drugim końcem a suwakiem będzie rosnąć. Było o tym pomyśleć zawczasu i odwrotnie wyprowadzenia podłączyć. :wink:
    Ten objaw z za wysoką rezystancją jest podejrzany, coś źle mierzysz, albo usypiasz potencjometr, ale wtedy ta rezystancja powinna być zacznie większa niż 200k.

    Pozdrawiam,
    GSM
REKLAMA