hola de nuevo
sigo con la comunicacion entre los pics ,esta ves un poco mejor ,
estoy mandando de un pic al otro una conversion ,cuando hago la conversion a 8bits la comunicacion se hace perfecta ; se envia 255 y llega 255.
el problema esta cuando hago la conversion a 10bits en el otro pic llegan numeros erroneos y no entiendo porque , solo cambio #device adc=8 por #device adc=10 con el primero funciona perfecto y con el segundo no.
PROGRAMA DEL TRANSMISOR
#include <16F877A.h> // Dispositivo a utilizar
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT // Fusibles
#use delay(clock=4000000)
#use rs232(stream=maestro,baud=9600, xmit=PIN_c6,rcv=PIN_c7,force_sw)
#define use_portb_lcd TRUE
#include "lcd.c"
void borra_lcd()
{
lcd_putc("\f");
}
/////////////////////////////////////// PRINCIPAL //////////////////////////////////////
void main()
{
int32 valor;
set_tris_B(0b00000000); // Puerto B configurado como salida
port_b_pullups(FALSE); // Desactivamos pull-ups del puerto B
setup_adc_ports(RA0_RA1_RA3_ANALOG); //Configura A0,A1 y A3 como entradas analógicas y Vdd como voltaje de referencia
setup_adc(ADC_CLOCK_INTERNAL); // Reloj para el conversor
set_adc_channel(0); // Seleccion del canal 0 (RA0)
lcd_init();
do
{
valor = read_adc();
delay_us(10);
printf(lcd_putc,"Conversion ADC");
delay_ms(2000);
printf(lcd_putc,"\nTENSION:%LU",valor);
delay_ms(2000);
borra_lcd();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
if (kbhit()){
printf(lcd_putc,"\fEnviando ~%LU",valor);
delay_ms(1000);
fputc(valor,maestro);
delay_ms(400);
};
}
WHILE(TRUE);
}
PROGRAMA DEL RECEPTOR
#include <16F877a.h>
#use delay(clock=4000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#define use_portd_lcd TRUE
#byte CMCON=0x01F /*Deshabilitamos Comparadores*/
#use rs232(stream=esclavo1,baud=9600, xmit=PIN_C1,rcv=PIN_C0,force_sw)
#include "lcd.c"
#use standard_io(A)
int32 c;
void main()
{
cmcon=7;
lcd_init();
//delay_ms(1000);
while(1){
if(kbhit(esclavo1)) {
c=getchar(esclavo1);
if (c>255)
output_high(PIN_A0);
delay_ms(1000);
lcd_putc("\f~ Esperando..\n");
lcd_putc("\n~ ESCLAVO 1");
delay_ms(2000);
printf(lcd_putc,"\fTension recivida\n ~%LU",c);
delay_ms(2000);
}
}
}