بنام خدا
باسلام
مرور بر مباحث کمی قبلی
خوب ما بعد از اشنایی به فیوزبیت ها و اشنایی با نحویه پروگرام کردن .. چند برنامه ساده مثل چشمک زدن LED و چند LED و در انتها روشن کردن سون سگمنت را ازمایش کردیم!
در اینجا متوجه شدیم،می توانیم با پایه ها پورت (که معمولا، در مجموع 8 پایه (وبعضی پورت ها،کمتر )) هستن،حالت ها مختلفی را به وجود بی اوریم .
یعنی پایه های پورت طوری هستن،که می توانیم به دلخواه خودمان،شکل ها مختلف را با انها به وجود بی اوریم،و در لحظه انها را خاموش و روشن کنیم..
گفته شده،هر پایه میکروکنترولر تقریبا می تواند سرعتی بین
100 تا 1 مگاهرتز در ثانیه داشته باشد! (بسته به فرکانس میکروکنترولر ) (البته این امار تقریبی اینجانب می باشد! البته بدون ازمایش!)
ازمایش سرعت پایه های میکروکنترولر
برای اینکه بتوانید بفهمید پایه میکروکنترولر چه سرعتی دارند
ابتدا DDRB.0=1 و PORTB.0=1 قرار دهید (در تابع اصلی،قبل از شروع حلقه) سپس اینطوری بنویسید.
(while(1
}
PORTB.0=1
;(delay_us(1
PORTB.0=0
{
*البته بهتر است،یک بار بدون تاخیر delay بنویسید و امتحان کنید،اگر جواب نگرفتید،تاخیر را قرار دهید.
سپس به کمک فرکانس متر(که بعضا مولتی متر ها ان را دارند) اندازه بگیرید ببینید چه سرعتی به شما میدهد ! (و در فرکانس ها مختلف ان را ازمایش کنید.
--
نحویه خواندن دستورات در میکروکنترولر
همانطور که قبلا به شما گفتیم،میکروکنترولر،توسط واحد به Program Counter یا PC یا شمارش گر برنامه .. (در صفحه 2 توضیح داده شده) . تک تک خط برنامه را به نوبت می خواند و اجرا می کند
که گفته شده،تقریبا برای خوانده هر یک دستور حدود 1 میکروثانیه طول میکشد!
تاثیر واحدهای درونی میکروکنترولر
اگر مطالب چند خط بالاتر (سرعت پورت ها) و نحویه خواندن و واکشی دستورات را اکنون در ذهن مرور کنید،متوجه میشوید،میکروکنترولر یک ضعف دارد! و ان این است،که شاید گاهی وقت ها نیاز باشد،خیلی فوری یک دستوری زودتر خوانده شود،شاید نیاز باشد بلافاصله اگر روی پایه از پورت اتفاق افتاد،میکرو متوجه شود و دستورات مطابق با ان را اجرا کند
یا حتا شاید نیاز باشد،با یک ایسی کار کرد،که نیاز به 2 یا 4 یا .. مگابیت سرعت باشد!
این ضعف ها رو میکروکنترولر،به کمک واحدهای درونیش مثل تایمر،اینتراپت،SPIیا USART و ... می توان پوشش داد!
مثلا فرض کنید یک مدار محافظه برای یک دستگاه ساخته شده!می خواهیم بعد از اندازه گیری ولتاژ،اگر ولتاژ از میزان مشخص شده بیشتر باشد! بلافاصله،میکرو دستگاه را خاموش کند! ما برای حل مشکل می توانیم از اینتراپت ها یا حتی تایمر ها استفاده کنیم،چرا؟!
واحد های درونی میکروکنترولر در واقع به نوعی یک ایسی می باشند! ایسی ها که خودشان به صورت مستقل کارشان را انجام میدهند! فرض کنید به واحد تایمر می گوییم،تا 100 میلی ثانیه بشمار و بعد ما را مطلع کن! وقتی برنامه به خط که برنامه راه اندازی اولیه برای تایمر نوشته شده،رسید.تایمر کارش را شروع میکند،میکرو نیز به سراغ باقی دستورات می رود و انها را اجرا می کند! این درحالی می باشد،که تایمر نیز در حال محاسبه و انجام کارهای خود به صورت مستقل می باشد!
یا فرض کنید،می خواهید،با یک قطعه،که البته رابط SPI هم دارد(یک نوع رابط رد و بدل کردن اطلاعات می باشد).با سه پایه با برنامه نویسی،اطلاعات را بگیرید یا ارسال کنید! فرض کنید می خواهید حروف ABCD را برای ایسی ارسال کنید! حال باید یک برنامه خیلی قوی نوشته شود،تا پایه های میکروکنترولر خودشان را براساس ،رابط ان ایسی در بی اورند! یعنی طوری پایه ها خودشان را به موقع خاموش و روشن کنند،که ایسی مقابل متوجه ان شود! خوب بعد از کلی برنامه نویسی و .. حروف ABCD رو ابتدا میکروکنترولر می گیرد،سپس پایه های خروجی را برارسال اطلاعات اماده میکنند،برای هر پروسس زمان زیادی تلف می شود!(که پایه در 1 میکرو ثانیه خاموش،سپس روشن و ..)در نهایت نیز با سرعت نسبتا کم،اطلاعات فرستاده میشود! اما! حال فرض کنید ما از رابط SPI استفاده کنیم(ایسی درونی!). حروف ABCD را برای واحد می فرستیم! سپس میکرو به سراغ باقی دستورات میرود،SPI نیز دستورات را با سرعت بالا می فرستد!
واحدها،در سرعت انجام دادن،کارها بسیار تاثیرگذارهستن،مخصوصا درجایی که نیاز به پروسس و پردازش بالا است! و می تواند بارها پردازشی زیادی را از سی پی یو بردارند،یا به کمک وقفه ها واحدها،سرعت عمل میکروکنترولر را افزایش بدهند
*لازم به ذکر است،در میکروکنترولر پیشرفته تر مثل ARM ، از واحد به نام DMA استفاده میشود،این واحد،به نوعی باعث شده،که نسب سیستم عامل به روی میکروکنترولر اسان تر شود! چون به کمک این واحد دیگر نیازی نیست،واحدها و .. به کمک سی پی یو اطلاعات رم را بخواند!خودشان مستقیم به کمک DMA می روند و اطلاعات را بر می دارند!که این خود بسیار بسیار به افزایش سرعت سی پی یو و راندمان کاری ان،کمک می کند.
انشالله ادامه خواهد داشت...
باتشکر.