Autor Tema: Programar un MCP6S22 con el pic 18F4550  (Leído 3354 veces)

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

Desconectado discobolo

  • PIC10
  • *
  • Mensajes: 2
Programar un MCP6S22 con el pic 18F4550
« en: 30 de Mayo de 2011, 12:52:47 »
Soy nuevo en esto, y no se si he escogido bien el lugar donde colgar le tema, pero como ya he dicho soy novato jeje, asi todo...pido disculpas de antemano.
Mi situación es la isguiente:
Se me a pedido programar un amplificador(MCP6S22) de ganancia programable(de 1v/1v - 1v/32v) con el pic18f4550 mediante el bus SPI.
El problema está en que el componente no tiene librerias con las que pueda apoyar la programación, y configurando el dispositivo metiendo bit a bit tal y como dice en el libro de características lo único que he conseguido es cambiar el canal de entrada. La ganancia ni se inmuta, se mantiene fija en ganancia 1, lo que significa que que no se termina de configurar ya que esa configuración es la que dispone el dispotivo por defecto.

Si alguién me pudiese ayudar le estaría increiblemente agradecido.

Código: [Seleccionar]
#include <18F4550.h>
#fuses INTHS            //Selecciona el oscilador interno
#use delay(internal=8Mhz)   // Selecciona la velocidad del oscilador interno
#include <LCD.c>

////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void main()
{
setup_spi(spi_MASTER | spi_L_to_H | spi_clk_div_16| SPI_XMIT_L_TO_H);

WHILE(1)
{
if(input(PIN_A1))                          
      {
        output_low(PIN_A0);//Pongo a nivel vajo el pin RA0 para comenzar la comunicación con el dispositivo
        spi_write(0b01000000);//Escribo el registro de escritura en el dispositivo
        delay_ms(10);
        spi_write(0b00000111);//Configuro la ganancia del dispositivo
        delay_ms(10);
        output_high(PIN_A0);//Pongo a nivel alto el pin RA0 para dejar configurado el dispositivo
      }
if(input(PIN_A2))                          
      {
        output_low(PIN_A0);//Pongo a nivel vajo el pin RA0 para comenzar la comunicación con el dispositivo
        spi_write(0b01000001);//Escribo el registro de escritura en el dispositivo
        delay_ms(10);
        spi_write(0b00000111);//Configuro la ganancia del dispositivo
        delay_ms(10);
        output_high(PIN_A0); //Pongo a nivel alto el pin RA0 para dejar configurado el dispositivo        
      }
}
}


Dejo una captura de pantalla del esquemático que he realizado en proteus.



Para simular uso el entorno de proteus 7.7sp2
Gracias por decirme como puedo subir archivos, dejo un rar con lo que tengo para que lo puedan analizar mejor.
« Última modificación: 31 de Mayo de 2011, 05:36:26 por discobolo »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #1 en: 30 de Mayo de 2011, 14:22:30 »
  Para subir archivos tienes que ir a "Opcones adicionales", que está debajo del cuadro de escritura de mensaje
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #2 en: 30 de Mayo de 2011, 15:41:59 »
Hay que configurar el puerto analógico, ya que utilizas los pines del puerto A y por default son analógicos.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #3 en: 30 de Mayo de 2011, 20:49:57 »
  Es verdad, no me había percatado de lo que indica Suky. Los pines A1 y A2 los estás utilizando como entradas digitales, pero por default (luego de poweronreset) quedan configurados como entradas analógicas y por ello no te va a tomar los pulsadores de entrada.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #4 en: 30 de Mayo de 2011, 23:26:25 »
  Acabo de probar manejarlo (al MCP) con un 16f876A y la simulación falla exactamente en lo mismo. Me deja seleccionar la entrada, pero la ganancia no la cambia, tampoco me deja ponerlo en modo shutdown. Al comprobar la actividad del bus con el "SPI debugge", supuestamente están bien los datos enviados... Tal vez sea un bug de proteus que no simula bien dicho dispositivo.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado discobolo

  • PIC10
  • *
  • Mensajes: 2
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #5 en: 31 de Mayo de 2011, 05:14:50 »
Lo primero muchas gracias por contestar tan rápido.
En cuanto a los de que están configurados como análogicos, gracias por el aporte,pero es un simple programilla que hice para comprovar si podía cambiar de canal facilmente...y si que pude. Lo que verdaderamente me interesa es porque se puede configurar el cambio de canal y no la ganancia o el modo de trabajo.
Si fuese cierto lo de que es un error del propio proteus, necesitaría saber el graco de certeza de eso.
Pero asi todo espero que si que se pueda realizar esa configuración y que pueda ser simulado con proteus, no se, sería una pena rendirse...

Gracias por la ayuda a todos.

Ps: he subido una imagen del esquemático y un rar con lo que tengo.
« Última modificación: 31 de Mayo de 2011, 05:37:23 por discobolo »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Programar un MCP6S22 con el pic 18F4550
« Respuesta #6 en: 31 de Mayo de 2011, 09:27:07 »
  Podrías colocar un PIC y un MCP en un protoboard o placa experimental y probar si funciona. El proteus tiene varios fallos, así que no me extrañaría que esto sea un bug.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas