имею следующую проблемку в Proteus, какой бы адресс не передал мастер, слэйв (pic) ловит уходит в прерывание от mssp, не важно совпал ли адресс с SSPADD или нет. Адреса пробывал передавать I2C debuggerom и вручную (прикладыванием SDA и SCL на землю) передавал всевозможные комбинации, одна фигня программа входит в прерывание от MSSP. Что это? помогите пожалуйста уже какой день долблюсь.
Код:
|
;=================== Work Section ===============================================
ORG 0 ;Начинаем код по адресу 000h =
ENTRYPOINT GOTO Begin ;программа начинается с метки Begin =
ORG 8h ;Метка обработчика прерываний на 008h =
INTVECTORH GOTO IntHandler ;Сам обработчик на метке IntHandler =
ORG 18h ; =
INTVECTORL GOTO IntHandlerL ; =
Begin ; =
;================================================= ===============================
CLRF PORTC ;Очищаем порт С =
MOVLW B'00011000' ;конфигурация входов выходов порта С =
MOVWF TRISC ;настраиваем SDA и SCL на вход =
MOVLW B'00110110' ;включить MSSP, не управлять SCL, Slave =
MOVWF SSPCON1 ;режим i2c c 7-и разрядной адрессацией =
MOVLW B'11000000' ;разрешить высоко и низо приоритетные =
MOVWF INTCON ;прерывания =
CLRF IPR1 ;низкий приоритет перефирийным прер. =
MOVLW B'00001000' ;разрешить прерывания от MSSP =
MOVWF PIE1 ; =
MOVLW B'10000000' ;включить приоритетную сис-му прерываний=
MOVWF RCON ; =
MOVLW B'01111111' ;выключить таймер T0 =
MOVWF T0CON ; =
MOVLW B'00000000'
MOVLW B'10100010'
MOVWF SSPADD
CLRF TempReadCmpl
CLRF Flip
goto $
;0101010101010101010 I2C Interrupt Handler Protocol 10101010101010101010101010101
IntHandlerL ; 1
BTFSS SSPSTAT,R_W ; 1 |