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

MCP41010 - Jak uruchomić potencjometr SPI MCP41010 z ATMEGA8?

jacek13 15 Lip 2016 11:03 1326 6
REKLAMA
  • #1 15809005
    jacek13
    Poziom 15  
    Witam
    Kupiłem potencjometr MCP41010 i chciałem go uruchomić z wykorzystaniem ATMEGA8.
    ATMEGA8 zaprogramowałem programem:
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Spi = Soft , Dout = Portd.0 , Ss = Portd.1 , Clock = Portd.2
    Dim Var As Byte
    Var = 50
    Spiinit
    Spiout Var , 1

    Do

    Loop
    End
    Podłączyłem: portd.0 z "SI" ; portd.1 z "CS" ; portd.2 z "SCK"
    Do "PB0" i "PW0" podłaczyłem omomierz.
    Po włączeniu zasilania omomierz wskazuje ok. 4k i wartość ta nie ulega zmianie po zmianie wielkości "var".
    Proszę o pomoc gdzie robię błąd.
    Pozdrawiam Jacek
  • REKLAMA
  • #2 15809072
    Mol
    Poziom 30  
    No chyba wysyłasz o osiem bitów za mało .Najpierw command byte , a później data byte , ale wszystko wysłane za jednym razem .

    Dim Var As word
    Var = 4664
    Spiout Var , 2

    Nie wiem czy SPIOUT tak działa jak zrobiłem powyżej .
  • REKLAMA
  • #3 15809148
    jacek13
    Poziom 15  
    Wprowadziłem proponowane zmiany ale nic to nie zmieniło.
  • REKLAMA
  • REKLAMA
  • #5 15809733
    jacek13
    Poziom 15  
    Witam
    Było by świetnie gdybym znał angielski i wiedział o co chodzi.
    Jeżeli można to proszę o "kawę na ławę".
    Pozdrawiam Jacek

    Dodano po 11 [minuty]:

    Ponadto w przesłanym programie wykorzystane zostały porty B.0/1/2/3/4 - chyba za dużo. Potrzebne są tylko trzy.
    Pozdrawiam Jacek
  • #6 15810473
    kamyczek
    Poziom 38  
    Zawsze można skopiować kawałek pdf do translatora z gogle może to nie idealne rozwiązanie ale coś tam da się z tego wywnioskować , pomijając już to że w elektronice 99% dokumentacji jest angielskojęzycznych ... układem steruje się tak jak zwykłym rejestrem przesuwnym i można układy połączyć w jeden długi łańcuch wysyłając kilka czy kilkanaście bajtów danych ustawić jednocześnie kilka potencjometrów w tym samym czasie .
  • #7 15810892
    jacek13
    Poziom 15  
    Witam
    Po podpowiedzi "Nouki" zmodyfikowałem program i uzyskałem pozytywny wynik.
    Podaję opracowany program:
    Config Spi = Soft , Dout = Portd.1 , Ss = Portd.2 , Clock = Portd.3 'konfiguracja programowego "SPI"
    Spiinit 'inicjacja "SPI"

    Config Portd.1 = 1 'wyjście sygnału (MOSI)
    Portd.1 = 0
    Config Portd.2 = 1 'wyjście sygnału aktywacji "SLAVE"
    Portd.2 = 1 'wyłaczona aktywacja Slawe
    Config Portd.3 = 1 'wyjście sygnału zegarowego "SCK"
    Portd.3 = 0

    Dim A As Byte 'dla wpisu "command byte" potencjometru
    Dim B As Byte 'dla wpisu "data byte" - wielkość rezystancji
    A = &B11011101 'dane "command byte" potencjometru
    B = 128 'rezystancja 50% całości
    Reset Portd.2 'wyzerowanie Wyjścia "SS" - Włączenie "slave" potencjometru
    Shiftout Portd.1 , Portd.3 , A , 1 'transmisja "command byte" do potencjometru
    Shiftout Portd.1 , Portd.3 , B , 1 'transmisja wartości potencjometra
    Set Portd.2 'poziom wysoki "SS" -blokada wejścia potencjometra

    Temat zakończony.
REKLAMA