Autor Tema: Ayuda con comunicación ISP entre 2 Pics...  (Leído 3508 veces)

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

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Ayuda con comunicación ISP entre 2 Pics...
« en: 04 de Octubre de 2006, 16:34:32 »
Hola! Estoy intentando comunicar dos 16f877 mediante SPI utilizando las funciones propias de CCS pero necesito algo de ayuda pues no me funciona :mrgreen: El código en ambos micros es el siguiente:

PicMaestro:

#include <16f877.h> //pic a utilizar
#use delay (clock=4000000) //Fosc=4Mhz

void main (void)
{
SET_TRIS_C(0b00010000);
SET_TRIS_A(0);
OUTPUT_LOW(pin_a0);
delay_ms(5);
setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16);
SPI_WRITE('A');
while(TRUE) {};   
}

Pic_Esclavo:

#include <16f877.h> //pic a utilizar
#use delay (clock=4000000) //Fosc=4Mhz
#include<lcd.c> //libreria manejo lcd

void main(void)
{
SET_TRIS_A(0xFF);
SET_TRIS_B(0);
SET_TRIS_C(0b00101000);
setup_spi(SPI_SLAVE | SPI_H_TO_L | SPI_CLK_DIV_16);
do {} while (SPI_DATA_IS_IN() != (TRUE));
lcd_init(); //inicializa lcd
printf(lcd_putc,SPI_READ());
do{} while(TRUE);
}

Y las conexiones son las siguientes:

                    MAESTRO                        ESCLAVO

                    RC3/SCK <<======>> RC3/SCK
                    RC4/SDI <<======>>  RC3/SDO
                    RC5/SDO <<======>>  RC4/SDI
                    RA0         <<======>>  RA5/SS(negado)

No he montado el circuito pero lo he simulado en ISIS PROTEUS y no me  obtengo resultados en el LCD(este si que funciona seguro...). Me da el siguiente warning que no entiendo: Warning: [U1] at 39.0000u (PC=0x00F3): MSSP slave mode with no SS pin control and CKE==1 is ambiguous!....

Espero que alguien pueda echarle un vistazo al codigo para ver cual fue mi fallo o mostrarme  un código en CCS para SPI que funcione. Muchas gracias compañeros!!!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ayuda con comunicación ISP entre 2 Pics...
« Respuesta #1 en: 04 de Octubre de 2006, 16:45:05 »
Yo que tu reviso el esclavo

Al Porta<5> configuralo como DIGITAL, sino el RA5 no funcionará como CS del SPI.

RC5/SDO debe ser SALIDA
RC4/SDI debe ser ENTRADA
RC3/SCK debe ser ENTRADA

El TRISC debiera quedar  0b00011000
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Ayuda con comunicación ISP entre 2 Pics...
« Respuesta #2 en: 04 de Octubre de 2006, 17:05:12 »
Modifiqué el codigo: puse la linea SCK del esclavo como debia ser...entrada(craso error :shock:) e incluí en ambos codigos SETUP_ADC_PORTS(NO_ANALOGS); para asegurarme de que las lineas de PORTA son digitales en ambos. He conseguido eliminar otros cuantos warnings pero me sigue saliendo:

Warning: [U1] at 41.0000u (PC=0x00F3): MSSP slave mode with no SS pin control and CKE==1 is ambiguous!===>> en el PIC ESCLAVO

... creo que este es el error... Se que con CKP y CKE se configura el tipo de flanco de reloj que es donde estará el error pero con las funciones propias de CCS no se pueden modificar estos "flags" ¿? ¿O puede ser otro el error? MUCHAS GRACIAS!!!!!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ayuda con comunicación ISP entre 2 Pics...
« Respuesta #3 en: 04 de Octubre de 2006, 17:19:26 »
Modifiqué el codigo: puse la linea SCK del esclavo como debia ser...entrada(craso error :shock:) e incluí en ambos codigos SETUP_ADC_PORTS(NO_ANALOGS); para asegurarme de que las lineas de PORTA son digitales en ambos. He conseguido eliminar otros cuantos warnings pero me sigue saliendo:

Warning: [U1] at 41.0000u (PC=0x00F3): MSSP slave mode with no SS pin control and CKE==1 is ambiguous!===>> en el PIC ESCLAVO

... creo que este es el error... Se que con CKP y CKE se configura el tipo de flanco de reloj que es donde estará el error pero con las funciones propias de CCS no se pueden modificar estos "flags" ¿? ¿O puede ser otro el error? MUCHAS GRACIAS!!!!!

Fijate lo que hace SPI_H_TO_L en la función en el MPSIM y fíjate como quedan configurados los registros SSPCON, SSPTAT.

Respecto a los warnings de Proteus no te puedo ayudar porque realmente lo usé muy poco.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Ayuda con comunicación ISP entre 2 Pics...
« Respuesta #4 en: 04 de Octubre de 2006, 18:17:18 »
Cambié de flanco de subida a flanco de bajada en ambos códigos y la salida al LCD por una salida simple digital hacia leds y... vualá!!!!! La razón(de lo del tipo de flanco) nunca la sabré pues a saber que hay dentro de las funciones SPI :lol: pero weno.... y reconozco que pequé de vanidad al pensar que no era problema del LCD... De todas formas muchas gracias Maunix!!!!

Me gustaría hacer otra pregunta para quien me puda ayudar; no tiene nada que ver con este hilo pero creo que no tiene entidad para molestar a los foreros....  Manejo mas o menos bien ANSI C y acabo de cambiar de ASM a C para PIC; he instalado CCS y he integrado el compilador en MPLAB que me es mas familiar que el IDE de PCW. A riesgo de hacer una pregunta absurda: ¿cual es la forma de incluir tipos de datos?. Es decir, escribo(p.e.): char manu = 'M'; ó int x = 5; dentro del main() y el compilador me da el siguiente fallo: "A numeric expression must appear here"...¿? Gracias y salu2!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ayuda con comunicación ISP entre 2 Pics...
« Respuesta #5 en: 04 de Octubre de 2006, 23:11:46 »
Aquí tendrás poca suerte para una pregunta así, porque el tema no se relacinoa mucho.  Encima dice Comunicacion ISP en vez de SPI. jeje.

Andá a este link

http://www.todopic.com.ar/foros/index.php?topic=14156.msg84978#msg84978

Ahi tenes varios links sobre CCS, no te ayudo porque no lo uso
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)