Autor Tema: ERROR CON LA INTERRUPCION RDA  (Leído 451 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado RedOni12

  • PIC10
  • *
  • Mensajes: 6
ERROR CON LA INTERRUPCION RDA
« en: 22 de Mayo de 2022, 01:57:38 »
Cordial saludo, espero se encuentren bien
Tengo un problema al tratar de realizar el montaje físico de la parte de recepción y envío de datos desde el microcontrolador 16F690 y el pic 16F877A, me encontraba verificando el correcto funcionamiento de la interrupción RDA que tengo entendido se produce cuando el microcontrolador recibe a través del transmisor TX, esto haciendo uso de la función output_toggle(LED), pero noté que el LED no se apagaba y dejaba de escribirse haciendo uso del printf(), pareciendo que el programa queda encerrado en la interrupción RDA pese a continuar enviando datos al PIC, estoy haciendo uso del Pickit2, PIC CCS C, y los microcontroladores mencionados anteriormente. Agradezco cualquier respuesta.
Adjunto el codigo de prueba

#include <probandouartpic16f690.h>
#include <16F690.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOPROTECT

#use delay(internal=8MHz)
#use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_B5,bits=8,stream=PORT1)
#define LED PIN_C7
#include <stdio.h>
char data;
int1 hay_dato=0;

#INT_RDA
void  RDA_isr()
{
output_toggle(LED);
return;
}

void main()
{
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

   while(TRUE)
   {
//!   if(hay_dato==1){
//!   putc('a');
//!   hay_dato=0;
//!   }
//!
   if(data==1){
   for(int i=0;i<2;i++){
putc('A');
   }
   }
printf("Hola");
delay_ms(1000);
   }
   }

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:ERROR CON LA INTERRUPCION RDA
« Respuesta #1 en: 22 de Mayo de 2022, 02:27:17 »
En la interrupción tenés que leer el dato.

Código: [Seleccionar]
#INT_RDA
void  RDA_isr()
{
    getc();   
    output_toggle(LED);   
}


 

anything