CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Does the PIC16f877a's UART buffer flooded? Need help.

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
xyzsor



Joined: 19 Dec 2010
Posts: 12

View user's profile Send private message Visit poster's website

Does the PIC16f877a's UART buffer flooded? Need help.
PostPosted: Mon Jan 31, 2011 12:44 am     Reply with quote

Good morning everyone. I have a little problem that I need help with.

I connected my PIC16f877a to a PC via UART.
I could send data and the PIC would receive it.

However I notice if the PIC is not reading the data being sent (example it is doing a sequence) and the UART of the pic, gets flooded with data. The pic's program hangs up or something like that.

Example I send the data

"?H???A?XYZ??Sd,v??!??3|?Ad?A?XYZa?Saja"

What I want to happen is that when the pic receives an XYZ data it would start a running lights sequence.

Heres my code.
Code:

#include <16F877A.h>
#device adc=8
#FUSES NOWDT      //No Watch Dog Timer
#FUSES XT         //Highspeed Osc > 4mhz
#FUSES PUT        //Power Up Timer
#FUSES NOPROTECT  //Code not protected from reading
#FUSES NODEBUG    //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP      //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD      //No EE protection
#use delay(clock=4000000)             // Sets crystal oscillator at 20 megahertz
#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7) //Sets up serial port output pin & baud rate
#byte portb=6                /* defines memory location of register */

void main()
{
//declare variables

  int8 data[10];
  byte c,d;
  set_tris_b(0x00);

  delay_ms(500);
 

//test if pic is working

      portb = 0xFF;
      delay_ms(500);
      portb = 0x00;
      delay_ms(500);
      portb = 0xFF;
      delay_ms(500);
      portb = 0x00;
      delay_ms(500);



//wait for passphrase

   while (true)
   { 
       
       data[0] = getc();
         if (data[0]=='X')
         {
            portb = 0x01;
again:
            data[1] = getc();
            if (data[1]=='X')
               goto again;
                  
            if (data[1]=='Y')
            {
                  portb = 0x03;
                   data[2] = getc();
                     if (data[2]=='Z')
                  {
               
//start a running lights pattern
                           c = 0;                   /*initialize the count c equal to zero */
                             d = 0x01;              /* assigns the content of d to 0x01 */
                             while(c<8) {
                                  portb = d;        /*sends content of d to portb to turn-on the first LED*/
                                  delay_ms(80);  /* creates half second delay between LED on/off*/
                                  d = d << 1;       /* shifts the value of data to the left by 1 using                                                shift left operator(<<) */
                                  c++;                /* increments the value of c by 1*/
                           }
                  }
            }
          }   
      else
      portb = 0x55;    
      
   
     }
}

It works well if I sent data when the pic is just reading or waiting for the XYZ during the getc() part.

But if I send a stream of data while the pic is doing a running lights sequence, the PIC would hang up.

Whats wrong? Does the PIC get flooded? Is there a way to clear the PICS UART buffer before starting the getc() again?

Thanks in advance to everyone who helps.
Ttelmah



Joined: 11 Mar 2010
Posts: 19329

View user's profile Send private message

PostPosted: Mon Jan 31, 2011 3:33 am     Reply with quote

ERRORS......

Last answered on Saturday, in the thread 'continuous serial reception'.

Do a search.

Best Wishes
xyzsor



Joined: 19 Dec 2010
Posts: 12

View user's profile Send private message Visit poster's website

Thanks
PostPosted: Mon Jan 31, 2011 9:23 am     Reply with quote

Ttelmah wrote:
ERRORS......

Last answered on Saturday, in the thread 'continuous serial reception'.

Do a search.

Best Wishes



Nice!.. Thanks a lot.. just one word, fixed it all.. Errors.. Again thanks...
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group