Tenho um polling SPI entre 2 18F, funciona legal quando o polling ocorre a cada 60ms, porém qdo eu diminuo o tempo do polling para 20ms o slave perde o sincronismo e trava tudo. O PIC mestre roda com cristal de 25MHz, e escravo com um de 20MHz. No Mestre tenho uma interrupção de timer que gera o polling. No escravo a recepção é feita no while do main. Depois de fritar o tico e teco, desconfio que o problema é a recepção do escravo, pois ela é feita no while do main, acho que ele não é rápido o suficiente para receber o polling, sendo assim, tentei habilitar a interrupção da SPI, mas sem sucesso. Segue o código onde habilito a interrupção
- Código: Selecionar todos
void ConfigInt (void)
{
IPEN = 1; //Habilita interrupção por prioridade
PEIE = 1; //Habilita Interrupção dos periféricos
SSPIF = 0; //Desenecessário
SSPIP = 1; //Configura interrupção MSSP de alta prioridade
SSPIE = 1; //Habilita interrupção por MSSP
GIE = 1; //Ativa interrupção Global
}
E o código do que eu faço qdo ocorre a interrupção
- Código: Selecionar todos
void interrupt HighISR()
{
if(SSPIF == 0)
{
//RecebeDadoSPI();
Led ^= 1;
SSPIF = 0;
}
}
Se alguem puder dar uma idéia, ou achar algum erro no código....
Valeu!!!