Hola
estoy haciendo un circuito para recibir una señal 0-10v analógica y la he de converitr a digital con el PIC16f877a y con este mismo micro, he de sacar la salida digital para enviarla a un módulo con SPI. Tengo el diseño en Proteus y el programa del master lo he hecho con CCS C.
necesitaria poder probarlo con el SPI Debugger del Proteus, pero no me muestra nada. He conectado un osciloscopio en Proteus y veo que tengo señal de salida, pero no soy capaz de hacer funcionar el SPI debugger del proteus.
El programa del master es el siguiente:
Y el circuito en proteus es el adjunto.
El Vref lo he configurado a 3.5v y el RV1 es una entrada de 5v.
Si alguien me puede orientar en como configurar el SPI debugger o si estoy haciendo algo mas mal, se lo agradezco.
Un saludo a todos.
estoy haciendo un circuito para recibir una señal 0-10v analógica y la he de converitr a digital con el PIC16f877a y con este mismo micro, he de sacar la salida digital para enviarla a un módulo con SPI. Tengo el diseño en Proteus y el programa del master lo he hecho con CCS C.
necesitaria poder probarlo con el SPI Debugger del Proteus, pero no me muestra nada. He conectado un osciloscopio en Proteus y veo que tengo señal de salida, pero no soy capaz de hacer funcionar el SPI debugger del proteus.
El programa del master es el siguiente:
PHP:
#include <16f877a.h>
#device ADC=8
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4M)
#use SPI()
int valor=0x00;
void toma_adc(void){
// Lectura del canal 0
set_adc_channel(0);
delay_ms(1);
valor=read_adc();
delay_ms(1); //para que se estabilice
}
void SPI_module(){
int i=0;
//++++++++++++++++++Configura puertos analogicos++++++++++++++++++++++++++++++
//setup_adc( ADC_CLOCK_INTERNAL );
//setup_adc_ports( ALL_ANALOG ); // Ver que puertos van a ser analogicos
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_128);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_tris_a(0b11111111);
set_tris_b(0b00000000);
set_tris_c(0b10010010);
setup_spi(spi_master|spi_l_to_h|spi_clk_div_64);
//// seteo como deben estar cada uno de los pines del pic para empezar la comunicacion
output_high(pin_B1);
////seteo la transmision
delay_ms(500);
//inicbuffRX(); // Borra buffer al inicio
//inicbuffTX(); // Borra buffer al inicio
enable_interrupts(int_rda); // Habilita Interrupción RDA
// enable_interrupts(int_ext); // Habilita Interrupción RB0, PASO DE ALTO A BAJO
ext_int_edge(H_TO_L);
enable_interrupts(global); // Habilita interrupciones
//// mando dato al pote por spi para R=71.5K
//// mando primero el command byte y despues el dato
while(true){
//spi_write(5);
spi_write(valor);
}
}
void main() {
setup_adc(ADC_CLOCK_INTERNAL); //configura el conversor
setup_adc_ports(RA0_analog); //entrada 0 como analogica
do {
toma_adc();
SPI_module();
//output_b(valor);
}while(true);
}
Y el circuito en proteus es el adjunto.
El Vref lo he configurado a 3.5v y el RV1 es una entrada de 5v.
Si alguien me puede orientar en como configurar el SPI debugger o si estoy haciendo algo mas mal, se lo agradezco.
Un saludo a todos.
Adjuntos
Última edición por un moderador: