Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.
Renex
  • #1
    jedrzej10
    Level 14  
    Witam!

    Zbudowałem stację lutowniczą na bazie lutownicy z wbudowaną termoparą, zastosowałem MCP3201 w części pomiarowej (i jeszcze to co w takiej konstrukcji być musi). Problem pojawił się w momencie pisania programu na Atmela 89c4051.
    Używam Bascoma i problem który pojawił się wynika z faktu, że Bascom czyta słowa 8 bitowe (1 byte) z SPI (polecenie SPIIN) a MCP3201 wysyła 12bitów.
    Przeanalizowałem note katalogową MCP3201, materiały z Microchip'u i stoje w miejscu. Znalazłem kody w assemblerze jednak nie wiem jak je zaadoptować w Bascom'ie.
    Każda pomoc mile widziana :-)

    Pozdrawiam
    DJ

    Post był raportowany.

    (POMOCY!!!) – ozdobnik ? -- > REGULAMIN pkt 11.1 i 11.2. [hefid]
  • Renex
  • #2
    crazy_phisic
    VIP Meritorious for electroda.pl
    Możesz skorzystać z możliwości przesyłania danych w partiach 8 bitowych (strona 15):
    http://ww1.microchip.com/downloads/en/devicedoc/21290c.pdf
    i pobierać dane za pomocą " SPIIN dane(1), 2 "
    gdzie dane() to tablica odczytanych wartości a 2 oznacza ilość pobranych bajtów danych.
  • Renex
  • #3
    jedrzej10
    Level 14  
    Napisałem coś takiego:
    --------------------------------------------------------------------------------
    Config Spi = Soft , Din = P3.4 , Cs = P3.5 , Clk = P3.3
    Config Lcd = 16 * 2
    Cls

    Dim Odczyt_temp(2) As Byte

    Do

    Spiin Odczyt_temp(1) , 2

    Cls
    Locate 1 , 1
    Lcd Odczyt_temp(1) ; " "
    Locate 2 , 1
    Lcd Odczyt_temp(2) ; " "

    Wait 2
    Loop
    -------------------------------------------------------------------------------

    Wyświetla dwie wartości temp(1) i temp(2) wartości zmieniaja się wraz ze zmianą temperatury grota jednak z noty (strona 15) widze że byte pierwszy zawiera b1-b0-b1-b2.... a byte drugi trzy ostatnie bity ma nieznaczące... i tu pytanie jak to w bascomie złożyć razem i przestawić tak by dostać poprawną informację?

    Pozdrawiam
    DJ

    p.s. Sorry za tytuł
  • Helpful post
    #4
    crazy_phisic
    VIP Meritorious for electroda.pl
    
    dim TEMP as Word
    TEMP=Odczyt_temp(1)
    Shift TEMP, Left , 8
    TEMP=TEMP+Odczyt_temp(2)
  • #5
    jedrzej10
    Level 14  
    Wielkie dzięki!!!

    To było to czego potrzebowałem... ze tym przykładem dałem:

    Shift Temp , Right , 1
    Temp = Temp And &B0000111111111111

    i wynik jest tym co miało być!!!


    Teraz kilka warunków, obsługa klawiatury i obudowa... :-))

    Uruchomiony prototyp na zdjęciu (temp - temperatura grota, za nią temperatura zadana)

    Dzięki crazy_phisic

    Pozdrawiam
    DJ