Всем привет!
При приеме данные по SPI (spi в режиме slave) никак не могу добится срабатывания прерывания, причем данные от слейва к мастеру передаются, 0b00001111 я вижу их при передачи (в первый раз я их вижу).
Для дебага я использую SPI DEBUG в протеусе в режиме master. Однако использование друго контроллера дает точно такие же результаты, прерывание никак не хочет срабатывать... Со скоростью работы мастера и слейва я тоже эксперементировал, эффекта никакого...
Подскажите в чем может быть причина такого поведения.
Тестируемый код:
Код
PHP код:
|
#if defined(__XC)
#include ‹xc.h› /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include ‹htc.h› /* HiTech General Include File */
#endif
void interrupt isr() {
PORTB = 0xFF;
if (SSPIF) {
PORTB = SSPBUF;
}
};
void main(void) {
/* Setup analog functionality and port direction */
ADCON1 = 0b00000110; //PORTA All Digital
TRISA = 0xFF; //PORT A AS INPUT
TRISB = 0x00; //PORT B AS OUTPUT
PORTA = 0x00; //PORT A LOW LEVEL
PORTB = 0x00; //PORT B LOW LEVEL
TRISC3 = 1; //SCLK AS INPUT
TRISC4 = 1; //MOSI AS INPUT
TRISC5 = 0; //MISO AS OUTPUT
SMP = 0; //Must be 0 in slave mode
CKP = 1; //
CKE = 1; //
SSPM3 = 0; //0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled
SSPM2 = 1;
SSPM1 = 0;
SSPM0 = 0;
SSPEN = 1; //SPI enable
SSPIE = 1; //Interrupt from MSSP
GIE = 1; //Global interrupt
SSPBUF = 0b00001111; //
while (1) {
}
}
|
Не нашел как сделать спойлер, тут не такого тега?