اطلاعیه

Collapse
No announcement yet.

اشکال در نمایش متغیر float در ارتباط spi

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

    #16
    پاسخ : اشکال در نمایش متغیر float در ارتباط spi

    دوستان عزیز فکر کنم من اینطوری به جواب نمیرسم اصلا انتخاب ارتباط SPI برای کار من درست نبود چون من فقط نیاز دارم که اطلاعات از یک میکرو در فاصله نزدیک (روی یک برد) برای میکروی دیگر ارسال شود ولی باید به این نکته اشاره کنم که میکروی گیرنده کاملا مشغول میباشد و عملیاتی زیادی باید پردازش کند( از تمام وقفه ها و تایمر های آن هم استفاده شده است) همچنین اطلاعاتی که از میکروی فرستنده به سمت این میکرو ارسال میشود تنها یک متغیر Float میباشد.(در میکروی فرستنده من مجبورم از یک تایمر و وقفه هم استفاده کنم)به نظر شما ارتباط I2C یا USART برای این کار مناسب تر نیست؟
    هر دو میکروی من ATmega32 و فرکانس آنها 8Mhz میباشد.
    به نظرم ارتباط سنکرون هم در این ارتباط نیاز نباشه من فقط میخواهم هر یک ثانیه اطلاعات از میکروی فرستنده به سمت گیرنده ارسال شود و تمامی پردازشهایی که من نیاز دارم در میکروی گیرنده روی مقدار Float دریافتی انجام شود.
    با تشکر

    دیدگاه


      #17
      پاسخ : اشکال در نمایش متغیر float در ارتباط spi

      فکر میکنم ارتباط I2C باعث دردسر بیشتری بشه. ولی خوب UART بهتره. اما از بابت تایمر: میتونین از یکی از همون تایمر ها یی که در برنامه استفاده کردین برای این کار هم بهره ببرین. چون قراره هر یک ثانیه یک بار فقط یک مقدار به گیرنده ارسال بشه میتونین این کار رو با همون SPI هم انجام بدین فقط باید مطمئن بشین که اطلاعات درست دریافت شده. مثلا اینجوری:
      در فرستنده هر 250 میلی ثانیه یکبار (و نه 1 ثانیه) چهار بایت مقدار float رو به همراه یک بایت اضافه که صحت داده ها رو مشخص میکنه برای میکروی دوم ارسال کنین. این بار زمانی خاصی روی فرستنده نمیذاره اما از طرفی میتونین مطمئن بشین که اگه یکی دو فریم هم خراب بود حداقل یکی درست به گیرنده میرسه.
      در گیرنده به محض دریافت یک بایت از spi یک متغیر رو صفر کنین. در یکی از تایمر ها مثلا یک تایمر 1 میلی ثانیه ای این متغیر یکی اضافه بشه. در صورتی که این متغیر به مقداری معادل مثلا 10 رسید و 5 بایت هم در بافر موجود بود این 5 بایت به عنوان یک اطلاع در نظر گرفته بشه و در صورت صحت مقدار استفاده بشه.

      اگر هر چهار فریم دریافتی پشت سر هم اشتباه دریافت شد مثلا یک آلارمی چیزی فعال بشه تا تغییری در سخت افزار یا نرم افزارتون ایجاد کنین. تا مشکل عدم ارتباط صحیح حل بشه. مثلا سرعت ارتباطی رو پایین بیارین.

      حتی میشه بعد از ارسال بایت پنجم بعد از یک میزان تاخیر چک بشه که آیا دیتا درست به گیرنده رسیده یا نه! برای این کار یک بایت دلخواه از مستر بفرستین به این شرط که پس از دریافت 5 بایت توسط گیرنده بایت checksum به مستر دوباره ارسال بشه. تا مشخص کنه که داده درست رسیده یا نه.
      چون گیرنده خودش نمیتونه اطلاعاتی رو بدون دریافت از مستر ارسال کنه ارسال یک بایت با هر مقداری از طرف فرستنده الزامیه.

      دیدگاه


        #18
        پاسخ : اشکال در نمایش متغیر float در ارتباط spi

        با تشکر فراوان از آقای رضا آقازاده و SOSAL که در این رابطه بصورت تخصصی و کامل مرا راهنمایی کردند امیدوارم تمامی دوستان از نکات مهم این موضوع حداکثر استفاده را ببرند.

        دیدگاه

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