Autor Tema: Comunicación SPI dsPIC33F con PIC16F877A  (Leído 2735 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado seba85

  • PIC10
  • *
  • Mensajes: 28
Comunicación SPI dsPIC33F con PIC16F877A
« en: 22 de Noviembre de 2013, 17:35:11 »
Hola quisiera que me ayudaran a poder comunicar un dsPIC33f como maestro y un PIC16F877A como esclavo. Estoy simulando en proteus la primera parte comunicacion dsPIC con el Debbuger SPI de Proteus pero no me sale nada... Algo estoy haciendo mal con el arranque del SPI porque no veo nada en el osciloscopio tampoco...
Código: [Seleccionar]
void Configuracion_SPI(void)
{
 
 TRISBbits.TRISB8=0; //Relog
 TRISBbits.TRISB9=1; //SDI
 TRISBbits.TRISB10=0; //SDO
 TRISBbits.TRISB11=0; //CS
//IFS0bits.SPI1IF=0;
// IEC0bits.SPI1IE=0;
_SPIEN=0; //desactivamos SPI
_MSTEN=1; //Modo Maestro
_MODE16=0;  //8 bits
_SPRE=0b110;
_PPRE=0b10;   // 5MHz
_FRMEN=0;  //Modo Frame desactivaco
_CKE=0;  //Dato enviado en el flancod descendente
_CKP=0;  //Estado del reloj bajo en IDLE
//_SMP no se utiliza porque solo envia
//_SPI1IP=0x7;
//IFS0bits.SPI1IF=0;
//IEC0bits.SPI1IE=1;
_SPIEN=1; //Activamos SPI

}

void Escribe_SPI(void)
{
   _RB11=0;  //CS
   asm("MOV #0x0C08,W7");
   asm("MOV [W7],W8");
   while(_SPITBF);
   asm("MOV W8,0x0248");
   while(_SPITBF);
   asm("MOV 0x0248,W8");
   
}



El dato se encuentra en la posicion de memoria 0x0C08 y la posicion 0x0248 es el registro SPI1BUF
Otro dato es que el dato a pasar esta en fraccional de 16 bits y yo necesito pasar 8 y despues los otro 8bits...
Que debería ver los LBS?
Espero su respuesta! Gracias!

Desconectado seba85

  • PIC10
  • *
  • Mensajes: 28
Re: Comunicación SPI dsPIC33F con PIC16F877A
« Respuesta #1 en: 29 de Noviembre de 2013, 13:04:00 »
Me respondo a mi mismo ya que nadie lo hace....  :( :( :( :( :(

Te olvidaste de configurar el PPS boludo.....   :D