Autor Tema: protocolo SPI para 877A y 876  (Leído 2030 veces)

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

Desconectado marcelo_gre

  • PIC10
  • *
  • Mensajes: 19
protocolo SPI para 877A y 876
« en: 08 de Julio de 2005, 15:28:00 »
Tengo un problema con relacion a mi comunicacion SPI, estoy intentanto comunicar un 877A con un 876, hago la configuracion de los registros SSPCON y SSPSTAT tanto para el 877A (maestro) y 876(esclavo) y lo q hace mi programa es manda 0x32 del maestro al esclavo y el esclavo cuando reciba este valor tiene q devolver 0x35 pero el esclavo se queda esperando a q el maestro mande el codigo luego verifique q el pin SCK no tenia señal....

Talvez me este equivocando en la configuracion de los registros SSPCON y SSPSTAT por favor alguien me podria ayudar con la configuracion del protocolo SPI......

Desconectado marcelo_gre

  • PIC10
  • *
  • Mensajes: 19
RE: protocolo SPI para 877A y 876
« Respuesta #1 en: 09 de Julio de 2005, 09:30:00 »
Lo siento por mandar la pregunta a dos subforos,pero como soy nuevo en esto no me di cuenta q primero lo mande al almacen de assembler sin querer y despues me di cuenta que las preguntas se realizaban en el subforo Todo en microcontroladores PIC, lo siento fue un error, y agradeceria si alguien me ayuda con la duda que tengo en la pregunta anterior... Gracias de ante mano....

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: protocolo SPI para 877A y 876
« Respuesta #2 en: 10 de Julio de 2005, 03:02:00 »
Bueno. Pon el código que corre en ambos PIC y le echaremos un vistazo por que asi no sabemos cual es el fallo

Desconectado marcelo_gre

  • PIC10
  • *
  • Mensajes: 19
RE: protocolo SPI para 877A y 876
« Respuesta #3 en: 12 de Julio de 2005, 08:38:00 »
Bueno aqui esta el codigo del maestro:

list p=16f877A
   include<p16f877A.inc>

   org 0x00
    goto inicio

   

;///////////declaracion de variables//////////7777777

retar_20   equ   0x30
retar1_20   equ   0x31
retar      equ   0x32
retar1      equ   0x33
retaro      equ   0x34
retar1o      equ   0x35
banderas   equ   0x36
rx_data      equ   0x37
tx_data      equ   0x38



W_Temp         equ   7Ch
Status_Temp      equ   7Dh
PClatch_Temp   equ   7Eh
FSR_Temp      equ   7Fh
   
   
;configuracion de registros
inicio
;iniciar puertos      
   bcf      STATUS, RP0         ;va al banco 0
   
   clrf   PORTA            
   clrf   PORTB            
   clrf   PORTC
   ;clrf   PORTD            
   ;clrf   PORTE            
            
   bsf      STATUS, RP0         ;va al banco 1
   
   movlw   b"00000111"         ;RA0,RA1,RA2,RA3,RA4,RA5,RE0,RE1,RE2 digitales
   movwf   ADCON1            ;Mover el valor al registro
   movlw   b"00001111"         ;0,1,2,3 entradas 4 salida
   movwf   TRISA            

   movlw   b"00000001"         ;0,1,2,3 entradas 4,5,6,7 salidas
   movwf   TRISB            
   
   movlw   b"10011000"         ;0,1,2,3,4,5,6 salidas 7 entrada
   movwf   TRISC            
   
   movlw   b"00000000"         ;0,1,2,3,4,5,6,7 salidas  entrada
   movwf   TRISD

   movlw   b"00000000"         ;0,1,2,3,4,5,6,7 salidas  entrada
   movwf   TRISE
   
;iniciar_perifericos

   bsf      STATUS,RP0         ;seleccion del banco 1
   movlw   b"00000000"   
   movwf   PIE1            ;permiso de interrupciones para el T1 y T2
   movlw   b"00000000"   
   movwf   SSPSTAT

   bcf      STATUS,RP0         ;va al banco 0
   movlw   b"00100010"   
   movwf   SSPCON
   
   clrf   STATUS
   clrf   PIR1
   clrf   PIR2

   
   
   goto   principal

   
;programa principal

principal

   movlw   0x32
   movwf   SSPBUF
finsp
   btfss    PIR1,PSPIF
   goto   finsp


no_spi
   btfss   PIR1,PSPIF
   goto   no_spi
   movfw   SSPBUF
   movwf   rx_data

   goto   $

END

Desconectado marcelo_gre

  • PIC10
  • *
  • Mensajes: 19
RE: protocolo SPI para 877A y 876
« Respuesta #4 en: 12 de Julio de 2005, 08:43:00 »
Y este es eñl del esclavo:


   list p=16f876
   include<p16f876.inc>

   org 0x00
    goto inicio

   

;///////////declaracion de variables//////////7777777

retar_20   equ   0x30
retar1_20   equ   0x31
retar      equ   0x32
retar1      equ   0x33
retaro      equ   0x34
retar1o      equ   0x35
banderas   equ   0x36
rx_data      equ   0x37
tx_data      equ   0x38



W_Temp         equ   7Ch
Status_Temp      equ   7Dh
PClatch_Temp   equ   7Eh
FSR_Temp      equ   7Fh
   
   
;configuracion de registros
inicio
;iniciar puertos      
   bcf      STATUS, RP0         ;va al banco 0
   
   clrf   PORTA            
   clrf   PORTB            
   clrf   PORTC
   ;clrf   PORTD            
   ;clrf   PORTE            
            
   bsf      STATUS, RP0         ;va al banco 1
   
   movlw   b"00000111"         ;RA0,RA1,RA2,RA3,RA4,RA5,RE0,RE1,RE2 digitales
   movwf   ADCON1            ;Mover el valor al registro
   movlw   b"00001111"         ;0,1,2,3 entradas 4 salida
   movwf   TRISA            

   movlw   b"00000001"         ;0,1,2,3 entradas 4,5,6,7 salidas
   movwf   TRISB            
   
   movlw   b"10011000"         ;0,1,2,3,4,5,6 salidas 7 entrada
   movwf   TRISC            
   
   ;movlw   b"00000000"         ;0,1,2,3,4,5,6,7 salidas  entrada
   ;movwf   TRISD

   ;movlw   b"00000000"         ;0,1,2,3,4,5,6,7 salidas  entrada
   ;movwf   TRISE
   
;iniciar_perifericos

   bsf      STATUS,RP0         ;seleccion del banco 1
   movlw   b"00000000"   
   movwf   PIE1            ;permiso de interrupciones para el T1 y T2
   movlw   b"00000000"   
   movwf   SSPSTAT

   bcf      STATUS,RP0         ;va al banco 0
   movlw   b"00110100"   
   movwf   SSPCON
   
   clrf   STATUS
   clrf   PIR1
   clrf   PIR2

   
   
   goto   principal

   
;programa principal

principal

no_spi
   btfss   PIR1,PSPIF
   goto   no_spi
   movfw   SSPBUF
   movwf   rx_data


   movlw   0x35
   movwf   SSPBUF
finsp
   btfss    PIR1,PSPIF
   goto   finsp


   goto   $

END

Desconectado marcelo_gre

  • PIC10
  • *
  • Mensajes: 19
RE: protocolo SPI para 877A y 876
« Respuesta #5 en: 12 de Julio de 2005, 08:44:00 »
agradezco su ayuda.