Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega32[C] SPI - obsługa potencjometru MCP41100

26 Nov 2012 23:14 2409 10
  • Level 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':
    Code: c
    Log in, to see the code

    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.
    [Szkolenie 22.06.2021, g.9.30] Zabezpieczenia Internetu Rzeczy (IoT) programowe i sprzętowe. Zarejestruj się za darmo
  • Level 10  
    Witam,
    Code: c
    Log in, to see the code


    Pozdrawiam
    TQelektronik
  • Level 10  
    Niestety, nie pomogło - potencjometr dalej milczy
  • Level 10  
    Spróbowałbym jeszcze z następującymi ustawieniami SPI
    Code: c
    Log in, to see the code

    Bez przerwań (nie widzę ich obsługi) oraz w trybie 0.
  • Level 10  
    Nic - jak było, tak jest....
  • VIP Meritorious for electroda.pl
    A może sprawdź jaka jest maksymalna prędkość SPI dla tego układu?
    Być może sprzętowe SPI jest za szybkie...
  • Level 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
  • Level 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:

    Code: c
    Log in, to see the code

    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....
  • Level 23  
    A masz wyłączony JTAG na porcie C?
    Dodaj te dwie linijki kodu przed ustawieniem portu C:
    Code: c
    Log in, to see the code


    Jeśli to nie pomoże to zmień pin CS z PB4 na jakiś inny np PB3.
  • Level 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...
  • Level 25  
    Eres1989 wrote:
    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