اطلاعیه

Collapse
No announcement yet.

دریافت دیتا از RX Interrupt در codevision

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

    دریافت دیتا از RX Interrupt در codevision

    سلام دوستان
    من Interrupt RX میکرو رو فعال کردم . مقدار اون رو =ی 8 بایت گذاشتم . دیتا رو براش می فرستم
    از طریق کامپیوتر اطلاعات رو میگیره مشخص که میگیره چون rx_buffer_overflow بعد از هر 8 بایت یک میشه و من دوباره صفرش میکنم ولی نمی دونم وقتی که rx_buffer_overflow یک شد چطوری 8 بایت دریافتی رو بخونم ؟ از کجا بخونم ؟
    در ضمن یه چیز دیگه من حرف C رو با کامپیوتر 8 بار براش می فرستم و جواب می ده . حالا بعد از خودندن دیتا برای مقایسه باید با چی مقایسه کنم ؟
    منظورم اینکه همون حرف C رو دارم بصورت دیتا یا معادل hex اون رو دارم یا معادل اسکی رو ؟ لطفا راهنمایی کنید .
    - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

    #2
    پاسخ : دریافت دیتا از RX Interrupt در codevision

    1- شما لازم نیست بایستی تا بافر سریال پر بشه بعد بخونی چون در این حالت بافر رو ریست میکنه و یه فلگ رو یک میکنه

    if (++rx_counter == RX_BUFFER_SIZE)
    {
    rx_counter=0;
    rx_buffer_overflow=1;
    };

    به جاش بهتره بافر رو از مقدار مورد نیازتون بیشتر بگیرید و با چک کردن این متغیر rx_counter رو چک کنید تا هر وقت داده کافی داشتین اونو بخونید. برای خوندن هم از تابع getchar استفاده کنید. خودش کارها رو انجام میده
    2- تابع getchar یه بایت برمیگردونه که شامل کد اسکی اون کاراکتریه که شما براش فرستادین.
    * کد اسکی؛ کد هگز؛ کاراکتر؛ یک بایت اینا همش یه چیزند ؛ بستگی داره به اینکه شما چطور بهش نگاه کنید مثلا کاراکتر 'A' دارای کد 65 دسیمال یا همون 42 هگز هست. شما میتونی اصلا اونو بعنوان یه عدد در نظر بگیری

    دیدگاه


      #3
      پاسخ : دریافت دیتا از RX Interrupt در codevision

      نوشته اصلی توسط mojalan
      1- شما لازم نیست بایستی تا بافر سریال پر بشه بعد بخونی چون در این حالت بافر رو ریست میکنه و یه فلگ رو یک میکنه

      if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };

      به جاش بهتره بافر رو از مقدار مورد نیازتون بیشتر بگیرید و با چک کردن این متغیر rx_counter رو چک کنید تا هر وقت داده کافی داشتین اونو بخونید. برای خوندن هم از تابع getchar استفاده کنید. خودش کارها رو انجام میده
      2- تابع getchar یه بایت برمیگردونه که شامل کد اسکی اون کاراکتریه که شما براش فرستادین.
      * کد اسکی؛ کد هگز؛ کاراکتر؛ یک بایت اینا همش یه چیزند ؛ بستگی داره به اینکه شما چطور بهش نگاه کنید مثلا کاراکتر 'A' دارای کد 65 دسیمال یا همون 42 هگز هست. شما میتونی اصلا اونو بعنوان یه عدد در نظر بگیری
      مرسی از پاسختون جوابمو گرفتم .
      - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

      دیدگاه

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