Programar un MCP6S22 con el pic 18F4550

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:
#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.

thump_6471586esquematico.jpg


Para simular uso el entorno de proteus 7.7sp2
Dejo un rar con lo que tengo para que lo puedan analizar mejor.
 

Adjuntos

  • AMP.rar
    71 KB · Visitas: 15
Atrás
Arriba