Цитата(A. Fig Lee @ May 29 2014, 17:08)

Ну если бас коллижн, значит там уже "0" на той ноге. Я так понимаю.
Резисторы подтяжки на + стоят?
Че вольтметр показывает ДО старта?
Резисторы подтяжки стоят на килооом на плюс.
На выводах всегда +5. Не проскакивает ни импульса (следит осцил в режиме выборки).
Далее код на CCS:
Код
#BYTE SSPCON1=0x0215
#BYTE SSPSTAT=0x0214
#BYTE SSPADD=0x0212
#BYTE SSPCON2=0x0216
#BYTE SSPCON3=0x0217
#BYTE SSPBUF=0x0211
#BYTE PIR1=0x0011
#BYTE PIE1=0x0091
#BYTE PIR2=0x0012
#BYTE PIE2=0x0092
#INT_SSP
void ssp_interrupts()
{ Tmp_SSP=TRUE;
clear_interrupt(INT_SSP);
}
#INT_BUSCOL
void ssp_collision()
{ Tmp_BUSCOL=TRUE;
clear_interrupt(INT_BUSCOL);
output_high(PIN_B5);
}
void main()
{setup_oscillator(OSC_16MHZ|OSC_INTRC);
SSPCON1=0b00101000; //I2C master
SSPCON3=0b00001000;
SSPSTAT=0b10000000;//slew rate control disabled
SSPADD=0x27; //100 kHz
bit_set(PIE1,3);//SSPIE=1 interrupt enable
bit_set(PIE2,3);//BCLIE=1 interrupt bus collision enable
enable_interrupts(GLOBAL);
delay_ms (500);
do{
bit_set(SSPCON2,0); //start SEN=1
do{}while(bit_test(SSPCON2,0));
SSPBUF=0x08;
do{}while(!Tmp_SSP); //SSPIF=? (interrupt=?)
Tmp_SSP=0;
SSPBUF=0x55;
do{}while(Tmp_SSP); //SSPIF=? (interrupt=?)
Tmp_SSP=0;
bit_set(SSPCON2,2); //stop bit
delay_us(100);
}while(TRUE);
}//main
Код на CCS дает старт бит и посылку байта адреса, затем повтор.
Нету у меня прав редактирования сообщений оказывается.

Запуск отладки на PickKit3 не показателен. Отладка на коде CCS тоже приводит к "перескоку" выполнения со строки do{}while(!Tmp_SSP); //после посылки адреса. Реально-же, байты адреса следуют друг за другом (без паузы в полсекунды).
И, да, в программе на XC8, прерывания по BUSCOL на самом деле не происходит. Но на выводах все равно +5 и тишина...