monit_i2c.zip

monitor I2c

:arrow:J-Bravo : ja w tym ukladzie Uarta nie wykorzystuje do komunikacji z PCtem. Od razu zaznaczam zeby nie bylo nieporozumien. Nie jest to monitor i2c do komunikacji z PC.Jest to koncepcja "podsluchiwania" i2c w projekcie.Ja mialem potrzebe w swoim projekcie znac pewne stany ukladow ktore sie komunikuja za pomoca i2c. Jednak zrobic z tego monitor i2c komuunikujacy sie z PC jest bardzo latwo.Fakt ze UART jest zajety przy tej koncepcji.Rozwiazania sa dwa. Albo uzyc portu rownoleglego PC albo zamiast UARTA wykorzystac zewnetrzny rejestr przesuwny i wtedy UART moze przydac sie do komunikacji z PC.Jesli RS-232 nie nadazy z iloscia przechadzacych przez i2c danych to mozna uzyc USB. Jak znajde troche czasu to sobie zrobie taki monitor oparty na tej metodzie i wtedy moge wyslac schemat calego urzadzenia.

  • monit_i2c.zip
    • monit_i2c.JPG
    • monit_i2c.SchDoc
    • monit_i2c1.JPG
    • monit_i2c.txt


Download file - link to post

monit_i2c.zip > monit_i2c.txt

#define rst_rdI2C PORTA,5


;inicjacja rejestrow waznych dla monitoringu i2c
bcf rst_rdI2C
bsf rst_rdI2C
movlf b'00110110',SSPCON
movfw SSPBUF
bcf PIR1,SSPIF
;--USART
movlf b'11010000',RCSTA
;przerwania
movlf b'11100000',INTCON


;------------------------------------------------
;przerwanie obslugujace monitoring i2c (zawarte w makrze)
monitI2CINT MACRO
bcf rp0
movfw SSPBUF
bsf rp0
btfsc SSPSTAT,I2C_DATA
goto noAdresSlavei2C
;odebranie adresu - nowy uklad monitorowany
bcf rp0
bcf rst_rdI2C
bsf rst_rdI2C
movbb RCSTA,RX9D,c
rrf RCREG,w
movwf MTi2c_adres
bcf RCSTA,CREN ;wyrestowanie zawartosci UARTA
bsf RCSTA,CREN
;---------
;odebrany zostal Slave Adres ktory jest zawarty w MTi2c_adres
;***************************************
;obsluga nadejscia Slave adresu specyficzna dla projektu





;***************************************
goto end_monitI2CINT

noAdresSlavei2C
;-----------------------------------------
;-----------------------------------------
;-------- odebranie danej ---------------
;-----------------------------------------
bcf rp0
movwf MTi2c_dana
incf MTi2c_licznik_danych


end_monitI2CINT
bcf PIR1,SSPIF
ENDM


;****************************************************
;procedurka zabepieczajaca przed zawieszeniem sie monitora
;wstawiana w przerwanie timera wystepujacego co 20ms


;sprawdzenie czy monitor i2c chodzi
;jesli to reset tego monitora
btfsc error_mti2c ;flaga ta jest ustawiana w przerwaniu od i2c
goto noRST_mti2c
bcf rst_rdI2C
bsf rst_rdI2C
bcf RCSTA,CREN
bsf RCSTA,CREN
movfw SSPBUF
bcf SSPCON,SPEN
movlf b'00110110',SSPCON
bsf error_mti2c
goto RST_mti2c
noRST_mti2c
bcf error_mti2c
RST_mti2c

  Search 5 million + Products