Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega32[C] SPI - obsługa potencjometru MCP41100

Eres1989 26 Lis 2012 23:14 2199 10
  • #1 26 Lis 2012 23:14
    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
    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.

    0 10
  • #2 27 Lis 2012 21:03
    TQelektronik
    Poziom 10  

    Witam,

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    TQelektronik

    0
  • #3 27 Lis 2012 21:42
    Eres1989
    Poziom 10  

    Niestety, nie pomogło - potencjometr dalej milczy

    0
  • #4 27 Lis 2012 22:01
    TQelektronik
    Poziom 10  

    Spróbowałbym jeszcze z następującymi ustawieniami SPI

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Bez przerwań (nie widzę ich obsługi) oraz w trybie 0.

    0
  • #5 27 Lis 2012 22:09
    Eres1989
    Poziom 10  

    Nic - jak było, tak jest....

    0
  • #7 27 Lis 2012 23:23
    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

    0
  • #8 28 Lis 2012 18:36
    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 - obsługa potencjometru 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
    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....

    0
  • #9 28 Lis 2012 18:41
    ks_fenix
    Poziom 23  

    A masz wyłączony JTAG na porcie C?
    Dodaj te dwie linijki kodu przed ustawieniem portu C:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeśli to nie pomoże to zmień pin CS z PB4 na jakiś inny np PB3.

    0
  • #10 28 Lis 2012 20:26
    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...

    0
  • #11 29 Lis 2012 04:18
    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

    0