آموزش الکترونیک

آموزش و ارائه اطلاعات ، تجریبات و نکات در زمینه الکترونیک

آموزش الکترونیک

آموزش و ارائه اطلاعات ، تجریبات و نکات در زمینه الکترونیک

پیوندهای روزانه

۱۶ مطلب در مهر ۱۳۹۲ ثبت شده است

  • ۰
  • ۰

مثال هایی برای درک بیشتر مطالب در این پست ارائه کردم.

در کنار هر مثال توضیح مختصری وجود دارد.

مثال ها به ترتیب شماره گذاری شده اند، پیشنهاد می شود که مثال ها را به ترتیب شماره ، تحلیل و مورد استفاده قرار دهید. چرا که توضحیات هر کدام به فهم مثال قبلی وابسته است.

برای دانلود روی پروژه مورد نظر کلیک کنید :

  1. دانلود پروژه GPIO
  2. دانلود پروژه GPIO2
  3. دانلود پروژه RTX1
  4. دانلود پروژه RTX2
  5. دانلود پروژه RTX-CMSIS1
  6. دانلود پروژه RTX-CMSIS2
  7. دانلود پروژه RTX-CMSIS3
  8. دانلود پروژه EXTI
  9. دانلود پروژه Timer
  10. دانلود پروژه PWM
  11. دانلود پروژه ADC
  • مهداد قاسمیان مشکانی
  • ۰
  • ۱

اطلاعات حافظه :

پس از کامپایل پروژه در پنجره Build Outpput ، گزارشی از مقدار حافظه اشغال شده برنامه ارائه می شود. که توسط آن می توان دقیق محاسبه کرد که حجم کد Flash و Ram مصرف شده چه مقدار است.


فرمول محاسبه مقدار حافظه مصرف شده :

مقدار RAM استفاده شده          = ZI_data + RW_data

مقدار ROM Flash استفاده شده = RW_data + RO_data +Code

برای مثال مقدایر در عکس بالا را محاسبه می کنیم :

RAM استفاده شده = 9620 + 196 = 9816 بایت

Flash استفاده شده = 9620 + 102600 + 60664 = 172886 بایت

  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

فعال سازی واسط Jlink برای پروگرام و دیباگ :

  1. در پنجره Target Option در زبانه ی Debug در سمت راست این زبانه استفاده از j-Link / j-Trace Cortex را انتخاب کنید. سپس دکمه setting را بزنید و اگر jlink به سیستم متصل باشد به طور اتوماتیک تنظمیات آن شناسایی می شود. در زبانه Utilites در قسمت Use Target driver for Flash Programming گزینه j-link / j-Trace Cortex را انتخاب کنید و سپس دکمه setting کنار آن را بزنید در پنجره باز شده کلید Add را بزنید و میکروی stm32f10x High-density Flash را انتخاب کنید. کلید ok را بزنید و خارج شوید.
  2. از منوی Flash برنامه را Download کنید. (بعد از آن یک بار میکرو را ریست کنید.)
  3. می توانید از منوی Debug عیب یابی را شروع کنید.
  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

اضافه کردن تسک به پروژه :

برای تعریف تسک، از تابعی با مقدار برگشتی از نوع void و مشخصه __task استفاده می کنیم. هر تسک باید به شکل تابعی با حلقه بی پایان باشد.

اگر تسکی به هر علتی کارش تموم شد باید در پایان از os_tsk_delete_self() استفاده کنید وگر نه سیستم هنگ میکند.

بهتر است یک تسک به عنوان تسک راه انداز برای دیگر تسک ها در نظر گرفته شود.

به مثال توجه کنید :

تسک

  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

تایمر ها :

به طور کلی تایمر به سه دسته تقسیم می شوند:

دسته اول :

·          تایمر پایه: TIM6 & TIM7

·          تایمر همه منظوره : TIM2,3,4,5

·          تایمر پیشرفته : TIM1 & TIM8

این تایمر ها فقط در امکانات با هم متفاوت هستند.

دسته دوم :

Watchdog Timer

دسته سوم :

Systic Timer

این تایمر در هسته های آرم سری Cortex وجود دارد و برای تیک زدن سیستم عامل استفاده می شود و یک تایمر ساده بالا یا پایین شمار میباشد.

 

این مطلب برای تایمر های دسته اول می باشد.

 

  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

استفاده از وقفه ها :

