Autor Tema: Problemas CCS con PIC16f877  (Leído 1993 veces)

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

Desconectado diego1981

  • PIC10
  • *
  • Mensajes: 2
Problemas CCS con PIC16f877
« en: 18 de Julio de 2005, 14:34:00 »
He visto varios temas con problemas en interrupciones para el 16f877, personalmente no he logrado trabajar bien con la interrupción por recepción del puerto serial (int_RDA), pero con el 16f873 me funciona perfectamente.  Lo que quiero hacer con el programa es identificar el PIC en una red RS-485, si se recibe el protocolo correcto se empieza a recibir una trama de datos algo larga (aprox. 20 bytes). Lo primero que he hecho es tratar de recibir unos pocos caracteres (menos de 10) y devolverlos por el puerto serial, algunas veces el PIC se queda entrando a la interrupción infinitamente, otras se reinicia por el WDT y otras no hace nada.  En Proteus funciona perfectamente pero en el proto no. Si alguien conoce la causa del problema le agradecía compartirla.  Adjunto el código de prueba:

#include <16F877A.h>
#device adc=8

#FUSES WDT                      //Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=12000000,RESTART_WDT)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PC,enable=PIN_C5)

#int_RDA
RDA_isr()
{

if(kbhit()){
char String[30];
   fgets(String,PC);
   delay_ms(50)
   fputs(String,PC);
   
}
}



void main()
{

   port_b_pullups(TRUE);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_576MS);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   set_tris_c(0b11000000);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   fprintf(PC,"Inicia"Giño;

   while(1){
   restart_wdt();
   }

}

Desconectado PICKILLER

  • PIC10
  • *
  • Mensajes: 1
Re: Problemas CCS con PIC16f877
« Respuesta #1 en: 24 de Octubre de 2006, 18:51:07 »
HOMBRE!!! ando con un dolor de cabeza por que no he podido hacer funcionar el 16F877A con PICC, todas las pruebas realizadas con el F84 me funcionan bien, pero no hace nada el 16F877A... AYUDA POR FAVOR!!!.

Como tengo el Picstar plus antiguo, estoy trabajando con MPLAB 6.10 y el compilador de C que uso es el PCWH 3.203. Si programo en asembler me funciona. Si lo hago con C no funciona... AYUDA POR FAVOR


 

anything