Buenas tardes.
Estoy intentando simular con proteus un MCP41010 con un PIC con el siguiente codigo.
La configuración de las patillas es:
__
RB0 -> CS
RB1 -> SI
RB2 -> SCK
#include <16F876.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_B1, rcv=PIN_C7)
#include <input.c>
#include <ad8400.c>
void main() {
int value;
char pot_num;
setup_adc_ports (ALL_ANALOG);
setup_adc (ADC_CLOCK_INTERNAL);
init_pots ();
do {
set_adc_channel (0);
delay_us (100);
value = read_adc ();
printf ("\n\r\n\rInput 1: %2X ", value
);
if (NUM_POTS > 1) {
set_adc_channel (1);
delay_us (100);
value = read_adc ();
printf ("Input 2: %2X \n\r", value
);
do {
printf ("\n\rChange pot 1 or 2?"); } while ((pot_num!='1') && (pot_num!='2'));
}
else
pot_num = '1';
printf ("\n\rNew pot pot_value:"); value = gethex ();
set_pot ((pot_num-'1'), value);
} while (TRUE);
}
#define RST1 PIN_B0
#define CLK PIN_B2
#define DI PIN_B1
#define NUM_POTS 1
BYTE pots;
set_pot (int pot_num, int new_value) {
BYTE i;
BYTE cmd[2];
pots = new_value;
cmd[0] = pots;
cmd[1] = 0;
for(i=1;i<=6;i++)
shift_left(cmd,2,0);
output_low(CLK);
output_low(RST1);
delay_us(2);
for(i=1;i<=10;++i) {
output_bit(DI, shift_left(cmd,2,0));
delay_us(2);
output_high(CLK);
delay_us(2);
output_low(CLK);
delay_us(2);
}
output_high(RST1);
}
void init_pots ()
{
pots = 0;
}
Es un codigo que viene de ejemplo en PCWHD para el ad8400 pero deberia de funcionar para el MCP. No da errores al compilar, solo un warning.
No se si sera un error al usar el RS232, es la primera vez que uso perifericos con un pic y no tengo nada claro como usarlos
Si alguien me puede ayudar se lo agracedere
Gracias por todo
Eva