TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: lolos123 en 04 de Junio de 2005, 09:33:00
-
Hola como va eso!
Estoy intentanto trabajar en ensamblador con el modo spi de un 16f876. Lo voy a poner como maestro y lo que observo es que no tengo impulsos de reloj por la patilla RC5/SCL.
Os comento lo que estoy haciendo a ver si lo hago bien
Sólo va a recibir datos,el pic no tiene que enviar nada por RC3/SD0 por lo que la configuracion que tengo de entradas y salidas es
RC3/SDO no la uso)
RC4/SDI entrada
RC5/SCK salida
Como tiene que ser maestro configuro RA5/SS* como entrada y en ADCON1 le indico que es digital. Esta patilla la pongo a nivel alto para indicarle que es maestro.
Una vez configuradas las patillas configuro SSPSTAT y SSPCON(frecuencia reloj,etc)
Una vez habilitado en SSPCON,5 ¿no debería enpezar ya a funcionar el SPI, es decir no debería tener ya señal de reloj en RC5/SCK y a la espera de que empiecen a entrar datos por RC4/SDI.
No se si lo he explicado bien, pero agradezco cualquier comentario
Gracias por vuestro tiempo.
-
Oye,
¿como sabes que no hay pulsos?
Estas viendo la salida en un osciloscopio?
Porque si solo lo estas simulando en el MPLAB......
Te recuerdo que el MPLAB no simula SPI (sobre todo no simula el clock
)
-
No estoy en MPLAB, estoy con un micro real y como no me funcionaba el conversor a/d que le quería conectar empecé a mirar si el micro le daba la señal de reloj.
Para comprobarlo le puse el voltímetro en la salida, si hay pulsos debería dar una tensión de salida que debería cambiar con la frecuencia ( segun la programas en SSPCON Fosc/4, Fosc/16...) y yo no tenía esa tensión.
Ya he solucionado el error, era de programacion, y en efecto tienes una tensión a la salida que cambia segun frecuencia. He visto tambien la salida en un osciloscopio y ahora si sale señal de reloj.
No se si te sirve de algo, pero a mi fue lo primero que se me ocurrio.
-
Hola, dices que ya solucionaste el problema. Necesito tu programa, ya que tengo el mismo problema. Quiero que mi PIC maestro reciba el dato pero nisiquiera funciona el SCK, todo me parece estar bien configurado, solo espero que se llene el SSPBUF, pero nada. ni el SCK envía su señal.
Agradecría mucho que publiquen el codigo en asm.
Saludos.
-
Que tal amigos!
Yo les voy a recomendar que se lean este (http://www.ate.uniovi.es/fernando/Doc2003/SED/SSP_SPI_BREVE.pdf) articulo muy bueno sobre el spi.
Como podran leer alli, la señal de reloj la genera el maestro, si y solo si, se escribe en el registro un dato en el registro sspbuf.
Aun cuando el maestro este en modo recepcion es necesario escribir algo en el sspbuf para hechar a andar el reloj.
Saludos
-
Hola.. sabes tengo yo tengo un problema tabien con los registros de desplazamiento pero yo lo que deseo es enviar datos solamente puedes por favor facilitar la parte de el programa donde manejas el mosulo SPI para entendeer como se hace esto ya que tengo varias dudas, una es no se como se genera la frecuencia de reloj y el pin que va hacia el latch clock que funcion tiene por favor ayudame ....
-
A ver a ver, aca hay conceptos equivocados:
Estoy intentanto trabajar en ensamblador con el modo spi de un 16f876. Lo voy a poner como maestro y lo que observo es que no tengo impulsos de reloj por la patilla RC5/SCL.
El pin de reloj de la transmisión SPI es el RC3/SCK/SCL, no el RC5. El pin del reloj es el numero 14 del encapsulado DIP y 11 en el QFN.
Sólo va a recibir datos,el pic no tiene que enviar nada por RC3/SD0 por lo que la configuracion que tengo de entradas y salidas es EnfurruñadoRC3/SDO no la uso)
RC4/SDI entrada
RC5/SCK salida
Te recomiendo que utilizes el SDO de todas formas y que lo uses como retroalimentación para comprobar la comunicación, el SPI puede funcionar como Full-Duplex asi que esto no va a demorarte la comunicación.
Aca otra vez te equivocaste los pines. SDI es la entrada de datos, SDO es la salida de datos y SCK es la salida de reloj (si el PIC es maestro) o la entrada de reloj (Si el PIC es esclavo). No hay que confundirse los pines SDA y SCL, que son los pines asignados para el I2C, que es otro protocolo de comunicación.
Como tiene que ser maestro configuro RA5/SS* como entrada y en ADCON1 le indico que es digital. Esta patilla la pongo a nivel alto para indicarle que es maestro.
El pin de SS no se utiliza cuando el PIC es maestro, sino que es una entrada que le indica a los esclavos cual debe comunicarse con el maestro.
Una vez habilitado en SSPCON,5 ¿no debería enpezar ya a funcionar el SPI, es decir no debería tener ya señal de reloj en RC5/SCK y a la espera de que empiecen a entrar datos por RC4/SDI.
Para que empieze a funcionar el SPI necesitas activar el bit SSPEN, el SSPCON es un registro de configuraciòn, no una flag de habilitación.
Mira, no quiero sonar ofensivo, pero deberías leerte toda la sección de SPI del datasheet del 16F87A antes de comenzar con este tipo de comunicación, porque de lo contrario vas a estar dando vueltas dias y dias tratando de hacer algo que esta muy bien explicado por la gente de Microchip. Además, ese vinculo que ha posteado RALF es muy interesante, y es fundamental conocer como funciona en general el SPI antes de largarse siquiera a configurar los bytes en el PIC. Bueno, es mi consejo, de todas formas aqui estaremos por si tienes nuevas dudas.
Saludos.