برای استفاده از وقفه ها به نکات و مراحل زیر دقت کنید :

  1. فایل های stm32f10x_it.c و stm32f10x_it.h را در کنار فایل های پوشه Source پروژه خود کپی کنید و سپس فایل stm32f10x_it.c را به پروژه اضافه کنید.
  2. این دو فایل حاوی توابع وقفه های سیستم هستند که شما به ترتیبی که گفته می شود میتوانید توابع وقه ی خود را به آن اضافه کنید.
  3. در فایل main خود حتما قبل از استفاده از os_sys_init (راه اندازی سیستم عامل) وقفه های خود را پیکره بندی و راه اندازی کنید.
  4. توابع وقفه خود را به صورت زیر می توانید در فایل stm32f10x_it.c اضافه کنید :
    void نام وقفه (void)
    {
    }
    و در فایل stm32f10x_it.h هدر تابع را اضافه کنید.
    نام وقفه ها در فایل startup_stm32f10x_hd.s موجود می باشد.
    در تابع وقفه توسط "دستور پاک کردن بیت وقفه" ، بیت وقفه را پاک کنید. این دستور در هدر هر درایور وجود دارد مثلا برای تایمر ، دستور TIM_ClearITPendingBit می باشد.
  5. به مثال شماره 8 توجه کنید.
  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

وقفه ها :

  1. وقفه های خارجی :
    16 خط وقفه وجود دارد که هر کدام از پایه ها را به دلخواه به این خطوط متصل می کنید سپس آن خط مورد نظر را به واحد NVIC متصل می کنید و برای آن سطح اولویت تعیین میکنید.
    البته به هر خط پایه های نظیر خود در هر پورت را می توان وصل کرد. به شکل زیر دقت کنید :
    External interrupts

  2. دیگر وقفه ها :
    برای فعال سازی وقفه های داخلی تایمر، ADC و ... فقط کافی است که وقفه مورد نظر را به واحد NVIC مصل کنید.
  3. واحد NVIC مسئول مدیریت همه وقفه های سخت افزاری است.
  4. به مثال شماره 8 مراجعه کنید.
  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

ساختار پورت:

پایه های I/O در چند حالت می توانند پیکره بندی شوند:

·          ورودی شناور (توابع ورودی و همچنین توابع دیگر)

·          ورودی بالاکش

·          ورودی پایین کش

·          آنالوگ

·          خروجی درین باز

·          خروجی بالاکش

·          توابع دیگر بالاکش

·          توابع دیگر درین باز

از پورت ها در چند کاربرد می توان استفاده کرد که در هر کاربرد یکی از حالت های بالا که مناسب آن کاربرد باشد را بر روی پورت پیکره بندی میکنیم. کاربرد های پورت:

·          به عنوان یک ورودی یا خروجی دیجیتال

·          به عنوان یک ورودی آنالوگ

·          به عنوان یک ورودی یا خروجی توابع دیگر

توابع دیگر (Alternate Function) :

منظور از توابع دیگر این است که یک پورت ها را می توان به امکانات جانبی هسته (تایمر ، usart و ...) وصل کرد. برای مثال پورت را به عنوان ورودی برای capture تایمر1 و یا به عنوان خروجی PWM تایمر8 استفاده کرد. البته برای هر پایه تعریف شده که به کدام یک از امکانات میتواند متصل شود.

 

  • مهداد قاسمیان مشکانی
  • ۰
  • ۱

تنظیمات سیستم عامل :

تنظیمات سیستم عامل در فایل RTX_Conf_CM.c قرار دارد. این فایل را باز کنید و در پایین آن زبانه Configuration Wizard را انتخاب کنید.

RTX_Conf_CM


  1. قسمت Task Configuration :
    Number of concurrent running task : تعداد حداکثر تسک های که با هم در اجرا خواهند بود را مشخص می کند.

  2. قسمت Tick timer Configuration :
    Hardware timer : تایمر سخت افزاری مورد نیاز سیستم عالم
    Timer clock value : مقدار فرکانس سیستم
    Timer tick value : زمان هر تیک سیستم عامل - پیش فرض 10000 میلی ثانیه

  3. قسمت System Configuration :
    Round-Robin Task switching : فعال سازی الگوریتم Round-Robin
    Round-Robin Timeout : حداکثر زمان Round-Robin برای هر تسک
  • مهداد قاسمیان مشکانی
  • ۰
  • ۰

تنظیم فرکانس پروژه :

  1. در پنجره Target Option در زبانه ی Target فرکانس کریستال متصل به میکرو را تنظیم کنید. (8 مگاهرتز)
  2. فایل RTX_CONFIG را باز کنید در زبانه پایین آن زبانه configuration eizard را انتخاب کنید.


    در قسمت Tick Timer Configuraton --> Timer clock value فرکانس کاری سیستم را بر روی 72000000 قرار دهید. در قسمت Tick Timer Configuration --> Timer tick value می توانید مدت زمان قطعه زمانی مدیریت تسک ها را تعیین کنید، مقدار آن را 10000 قرار دهید. پس هر 10 میلی ثانیه تسک مدیر اجرا می شود و این تسک هست که تصمیم میگیرید کدام تسک ها اجرا شود.
  • مهداد قاسمیان مشکانی