Autor Tema: Comunicación pc - pic con rs232 en ccs  (Leído 2219 veces)

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

Desconectado diegocipo

  • PIC10
  • *
  • Mensajes: 23
Comunicación pc - pic con rs232 en ccs
« en: 17 de Enero de 2014, 16:36:13 »
Tengo un problema en la comunicación, puedo enviarle datos al pic, pero el pic devuelve cualquier cosa, además los puts y los printfs no los devuelve, solo algunas veces devuelve el putc correcto. ¿que puede ser?
Adjunto el codigo


char recep;

#int_RDA
void  RDA_isr(void)
{
recep=getchar();

}






 void main(void)
{
int valor;
valor=0;
TRISB=0xFF;
ANSEL=0x00;
setup_oscillator(OSC_4MHZ);
setup_adc_ports(NO_ANALOGS); //Selecciona terminales
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
while(1){// ciclo for infinito
if(input(SW1))   //lee entrada
{
output_high(LED);
delay_ms(1000);
output_high(LED1);
delay_ms(2000);
}
else {
output_low(LED);
delay_ms(300);
output_low(LED1);
delay_ms(300);
}

if(recep=='q'){
output_high(LED1);
delay_ms(1000);
puts("recibido");
disable_interrupts(global);
enable_interrupts(global);
}
 else {
output_low(LED1);
delay_ms(50);
printf("valor");
delay_ms(100);
putc(recep);
disable_interrupts(global);
enable_interrupts(global);
}
}
}

Desconectado camhost1

  • PIC12
  • **
  • Mensajes: 51
Re: Comunicación pc - pic con rs232 en ccs
« Respuesta #1 en: 18 de Enero de 2014, 13:53:09 »
Verifica que los baud rate y demas esten sincronizados, ya que por lo describes uno va a una velocidad diferente del otro.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Comunicación pc - pic con rs232 en ccs
« Respuesta #2 en: 18 de Enero de 2014, 16:02:01 »
podrías poner el código completo?

Saludos
-
Leonardo Garberoglio

Desconectado diegocipo

  • PIC10
  • *
  • Mensajes: 23
Re: Comunicación pc - pic con rs232 en ccs
« Respuesta #3 en: 21 de Enero de 2014, 00:09:24 »
 #include <16f887.h>
#fuses  NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP, XT
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #use delay(clock=8000000)
 #use rs232 (baud=9600, xmit=PIN_C6, rcv=PIN_C7, bits=8, parity=N)
 #BYTE TRISA=0x85
 #BYTE PORTA=0x05
 #BYTE TRISB=0x86
 #BYTE PORTB=0x06
 #BYTE TRISE=0x89
 #BYTE PORTE=0x09
#BYTE ANSEL=0x188
#define LED PIN_C0
#define SW1 PIN_B0
#define SW2 PIN_B1
#define LED1 PIN_C1

char recep;

#int_RDA
void  RDA_isr(void)
{
recep=getchar();

}






 void main(void)
{
int valor;
valor=0;
TRISB=0xFF;
ANSEL=0x00;
//setup_oscillator(OSC_8MHZ); para oscilador interno
setup_adc_ports(NO_ANALOGS); //Selecciona terminales
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
while(1){// ciclo for infinito
if(input(SW1))   //lee entrada
{
output_high(LED);
delay_ms(1000);
output_high(LED1);
delay_ms(2000);
}
else {
output_low(LED);
delay_ms(300);
output_low(LED1);
delay_ms(300);
}

if(recep=='q'){
output_high(LED1);
delay_ms(1000);
puts("recibido");
disable_interrupts(global);
enable_interrupts(global);
}
 else {
output_low(LED1);
delay_ms(50);
printf("valor");
delay_ms(100);
putc(recep);
disable_interrupts(global);
enable_interrupts(global);
}
}
}


 

anything