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

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

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

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

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

تایمر ها :

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

دسته اول :

·          تایمر پایه: 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 میلی ثانیه تسک مدیر اجرا می شود و این تسک هست که تصمیم میگیرید کدام تسک ها اجرا شود.
  • مهداد قاسمیان مشکانی
  • ۰
  • ۱

راه اندازی یک پروژه تحت سیستم عامل RTX :

از منوی Project --> New uvision Project یک پروژه جدید ایجاد کنید و در این مرحله میکرو مورد نظر (STM32F103RE) را انتخاب کنید.
پنجره انتخاب میکرو

در این مرحله با پیغام درخواست کپی فایل startupxxx.s مواجه می شوید آن را تایید کنید تا فایل Startup.s به کنار پروژه شما کپی و همچنین در پروژه اضافه گردد. (اسم این فایل با توجه به میکروی انتخابی می باشد)

برای مشاهده ادامه مطلب روی ادامه مطلب کلیک کنید.
  • مهداد قاسمیان مشکانی
  • ۰
  • ۰
CMSIS چیست ؟

CMSISیک واسط نرم افزاری بین برنامه نویس ، هسته آرم ، سیستم عامل و امکانات جانبی میکرو می باشد که کار با امکانات جانبی را ساده میکند و در ضمن زمان سازگاری کد در هنگام تعویض قطعه را کاهش میدهد.

هر شرکت برای میکروهای خود فایل های درایور cmsis را تولید کرده و شما کافی است آن ها را از سایت شرکت دانلود کرده و به پروژه خود اضافه کنید. نحوه کارکرد آن ها نیز در سایت می باشد.(به فایل ایجاد اولین پروژه مراجعه کنید)

فایل های cmsis مربوط به startup نیز در پوشه نصب نرم افزار کیل می باشد. به راهنما قسمت Folder structure و همچنین فایل ایجاد اولین پروژه مراجعه کنید.

نحوه استفاده از CMSIS ؟

تنظیمات و راه اندازی تمام درایور ها به صورت ساختارها تعریف شده اند.

کافی است این ساختارها را با گزینه های موجود پر کنید و دستور تنظیم در اساس آن ساختار را بدهید.

تمام این ساختارها و دستورات در هدر های هر درایور موجود است.

برای مثال میخواهیم GPIOB.0 را به عنوان خروجی و با مقاومت بالا کش با قابلیت کار تا فرکانس 50 مگا هرتز تنظیم کنیم.

اولا این که از کجا متوجه می شویم که میشود یک پایه را با این حالت تنظیم کرد و برای مثال آیا مقاومت پایین کش دارد یا نه؟ آیا یک پایه میتواند در حالت ورودی باشد یا نه؟ و یا مثلا یک تایمر چه مکاناتی دارد که ما بخاهیم توسط این ساختارها آن امکانات را انتخاب و برخی را فعال و برخی را غیر فعال کنیم؟ و از این قبیل سوالات، جواب این سوالات در دیتاشیت Reference  Manual قطعه موجود است.

ابتدا یک متغییر بر اساس ساختار تعریف میکنیم.

GPIO_InitTypeDef GPIO_Init_Structure;

GPIO_InitTypeDef  یک ساختار است که در هدر stm32f10x_gpio.h تعریف شده است.


سپس ساختار را مطابق با تنظیم دلخواه پر میکنیم.

GPIO_Init(GPIOB, &GPIO_Init_Structure);

دستور GPIO_Init در هدر stm32f10x_gpio.h تعریف شده است.


حرف آخر :

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

  1. دیتا شیت Reference Manual قطعه (RM0008)
  2. توضیحات درایور که در یک فایل راهنما در کنار درایور ها موجود است و همچنین در حال حاظر در لینک نیز موجود است. برای مطالعه درایور ها در لینک فوق به قسمت Modules رفته و سپس گزینه STM32F10X_Stdperiph_Driver را باز کنید.
  3. مطالعه هدر فایل های هر درایور. 
  4. مثال هایی که در دسترس است.
روند کار برای همه سخت افزارها چیزی مشابه با مثال بالا است.

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

سیستم عامل RTX:

سیستم عامل بلادرنگ در واقع یک سیستم عامل multi task است که برای عملیات بلادرنگ در نظر گرفته شده است و پارامترهای آن به گونه ای تنظیم شده اند که محدودیت های زمانی مورد نیاز را برآورده کند. سیستم عامل چهارچوبی را برای اجرای برنامه و ارتباط بین آنها فراهم میکند. سیستم عامل ها از لحاظ تعداد برنامه های در حال اجرا به دو دسته single task و multi task تقسیم می شوند. در سیستم عامل های multi task ، چندین برنامه آماده اجرا در حافظه وجود دارند که سیستم عامل زمان پردازنده را بین آنها تقسیم میکند. قسمتی از سیستم عامل که زمان پردازنده را بین این برنامه ها تقسیم کیند Scheduler نام دارد. Scheduler بر طبق الگوریتم زمان بندی تعریف شده ، یکی از برنامه های آماده برای اجرا را انتخاب میکند سپس کنترل اجرای دستورات ، توسط قسمت دیگری از سیستم عامل به عنوان Dispatcher به این برنامه ی انتخاب شده منتقل می شود.

ادامه توضیحات سیستم عامل و همچنین دستورات آن را از اینجا دانلود کنید.

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

MDK-ARM چیست؟ طریقه نصب و لایسنس آن چطور است؟

از ورژن 4 به بعد محصولات شرکت کیل همگی تحت عنوان MDK-ARM عرضه می شود.

MDK-ARM شامل :

  1. uvision IDE : که یک محیط برنامه نویسی به زبان C/C++/assembly و عیب یابی برای قطعات بر پایه هسته ARM7 ، ARM9 و Cortex می باشد.
  2. RL-ARM : یک سری کتابخانه هایی هستند که شامل RL-RTX , RL-TCPnet , RL-FlashFS , RL-USB , RL-emWIN می باشد.

نرم افزار Keil چیست ؟

نرم افزار Keil-uvision محیطی کاربر پسند برای کد نویسی ، عیب یابی و پروگرام کردن میکروهای با هسته ARM می باشد.

شرکت کیل البته دو سری نرم افزار دارد که یک سری برای برنامه نویسی میکرو های 8051 و سری دیگر برای کد نویسی میکرو های ARM می باشد.

برای نحوه کار کرد با محیط نرم افزار به راهنمای کامل آن که همراه با نرم افزار است در قسمت Uvision Guide Uvision IDE مراجعه کنید.


نصب نرم افزار :

آخرین ورژن در حال حاضر 4.72 می باشد که به سادگی با پر کردن یک فرم از سایت شرکت keil به نشانی www.keil.com قابل دانلود می باشد. نصب نرم افزار ساده و مشابه دیگر نرم افزار ها می باشد.

لایسنس :

از منوی File --> License Management کد CID (در بالا گوشه سمت راست) را کپی کنید و این کد را در نرم افزار کرک وارد کرده کد دیگری تولید می شود که کد جدید را در پایین همین پنجره در قسمت New License ID Code وارد کنید و کلید ADD LIC را بزنید. سپس پنجره را ببندید.

LicenseManagement


پس از نصب ، قبل از انجام هر کاری تنظیمات زیر را اجرا کنید:

در منوی Edit گزینه Configuration را انتخاب کنید و در پنجره باز شده تنظیمات را مطابق با عکس زیر قرار دهید :

تنظیمات

توجه : تنظیم Encoding به حالت Encoding in UTF-8 باعث نمایش صحیح متن فارسی در نرم افزار می شود.

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