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

[Bascom] Hard spi, slave, chip select, przerwanie

wader_669 04 Maj 2010 22:25 2499 7
REKLAMA
  • #1 8036174
    wader_669
    Poziom 28  
    Robie projekt ktory sklada sie z jednego mastera i paru slavow.
    Problem: nie bardzo dziala mi odbieranie danych po spi. Dodam, ze odbieranie mialo byc po przerwaniu od spi.
    Gdy mam spiin w petli jest wszystko ok, jak odbieram w przerwaniu to odbiera co 2 byte. Na lcd pojawia sie 0 , 2 , 4 a powinno 0,1,2,3,4 itd.
    Master:
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Spi = Hard , Data Order = Msb , Master = Yes , Interrupt = Off , Polarity = High , Phase = 0 , Clockrate = 4 , Noss = 1
    
    $swstack = 40
    $hwstack = 40
    $framesize = 40
    
    Dim V As Byte
    V = 0
    Spiinit
    
    
    Do
    Spiout V , 1
    Wait 1
    Incr V
    Loop
    End
    


    slave
    
    
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    $swstack = 100
    $hwstack = 100
    $framesize = 100
    
    Config Lcd = 24 * 2
    Config Spi = Hard , Data Order = Msb , Master = No , Interrupt = On , Polarity = High , Phase = 0 , Clockrate = 4 , Noss = 0
    Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
    
    Dim V As Byte
    
    On Spi Odbieranie
    Enable Interrupts
    Spiinit
    Cls
    
    Do
    Locate 1 , 1
    Lcd V
    Loop
    End
    
    Odbieranie:
    Spiin V , 1
    Return
    


    Jakis pomysl?
  • REKLAMA
  • Pomocny post
    #2 8036355
    Ciapol
    Poziom 24  
    Być może przeczytanie mojego tematu pomoże: Link.
  • REKLAMA
  • #3 8036699
    wader_669
    Poziom 28  
    Pomoglo mi w sprawie chip select, dlatego musialem troche zmienic tresc jak widac:
    Cytat:

    Ostatnio zmieniony przez wader_669 dnia 05 Maj 2010 00:34, w całości zmieniany 4 razy


    Nadal nie odbiera poprawnie w przerwaniu.
  • REKLAMA
  • #4 8037063
    Ciapol
    Poziom 24  
    Dokładnie taki sam problem miałem ja w moim temacie. Przed wysłaniem zmiennej V w masterze wyślij jakąś zerową zmienną (np zmienną Temp As Byte, T=0). Przeanalizuj pod tym kątem mój temat.
  • #5 8054808
    wader_669
    Poziom 28  
    Testowalem i nie smiga. Testowalem wszystko jeszcze w symulatorze (proteus), ladnie pieknie dziala. Tylko w rzeczywistosci jest troche innaczej. Przetestuje na innych prockach. Mysle, ze odpinanie pinow przy wlaczonym zasilani moglo zaszkodzic.
  • REKLAMA
  • #6 8898975
    J_Bravo
    Poziom 27  
    udało ci się uruchomić układ?
    Mam taki sam problem. SPI odbiera co drugi bajt ;/
  • #7 8899486
    wader_669
    Poziom 28  
    Odpalilem tylko nie wiem czy mam jeszcze kod, jak bede w domu i znajde to wstawie tutaj.
  • #8 8903417
    J_Bravo
    Poziom 27  
    Jak byś mógł poszukać był bym dzwięczny.
    Swoją drogą nie mam pojęcia czemu ten programik nie działa.
REKLAMA