Autor Tema: Problema con A/D + SPI  (Leído 2778 veces)

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

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Problema con A/D + SPI
« en: 02 de Agosto de 2009, 14:31:51 »
Saludos

Tengo un problema bien particular con programita para la U que tiene que hacer lo siguiente:

Tengo que comunicar dos PICS 16F877 utlizando el protocolo SPI, además el PIC maestro tiene que hacer una conversión A/D hasta acá todo bien, es decir, la conversión no tiene problema, el problema es el siguiente:

Supongamos que el adresh : "registro con que se carga el valor de la conversion" tiene una valor en binario de B'01001101' cuando cargo en el SSPBUF  el valor de la conversión "el buffer del modulo MMSP" del maestro y lo envio al esclavo me llega de la siguiente manera
B'10011010' comparando estos dos valores queda lo siguiente:

Adresh = B'01001101'
SSPBUF (esclavo) = B' 10011010'

Puedo detectar que durante la comunicación el valor del ADRESH fue rotado hacia la izquierda, la verdad le hechado mucha cabeza no se si habra una colisión. Pido ayuda no se que hacer.

Otra cosa, para probar que si estaba programando bien le mande un dato cualquira por ejemplo d'123' y si me llegaba correctamente, sera un problema de tiempos, agradesco una manito extra :mrgreen:.

Un saludo desde Pereira - Colombia   
Un saludo desde Pereira - Colombia

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Problema con A/D + SPI
« Respuesta #1 en: 03 de Agosto de 2009, 10:12:09 »
Si estas usando el proteus para probar el programa , debo decirte que no simula del todo bien el SPI, otra cosa que debes revisar es que el modo SPI del Maestro sea el mismo que el del esclavo, y finalmente que estes acciendo al registro ANSELH en el banco correcto.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Problema con A/D + SPI
« Respuesta #2 en: 03 de Agosto de 2009, 22:56:39 »
Saludos

Citar
Si estas usando el proteus para probar el programa , debo decirte que no simula del todo bien el SPI, otra cosa que debes revisar es que el modo SPI del Maestro sea el mismo que el del esclavo, y finalmente que estes acciendo al registro ANSELH en el banco correcto.

Sander pero que raro porque le mando un dato cualquiera y se funciona :mrgreen: cuando dices que no funciona del todo bien a que casos te refieres ?

Como asi que el modo maestro sea igual al esclavo?, yo lo tengo configurado todo igual exepto que la frecuencia del maestro es fosc/4 y la del esclavo es modo con reloj igual a la patilla SCK  y SS# a nive bajo "esta parte todavia no la entiendo bien"

Sander el registro ANSELH me parece que no viene con el 16f877, Sander muchisimas gracias por responder voy a seguir buscando a ver que puedo solucionar

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Problema con A/D + SPI
« Respuesta #3 en: 04 de Agosto de 2009, 11:34:56 »
Chenao por tu respuesta entiendo que si estas usando el proteus, en la version 7.2  note que cuando el esclavo envia datos al maestro , estos llegan como tu describes, lo del modo del SPI me refiero a que el SPI tiene 4 opciones,  para el estado inicial del reloj y el momento en el que se valida el dato, es decir, puedes puedes poner el estado inicial de la linea de reloj en 1 o cero , tambien puedes transmitir el dato en el flanco de subida o en el flanco de bajada, la combinacion de estas opciones hacen que el SPI tenga 4 modos de operacion, para ver en que modo esta configurado el SPI debes revisar el bit CKE del registro SSPSTAT y el bit CKP del registro SSPCON.

Queria decir que revises el banco correcto del registro ADRESH no del ANSELH, perdon por el error.

Sobre la linea  /SS, esa linea sirve para seleccionar el esclavo cuando tienes varios esclavos en el bus, antes de eviar el dato debes poner esa linea en cero, y cuando no envies datos la debes poner en 1

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Problema con A/D + SPI
« Respuesta #4 en: 04 de Agosto de 2009, 15:42:36 »
Saludos

