اطلاعیه

Collapse
No announcement yet.

عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

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

    عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

    سلام.

    دوستان یه مشکل کاملا عجیب برای من پیش اومده باورکنید نزدیک 2 روز تمام هست دارم کل اینترنت رو میگردم ولی جوابی پیدا نمی کنم،برای خودم هم عجیب هست،با توجه به این همه پروژه و بحث در مورد پورت سریال باز هم سوالی پیش بیاد که آدم نتونه جوابش رو پیدا کنه ،ولی خوب دیگه متاسفانه شده.
    من یک میکروی ATmega32 رو به وسیله ی یک مبدل FT232 به کامپیوتر وصل کردم،اینتراپت دریافت (RX Interupt) رو هم در میکرو فعال کردم، اما فقط بعضی از کاراکترها (کاراکترهایی ثابت و مشخص ، یعنی نه اینکه گاهی اوقات کار کنن گاهی نکنن، مثل اینتر و علامت های تعجب و ...) اینتراپت میکرو رو فعال می کنند.
    برای تست ، یک LED مجتمع 8 تایی رو به پورت A میکرو وصل کردم و برنامه ی زیر رو نوشتم :
    rx_buffer_size در برنامه ی زیر مقدار 8 را دارد.
    کد:
    // USART Receiver interrupt service routine
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    char status,data;
    status=UCSRA;
    data=UDR;
    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
      {
      rx_buffer[rx_wr_index]=data; 
      PORTA=16;
      delay_ms(100);
      PORTA=0;
      if (++rx_wr_index == RX_BUFFER_SIZE) {
        rx_wr_index=0; 
      PORTA=255;
      }
      if (++rx_counter == RX_BUFFER_SIZE)
       {
       rx_counter=0;
       rx_buffer_overflow=1;
       };
      };
    }
    کد بالا کد ساده ای هست که فقط همین رو برای تست در میکرو پروگرام کردم، سمت کامپیوتر هم از سه ترمینال یکی Hyperterminal و دیگری ترمینال Codevision و آخری یک ترمینالی که خودم با VB نوشته بودم امتحان کردم،نتیجه هر سه یکی بود، به طور مثال وقتی با Hyper وصل شدم،هر یک از اعداد رو که توی صفحه می زدم هیچ اتفاقی نمی افتاد،اما وقتی که به طور مثال اینتر می زدم (یا مثلا Shift + 1) LED پنجم روشن می شد(نتیجه ی قابل انتظار) و وقتی که 8 بار پشت سر هم اینتر رو می زدم یک بار کلیه LED ها روشن می شد(نتیجه ی قابل انتظار) ولی این دو نتیجه با سایر کاراکترهای عددی و حرفی اتفاق نمی افتد.
    متوجه شدم که تا کد اسکی 34 اینتراپت میکرو کار می کنه،ولی بیشتر از اون مثلا 49 که عدد یک هست رو اگر بخوای بفرستی اینتراپت میکرو فعال نمیشه!
    اطلاعات تکمیلی:کریستال 12 خارجی، باوودریت 9600
    یک بحث هایی در اینجا شده ولی انقدر این تاپیک موضوعات غیرمرتبط درش هست که من آخر نفهمیدم جواب گرفتن یا نه! : http://www.eca.ir/forum2/index.php?topic=28334.60

    ممنون میشم دوستان اگر کمکم کنید.

    #2
    پاسخ : عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

    خاطرم نبود دوستان

    همین مدار رو در پروتوس شبیه سازی کردم، و همین برنامه رو در میکروی داخل پروتوس پروگرام کردم، نتیجه اینکه بعد از اجرا هر کاراکتری که در Virtual Terminal پروتوس می زدم، باعث اجرای وقفه می شد. دقیقا همین کد! مثلا وقتی 12345678 رو می زدی، 8 بار LED پنجم روشن می شد و در نهایت همگی LED ها روشن می شدند.

    دوستان خواهشا در یابید منو! این اولین تاپیک من هست، امید منو رو ناامید نکنید!

    دیدگاه


      #3
      پاسخ : عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

      سلام دایی جان
      به نظر میرسه مشکل در تنظیم پورت سریال باشه.
      باید تعداد بیتهای داده،پاریتی و تعداد استوپ بیت در میکرو و PC یکسان باشه.
      اگه می تونی کل برنامه میکرو رو بگذار و فیوزبیتی که تو میکرو ریختی هم بزار تا مشکل پیدا بشه
      با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

      دیدگاه


        #4
        پاسخ : عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

        کد بالا کاملا مشخص هست و هیچ ارتباطی به مابقی قسمت های برنامه نداره، همین برنامه هم در پروتوس به درستی اجرا میشه ولی تو میکرو اصلی این طور اجرا میشه. تنظیمات پورت هم چندین مرتبه چک کردم ولی مشکلی نداشته.
        کریستال من 12 خارجی هست ، فیوزبیت ها رو هم این طور ست کردم :CKSEL3..0=1111 و إ¾CKOPT=0

        دیدگاه


          #5
          پاسخ : عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

          پس این جمله رو حذف کن دایی جان
          if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
          با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

          دیدگاه


            #6
            پاسخ : عدم دریافت بعضی از کاراکترها در اینتراپت دریافت پورت سریال

            سلام.مدارت نویز نداره؟!!!!!!!!
            همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

            دیدگاه

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