Реализация шины SMBus на базе микроконтроллера MSP430


 


BIC.B #SDA, DIR ; выставить лог. «1» ; на линии SDA BIC.B #SCL, DIR ; выставить лог. «1» ; на линии SCL ; проверка удлинения тактового сигнала ; (clock low extending), чтобы не опережать ведомое ; устройство MOV #008h, R11 MOV #02FFh, Rll
AND.В #SCL, R1C JZ clkex ; ожидание подтверждения (АСК) (SDA переходит ; в лог. «О») MOV #05F6h, Rll; счётчик таймаута для NACK

clkex

wack


MOV.В IN, R1C DEC Rll JZ busy

MOV.В IN, R1C DEC Rll JZ sbusy

AND.В #SDA, R1C

JNZ wack

BIS.В #SCL, DIR
RET


счётчик на ?50 икс удлинённый счётчик для батареи PS100Z-200 проверка шины

арбитраж - время

истекло

проверка линии SCL

проверка шины

таймаут NACK— отпра­вить бит Р и повторить попытку

маскировать всё, кроме SDA

приём АСК или ожидание таймаута

выставить лог. «О» на линии SCL


 


 
 

; Отправка стоповой последовательности ****************************************************** pbit

BIS.В #SDA, DIR

BIS.В #SCL, DIR

NOP

BIC.B #SCL, DIR


выставить лог. «О» на линии SDA выставить лог. «О» на линии SCL

выставить лог. «1» на линии SCL