اطلاعیه

Collapse
No announcement yet.

مشکل با برنامه نویسی برای ATmega8

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

    مشکل با برنامه نویسی برای ATmega8

    سلام من ی برنامه نوشتم که در آخر ی حلقه while(1) هستش که تو این حلقه باید دائما میکرو گوش به زنگ باشه که داده رو از ریموت کنترل بخونه
    تا اینجا مشکلی نیست و بدرستی کار میکنه
    حالا می خوام ی LED چشمک زن به برنامه اضافه کنم وقتی که میارمش تو این حلقه while(1) اگه دستورات led بالاتر باشه فقط چشمکزن و می تونم داشته باشمزو اگر دستورات مربوط به ریموت اول نوشته شده باشه فقط ارسال و دریافت داده رو دارم ، چطوری می تونم حلقه ای بنویسم که این ۲تا کار رو همزمان با هم انجام بده. خلاصه سوالم اینه که چطور میشه ۲تا حلقه بینهایت همزمان اجرا کرد، اصلا ممکن هستش یا نه

    #2
    پاسخ : مشکل با برنامه نویسی برای ATmega8

    استفاده از دستورات وقفه سی پی یو به شکل توابع delay باعث قفل شدن روند اجرای برنامه تا پایان delay میشه ( خداوند بنیانگذار این سبک برنامه نویسی رو قرین رحمت کند ! )

    برای ایجاد چشمک زن یا هر کار دیگری که وابسته به زمان هست باید از تایمر و اینتراپت overflow تایمر استفاده کنید .

    برای اون یکی کار که خوندن پورت سریال هست هم باید از اینتراپت های پورت سریال استفاده کنید ( تکرار دعای قبل برای بنیان گذار while true در main )

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

    دیدگاه


      #3
      پاسخ : مشکل با برنامه نویسی برای ATmega8

      ممنون از توضیحتون

      دیدگاه

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