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.

89S52 odczyt danych z MAX187 przez ISP

Spięcie 03 Gru 2008 21:53 1313 4
  • #1 03 Gru 2008 21:53
    Spięcie
    Poziom 12  

    Witam, jestem laikiem jeśli chodzi o programowanie kontrolerów, jednak chciał bym spróbować czegoś więcej niż miganie diod LED , czy komunikaty na LCD.
    Teraz chciał bym zrobić woltomierz na przetworniku 12bitowym MAX187, który dostałem jako próbkę z maximusa .
    Wspomniany przetwornik komunikuje się z kontrolerem poprzez interfejs ISP
    89S52 odczyt danych z MAX187 przez ISP

    znalazłem w necie na ATmega8, twórca szukał również porady bo program nie działał prawidłowo.
    Poprawiony kod źródłowy dla zaadoptowania go do 89S52

    Kod:

    Code:

    Config Lcd = 16 * 2

    Config Spi = Soft , Din = P2.4 , Dout = P2.3 , Clk = P2.5 , Cs = P2.2
    Dim Wart_ac As Word
    Dim V As Single
    Dim Wart_nap As String * 6
    Spiinit
    Do
    Reset P2.2
    Delay
    Set P2.5
    Delay
    Reset P2.5
    Delay
    Spiin Wart_ac , 2
    Set P2.2
    Cls
    Lcd Wart_ac
    Lowerline
    V = Wart_ac * 0.001
    Wart_nap = Fusing(v , "#.&&&&")
    Lcd Wart_nap
    Waitms 100
    Loop
    End



    Czy ktoś mógł by mi pomóc w napisaniu programu w BASCOM 51 aby prawidłowo komunikował się z wspomnianym przetwornikiem?
    W tej chwili na wyświetlaczy pojawiają mi się chaotyczne wartości
    pozdrawiam

    0 4
  • #2 23 Mar 2012 06:38
    misiek068
    Poziom 10  

    Witam
    Jeśli Pana interesuje jeszcze ten temat może ja pomogę, bo będę pisał za kilka dni kod pod właśnie taką konfigurację, z tym że będzie to z dzielnikiem napięcia 1/10 (ale to mało istotne) bardziej istotne to, że od będzie w assemblerze.
    Jeśli Pan chce to dorzucę zdjęcia samego układu do którego bedzie to pisane.
    Pozdrawiam :)

    0
  • #3 23 Mar 2012 10:24
    maro76
    Poziom 8  

    Witam,

    Jestem jak najbardziej zainteresowany, niestety nie udało mi się samemu problemu rozwiązać, więc zacząłem przygodę z atmegami.
    Ale będę wdzięczny za wszelką pomoc.

    Pozdrawiam
    Marek N.

    0
  • Pomocny post
    #4 24 Mar 2012 22:37
    misiek068
    Poziom 10  

    Witam
    Wczoraj napisałem kawałek kodu w assemblerze. Raz pobiera dane i wystawia na dwa porty p3 p1 zgodnie z tym jak czytamy :)
    Zadawane jest napięcie 4.99V (zmierzone) przechodzi przez dzielnik 1/10. Człowiek który dał mi płytkę źle dobrał rezystory i nie da rady dostroić tego dzielnika na 1/10 wiec ustawiłem jakiś wynik i w po przejściu przez dzielnik jest 418mV (mierzone miernikiem) Uref=4,1V
    to binarnie daje 000110100010
    max187 odczytuje 000110110001 co po przeliczeniu równe jest 433mV
    wiec program działa poprawnie, a o to kod: :)

    ;MAX187

    sclk1 bit p2.6
    cs1 bit p2.5
    dout1 bit p2.4
    shdn1 bit p2.3

    sclk2 bit p0.0
    cs2 bit p0.1
    dout2 bit p0.3
    shdn2 bit p0.4


    ;---TU PROGRAM GŁÓWNY---
    call stop1s
    call stpocz
    call inicjalizacja

    mov r2,#8
    kolejny1:
    cpl sclk1
    nop
    nop
    nop
    cpl sclk1
    nop
    nop
    nop
    mov c,dout1
    rrc a
    djnz r2,kolejny1
    mov p1,a
    mov r2,#4
    kolejny2:
    cpl sclk1
    nop
    nop
    nop
    cpl sclk1
    nop
    nop
    nop
    mov c,dout1
    rrc a
    djnz r2,kolejny2
    ;--------dopelnienie do 16 bitów-----
    mov r2,#4
    wroc: setb c
    rrc a
    djnz r2,wroc
    mov p3, a
    sjmp $

    ;---ustawienie stanu poczatkowego ukl MAX187---
    stpocz: clr shdn1
    clr shdn2
    clr sclk1
    clr sclk2
    setb cs1
    setb cs2
    setb dout1
    setb dout2
    ret
    ;---inicjalizacja MAX187---
    inicjalizacja:
    setb shdn1
    nop
    nop
    nop
    cpl sclk1
    nop
    nop
    nop
    cpl sclk1
    clr cs1
    nop
    nop
    nop
    jb dout1, $
    ret

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


    $include (czasy.txt)
    END


    89S52 odczyt danych z MAX187 przez ISP 89S52 odczyt danych z MAX187 przez ISP 89S52 odczyt danych z MAX187 przez ISP

    0
  • #5 27 Mar 2012 21:47
    Spięcie
    Poziom 12  

    Dziękuję za pomoc i podzielenie się swoja pracą.
    pozdrawiam i dziękuję.

    0