اطلاعیه

Collapse
No announcement yet.

استفاده از Rx Interrupt در CodeVision

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : استفاده از Rx Interrupt در CodeVision

    یه جورایی انگار اینتراپت یک بار بیشتر انجام نمیشه.. یا اون شرط if برقرار نمیشه..
    فکر میکنی مشکل از کجا باشه ؟ همه آرایه های مربوط به rx_buffer و همچنین رشته مرجع رو 9تایی انتخاب کردم، مثل مثالی که گذاشتی :read:
    به رویاهات فکر کن!!

    دیدگاه


      #17
      پاسخ : استفاده از Rx Interrupt در CodeVision

      بعضی اوقات هم همون یه دفعه رو هم اینتراپت نمیده :question: در واقع وقتی که یکم حلقه while رو شلوغ میکنم اینطوری میشه. ولی در بهترین حالت یک بار دیتا رو با مرجع مقایسه میکنه و ok میده
      به رویاهات فکر کن!!

      دیدگاه


        #18
        پاسخ : استفاده از Rx Interrupt در CodeVision

        یه بار روی نمایشگر سعی کن هر دیتایی میاد رو ببینی اون وقت متوجه ایراد میشی که از کجاست! به کاراکتر اخر دقت کن.
        شما باید وقتی می خوای 8 کاراکتر بفرستی بافر رو 9 تایی بگیری ولی وقتی 8 کاراکتر مورد نظر رو دریافت کردی در تابع اصلی وقفه بافر رو خالی کنی تا مجددا اماده دریافت داده از صفر بشه.
        اگر وقت کنم یه نمونه کد حتما براتون قرار میدم.
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #19
          پاسخ : استفاده از Rx Interrupt در CodeVision

          واقعا ممنون :smile:

          حالا این خالی کردن بافر هنگامی که تعداد کاراکتر مورد نظر دریافت شد چطور باید انجام بشه ؟؟

          با rx_buffer_overflow ؟ یا rx_counter ؟

          بعضی از مواقع حتی دفعه اول رو هم دریافت نمیکنه
          به رویاهات فکر کن!!

          دیدگاه


            #20
            پاسخ : استفاده از Rx Interrupt در CodeVision

            اینم کدی که در قسمت گیرنده گذاشتم :

            کد:
            unsigned char add[5]={"eric"};
            while(1)
            	{
            if(strcmp(add,rx_buffer)==0)
                {
                
                delay_ms(10);
                adc[0]=read_adc(5);
                adc[1]=read_adc(5);
                adc[2]=read_adc(5);
                adc[3]=read_adc(5);
                adc[4]=read_adc(5);
                adc[5]=read_adc(5);
                    for(i=0;i<6;i++)
                  {
                    mean=mean+adc[i];
                  }
                  mean=mean/24;
                  ftoa(mean,1,s);
                  puts(s);
                
                }
            	}
            به رویاهات فکر کن!!

            دیدگاه


              #21
              پاسخ : استفاده از Rx Interrupt در CodeVision

              این کد رو هم به تابع وقفه اضافه کردم ولی تغییری نکرد :cry:

              کد:
              if(rx_wr_index<=(RX_BUFFER_SIZE-1))
                  {
                  rx_buffer[rx_wr_index++]=data; 
                  }
                  else rx_wr_index==0;
              به رویاهات فکر کن!!

              دیدگاه


                #22
                پاسخ : استفاده از Rx Interrupt در CodeVision

                با سلام مجدد ،

                چطور باید بافر را بعد از دریافت دیتا خالی کرد ، تا میکرو آماده دریافت دیتای جدید بشه ؟ :smile:
                به رویاهات فکر کن!!

                دیدگاه

                لطفا صبر کنید...
                X