Sander voy a mirar en cual de los 4 modos esta mi programa. Haber si te entendi, para que funcione bien tanto el esclavo como el maestro deben tener el mismo modo de funcionamiento?

Citar
Sobre la linea  /SS, esa linea sirve para seleccionar el esclavo cuando tienes varios esclavos en el bus, antes de eviar el dato debes poner esa linea en cero, y cuando no envies datos la debes poner en 1


Sander este terminal se activa directamente utilizando funciones de bits del microcontrolador esclavo es decir:

BCF      porta,5           o                        BSF    porta,5

o hay que abilitarlo desde el microcontrolador maestro. ayer estuve parte de la noche intentando solucionar el problema y nada :x . De todas maneras voy a seguir buscando debo tener algun error en alguna partesita. Un abrazo.

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Problema con A/D + SPI
« Respuesta #5 en: 04 de Agosto de 2009, 16:24:14 »
Saludos

Sander voy a mirar en cual de los 4 modos esta mi programa. Haber si te entendi, para que funcione bien tanto el esclavo como el maestro deben tener el mismo modo de funcionamiento?


Si



Sander este terminal se activa directamente utilizando funciones de bits del microcontrolador esclavo es decir:

BCF      porta,5           o                        BSF    porta,5

o hay que abilitarlo desde el microcontrolador maestro. ayer estuve parte de la noche intentando solucionar el problema y nada :x . De todas maneras voy a seguir buscando debo tener algun error en alguna partesita. Un abrazo.

Un saludo desde Pereira - Colombia

El maestro debe seleccionar al esclavo al cual quiere enviarle el dato poniendo en cero la linea _SS y despues copiar el dato que quiere enviar al SSPBUF, y esperar a que este se transmita para despues poner en 1 la linea _SS y deshabilitar al esclavo. Como lo estabas haciendo tu?

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Problema con A/D + SPI
« Respuesta #6 en: 05 de Agosto de 2009, 00:06:31 »
Saludos

Citar
El maestro debe seleccionar al esclavo al cual quiere enviarle el dato poniendo en cero la linea _SS y despues copiar el dato que quiere enviar al SSPBUF, y esperar a que este se transmita para despues poner en 1 la linea _SS y deshabilitar al esclavo. Como lo estabas haciendo tu?

Acá tengo un error no estoy habilitando ni desabilitando el terminal SS (porta,5)

Entonces deberia quedar más o menos así el programa

para el maestro y esclavo despues de haber configurado sspcon,sspstat, puerto etc

En el Maestro

Código: [Seleccionar]
repite
movf     conversión,0
bcf        porta,5           ; activo el esclavo
movwf   sspbuf
bcf        status,6
bsf        status,5           banco 1
btfss      sspstat,0
goto      $-1                 ; espero a que se traspase al SSPBUF
bcf        status,5
bsf        porta,5           ; desactivo el esclavo
call       retardo            ; retardo
goto     repite

para el ESCLAVO quedara así más o menos

Citar
repite
bcf       status,6
bsf       status,5         ; banco 1
btfss    sspstat,0
goto     $-1
bcf       status,5           ; banco 0
movf    sspbuf,0
movwf  portb            ; paso lo de que manda el micro Maestro al puertoB del micro Esclavo
goto     repite   

Sander ya lo probe y tampoco funciona. Yo creo que aquí no hay problema con el terminal ss. Sander muchas gracias por la explicación del terminal SS. Voy a seguir buscando mira que así se van encontrando errorsitos un abrazo.

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problema con A/D + SPI
« Respuesta #7 en: 07 de Agosto de 2009, 06:48:35 »
Chenao has probado a simularlo en el MPLAB? ahi veras mucho mejor como esta cada cosa en cada momento, a mi me saco de muchos errores que no hubiera descubierto de otro modo.

tapi8

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Problema con A/D + SPI
« Respuesta #8 en: 07 de Agosto de 2009, 18:19:50 »
Saludos

Gracias por contestar tapi8. Pero ya e intentado con el MPLAB y se también ocurre lo mismo es un problema de programación que todavia no he podido detectar. Un abrazo
Un saludo desde Pereira - Colombia