راه اندازی تایمر LPC1768 و روش ساخت PWM روی پایه های IO

by | 2 خرداد, 1399 | lpc, میکروکنترلر, وبلاگ | 7 comments

راه-اندازی-تایمر-lpc1768

راه اندازی تایمر LPC1768 و روش ساخت PWM روی پایه های IO

by | 2 خرداد, 1399 | lpc, میکروکنترلر, وبلاگ | 7 comments

راه-اندازی-تایمر-lpc1768

آموزش STM32 یوبرد

شروع بازی ST

آموزش های رایگان STM32

فیلم های آموزش STM32

آموزش خصوصی STM32

آموزش AVR یوبرد

شاهکار 8بیتی اتمل

آموزش های رایگان AVR

فیلم های آموزش AVR

آموزش خصوصی AVR

آموزش میکروکنترلرهای ARM LPC یوبرد

یادگار فیلیپس

آموزش های رایگان LPC

فیلم های آموزش LPC

آموزش خصوصی LPC

آموزش ARDUINO یوبرد

جاده آسفالت میکروکنترلر

آموزش های رایگان ARDUINO

فیلم های آموزش ARDUINO

آموزش خصوصی ARDUINO

آموزش طراحی PCB یوبرد

تجسم دنیای الکترونیک

آموزش های رایگان طراحی PCB

فیلم های آموزش طراحی PCB

آموزش خصوصی طراحی PCB

آموزش لحیم کاری و مونتاژ و استاندارد IPC یوبرد

ساخت دنیای الکترونیک

آموزش های رایگان لحیم کاری

فیلم های آموزش لحیم کاری

آموزش خصوصی لحیم کاری

آموزش برنامه نویس زبان C و استاندارد MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش های رایگان برنامه نویسی

فیلم های آموزش زبان C

آموزش خصوصی زبان C

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش های رایگان سری SIM800

فیلم های آموزش SIM800

آموزش خصوصی SIM800

آموزش STM32 یوبرد

شروع بازی ST

آموزش های رایگان STM32

فیلم های آموزش STM32

آموزش خصوصی STM32

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

آموزش برنامه نویسی میکروکنترلر یوبرد، روح سیستم های دیجیتال

آموزش برد مدار چاپی یوبرد، بستر قطعات الکترونیکی

آموزش لحیم کاری و مونتاژ یوبرد، ساخت دنیای الکترونیک

آموزش ماژول های الکترونیکی یوبرد، شاخ و برگ درخت الکترونیک

اخبار جدید یوبرد در اینستاگرام

اخبار جدید یوبرد در اینستاگرام

راه اندازی تایمر LPC1768 به صورت رجیستری و ساخت موج PWM که در این نوشته بررسی می کنیم، همانند ساخت موج PWM با تایمر صفر در AVR است. در آنجا با استفاده از مد نرمال تایمر صفر، موج PWM ساختیم. به این روش که در روتین وقفۀ مقایسه و سرریز یک پایه را صفر و یک کردیم. در اینجا نیز وقفۀ تایمر صفر را فعال می کنیم و در آن پایۀ P0.21 را صفر و یک می کنیم. در این صورت یک شکل موج روی پایۀ P0.21 به وجود می آوریم. که می توانیم فرکانس و Duty Cycle آن را تغییر دهیم. در اینجا علاوه بر ساخت شکل موج PWM با Duty Cycle و فرکانس متغیر و استفاده از نمایشگر LCD کاراکتری، تایمر 1 را نیز به کار گرفته ایم. به این شکل که تایمر 1 را در مد عملیاتی کانتر فعال می کنیم و پالس روی پایۀ P0.21 را با آن می شماریم. در واقع شکل موجی را که با تایمر صفر روی پایۀ P0.21 به وجود می آید، به عنوان کلاک به ورودی تایمر 1 می دهیم.

ساخت شکل موج PWM با استفاده از روتین های وقفه و بدون استفاده از خروجی های PWM کار صحیحی نیست. چون در این روش یک موج PWM به صورت نرم افزاری ساخته ایم و صفر و 1 کردن پایۀ خروجی را به عهدۀ CPU گذاشته ایم. ساخت PWM به این روش که در این نوشته بررسی می کنیم، صرفاً جنبۀ آموزشی دارد. و قصد ما آموزش تایمر LPC1768 است. بنابراین در راه اندازی تایمر LPC1768 که در این نوشته بررسی می کنیم، از مدهای PWM استفاده نمی کنیم. آموزش PWM در LPC1768 موضوع نوشته های آینده خواهد بود. نمونه کد تایمر LPC1768 که در این نوشته بررسی می شود، در نرم افزار Keil نوشته شده و در فایل پیوست قرار دارد.

فیلم آموزش تایمر در STM32                         (فیلم آموزش ARM STM32 مقدماتی)

فیلم آموزش تایمر پیشرفته در STM32

فیلم آموزش تایمر در AVR                             (فیلم آموزش میکروکنترلرهای AVR مقدماتی)

فیلم آموزش تایمر پیشرفته در AVR

فیلم آموزش تایمر در آردوینو                          (فیلم آموزش آردوینو مقدماتی)

فیلم آموزش تایمر پیشرفته در آردوینو

عملکرد-تایمر-صفر-1-lcd

تصویر 1 – عملکرد تایمر صفر و 1 و LCD

تشریح عملکرد برنامۀ راه اندازی تایمر LPC1768

عملکرد برنامه به این صورت است که تایمر صفر با فرکانس 40 کیلوهرتز از مقدار متغیر TcStartPoint شروع به شمارش می کند و تا مقدار رجیستر مقایسۀ MR1 می شمارد. در هنگام شمارش با مقدار رجیستر MR0 برابر می شود. در هنگام برابر شدن با مقدار MR0، وقفۀ تایمر اتفاق می افتد و پایۀ P0.21 یک می شود. پس از آن تایمر تا مقدار MR1 می شمارد و هنگام برابر شدن با مقدار MR1، وقفۀ تایمر یک بار دیگر اتفاق می افتد. این بار پایۀ P0.21 صفر می شود و مقدار متغیر TcStartPoint در رجیستر TC قرار می گیرد. مطابق پیکربندی تایمر صفر، مقدار آن پس از برابری با MR1، ریست می شود و تایمر از مقدار TcStartPoint شروع به شمارش می کند و این شمارش تا همیشه ادامه می یابد. صفر و یک شدن پایۀ P0.21 به این طریق، باعث به وجود آمدن یک موج PWM می شود. فرکانس این موج PWM با تغییر مقدار TcStartPoint و Duty Cycle آن با تغییر مقدار MR0 تغییر می کند. در حلقۀ while، شرط های if فشرده شدن کلیدهای روی پایه های P2.10 تا P2.13 را بررسی می کنند. با فشرده شدن این کلیدها مقدار دو متغیر Freq و DutyCycle تغییر می کنند. در فرمول هایی که در ادامه آورده می شوند، مقدار رجیسترهای MR0 و TC تایمر صفر با توجه به تغییرات DutyCycle و Freq تغییر می کند. بنابراین می توان فرکانس و Duty Cycle موج PWM ایجاد شده را تغییر داد. در تصویر زیر می بینیم که با تغییر مقدار MR0، مقدار Duty Cycle و با تغییر TcStartPoint مقدار فرکانس تغییر می کند. در توضیح کدهای برنامه خواهیم دید که مقدار TcStartPoint مستقیماً در رجیستر TC تایمر صفر قرار می گیرد. در تصویر زیر نتیجۀ راه اندازی تایمر LPC1768 را می بینیم که تایمر صفر و 1 فعال شده اند.

ایجاد-موج-تایمر-صفر

تصویر 2 – راه اندازی تایمر LPC1768، ایجاد موج PWM با Duty Cycle و فرکانس متغیر

عملکرد تایمر 1 و رفرش شدن LCD

موج PWM خروجی پایۀ P0.21 با استفاده از یک سیم به عنوان کلاک به تایمر 1 داده می شود. تایمر 1 در اینجا در حالت کانتر پیکر بندی شده است. با هر پنج پالس کلاک ورودی، یک واحد به مقدار تایمر 1 اضافه می شود. چرا که مقدار تقسیم فرکانسی برای تایمر 1 برابر 4 انتخاب شده است. هر بار که مقدار تایمر 1 با رجیستر مقایسۀ MR2 برابر می شود، وقفۀ آن اتفاق می افتد. در این وقفه یک واحد به متغیر LcdRefCounter اضافه می شود. در حلقۀ while یک شرط وجود دارد که مقدار این متغیر را بررسی می کند. اگر مقدار آن برابر 2 یا بیشتر از 2 شود، LCD یک بار رفرش و وضعیت پایۀ P0.18 که به یک LED متصل است، تغییر می کند. همانند تایمر صفر که در هنگام برابری با مقدار MR1 ریست می شود، تایمر 1 نیز هنگام برابری با MR2، ریست می شود. البته تایمر صفر پس از آن از مقدار TcStartPoint شروع به شمارش می کند. ولی تایمر 1 از صفر شروع به شمارش می کند. رفرش شدن LCD در اینجا بدون این که از delay استفاده کنیم، پس از گذر زمان هایی اتفاق می افتد. برای درک بهتر این موضوع تاخیر با تایمر در میکروکنترلرها را مطالعه فرمایید.

عملکرد-تایمر-کانتر-1

تصویر 3 – راه اندازی تایمر LPC1768، تایمر 1 در حالت کانتر

نحوه راه اندازی تایمر LPC1768 و ساخت موج PWM

در این بخش به بررسی نمونه کد تایمر LPC1768 و ساخت موج PWM روی یکی از پایه های خروجی میکروکنترلر می پردازیم. در نمونه کد راه اندازی تایمر LPC1768 چهار بخش کلی وجود دارد. یک بخش مربوط به راه اندازی تایمر صفر است. تایمر صفر فعال می شود و تا مقدار رجیستر مقایسۀ 1 (یعنی MR1) می شمارد. همچنین در هنگام شمارش با مقدار رجیستر مقایسۀ صفر (MR0) نیز برابر می شود. برای هر دو مقایسه، وقفۀ تایمر فعال است. هر بار که مقدار تایمر با مقدار رجیسترهای مقایسه برابر می شود، وقفه اتفاق می افتد. در این وقفه پایۀ P0.21 صفر و یک می شود. این بخش در تصویر 2 ترسیم شده است. یک بخش مربوط به راه اندازی تایمر 1 است. تایمر 1 در حالت کانتر با لبۀ بالا روندۀ پالس اعمال شده به پایۀ CAP1.0 و تقسیم فرکانسی 4 تنظیم می شود. در اینجا تایمر 1 با هر پنج پالس خروجی P0.21 یک واحد تا مقدار رجیستر مقایسۀ شمارۀ 2 می شمارد. در این هنگام وقفۀ تایمر 1 نیز اتفاق می افتد. در وقفۀ تایمر 1 به مقدار متغیر LcdRefCounter اضافه می شود. یک بخش مربوط به تغییر Duty Cycle و فرکانس موج PWM روی پایۀ P0.21 است. این بخش با خواندن پایه هایی که روی آنها کلید قرار دارد، انجام می شود. بخش دیگر نیز نمایش در LCD کاراکتری است که فرکانس و Duty Cycle موج PWM نمایش داده می شود. با هر بار برابر شدن LcdRefCounter با 2، یک بار LCD رفرش می شود و متغیر LcdRefCounter صفر می شود. که این موضوع در تصویر زیر مشخص است. در ادامه به بررسی کدهای نوشته شده می پردازیم.

شمارش-تایمر-صفر-1

تصویر 4 – شمارش تایمر صفر و 1 و تأثیر آن بر متغیر LcdRefCounter

فراخوانی کتابخانه ها و تعریف متغیرهای عمومی

در ابتدا کتابخانه های مورد نظر را فراخوانی می کنیم. کتابخانۀ Secondgpio.h دارای توابعی برای مقداردهی به رجیسترهای پورت های IO و خواندن از آنهاست. این کتابخانه دارای سه تابع است. تابع Config که برای ورودی و خروجی کردن و همچنین تعیین مد کاربری پایه های میکروکنترلر است. تابع Write که برای نوشتن روی پایه ای است که خروجی تعریف شده است. تابع Read نیز برای خواندن از پایه ای است که در حالت ورودی قرار دارد. توابع این کتابخانه در نوشتۀ راه اندازی ADC در AVR توضیح داده شده اند. کتابخانۀ delay.h دارای توابعی برای ایجاد تأخیر است. کتابخانۀ CLCD.h نیز کتابخانه ای برای نمایش در LCD کاراکتری است. دو متغیر 16 بیتی نیز تعریف شده اند. متغیر TcStartPoint برای تغییر فرکانس در راه اندازی تایمر LPC1768 است و متغیر LcdRefCounter یک شمارنده برای زمان رفرش کردن LCD است. در نوشتۀ کلاس حافظه در C و C++ و انواع متغیر در C، دلیل volatile تعریف کردن آنها گفته شده است. پروتوتایپ روتین های وقفۀ تایمر صفر و تایمر 1 نیز نوشته شده است.

#include <stdio.h>
#include "delay.h"
#include "Secondgpio.h"
#include "CLCD.h"

volatile unsigned int TcStartPoint=0 , LcdRefCounter=0;

void TIMER0_IRQHandler(void);
void TIMER1_IRQHandler(void);

 

تنظیمات اولیۀ پایه ها، راه اندازی تایمر LPC1768 و LCD

در ابتدای تابع main چند متغیر تعریف کرده ایم. آنها را در ادامه بیشتر توضیح می دهیم. پس از آن با تابع Config پایه های P0.21 و P0.18 را به صورت خروجی Push-Pull تنظیم می کنیم. در سطر بعد با مقدار دهی به رجیستر  PINSEL3، پایۀ P1.18  را در حالت کاربری CAP0.1 قرار می دهیم. با این کار، این پایه را به صورت ورودی برای تایمر صفر تعیین می کنیم. در چهار سطر بعد نیز پایه های P2.10 تا P2.13 را ورودی با مقاومت پول آپ داخلی تنظیم می کنیم.

char LcdStr[16], Counter=0;
static int Freq = 1000;
unsigned char DutyCycle=50;
	
Config (P0_21, 1, 1); // Set P0.21 As Output & Pushpull Mode
Config (P0_18, 1, 1); // Set P0.18 As Output & Pushpull Mode
	
LPC_PINCON->PINSEL3=(1<<5)|(1<<4); // Set P1.18 As CAP1.0
	
Config (P2_10, 0, 1); // Set P2.10 As Input and Pullup
Config (P2_11, 0, 1); // Set P2.11 As Input and Pullup
Config (P2_12, 0, 1); // Set P2.12 As Input and Pullup
Config (P2_13, 0, 1); // Set P2.13 As Input and Pullup

 

اتصالات-راه-اندازی-تایمر-کانتر

تصویر 5 – اتصالات لازم برای راه اندازی تایمر LPC1768 در این نوشته

در مرحلۀ بعد تقسیم فرکانسی تایمر صفر را 624، مقدار  رجیستر مقایسۀ 1 را 2000 و مقدار رجیستر مقایسۀ صفر را 1000 تنظیم می کنیم. با مقداردهی به رجیستر MCR وقفۀ تایمر صفر را برای مقایسۀ صفر و 1 فعال می کنیم. و با مقدار دهی به بیت چهارم آن، حداکثر شمارش تایمر صفر را برابر رجیستر MR1 قرار می دهیم. بنابراین تایمر حداکثر تا مقدار 2000 می شمارد. در سطر بعد با تابع NVIC EnableIRQ وقفۀ تایمر صفر را فعال می کنیم. و با مقداردهی به بیت صفرم رجیستر TCR، فرمان شروع شمارش را می دهیم.

برای تایمر 1 نیز مقدار تقسیم فرکانسی را برابر 4 و رجیستر مقایسۀ شماره 2 را برابر 1 قرار می دهیم. با مقداردهی به بیت صفرم رجیستر CTCR، تایمر 1 را کانتر با لبۀ بالا روندۀ پالس اعمالی به پایۀ CAP0.1 تنظیم می کنیم. همچنین با رجیستر MCR وقفه و ریست تایمر 1 را در مقایسۀ شمارۀ 2 تنظیم می کنیم. بنابراین تایمر 1 از صفر تا 1 می شمارد و پس از آن ریست می شود. در پایان نیز همانند تایمر صفر وقفه و شروع شمارش را فعال می کنیم. در چهار سطر بعدی نیز LCD کاراکتری را راه اندازی می کنیم و UBOARD.IR را به مدت 1 ثانیه نمایش می دهیم.

// Set and Run Timer0
LPC_TIM0->PR =  624;  // Prescaler=624 -> Timer Frequency = 40KHz
LPC_TIM0->MR0 = 1000; // Match Register 0 = 1000
LPC_TIM0->MR1 = 2000; // Match Register 0 = 2000
LPC_TIM0->MCR = (1<<4)|(1<<3)|(1<<0); // MR0 & MR1 Interrupt and MR1 Reset
NVIC_EnableIRQ( TIMER0_IRQn ); // Enable Timer0 Interrupt
LPC_TIM0->TCR = (1<<0); // Enable Counting

// Set and Run Timer1
LPC_TIM1->PR = 4; // Prescaler=4
LPC_TIM1->MR2 = 1; // Match Register 2 = 1
LPC_TIM1->CTCR = (1<<0); // Counter Mode with Rising Edge of CAP1.0
LPC_TIM1->MCR = (1<<7)|(1<<6); // MR2 Interrupt and Reset
NVIC_EnableIRQ( TIMER1_IRQn ); // Enable Timer0 Interrupt
LPC_TIM1->TCR = (1<<0); // Enable Counting

	
lcd_init(16,2); // LCD Initialization
lcd_clear();
lcd_puts("UBOARD.IR");
delay_ms(1000);
lcd_clear();

 

وقفه های تایمر، ایجاد PWM و تعیین زمان رفرش LCD

در روتین وقفۀ تایمر صفر برای تشخیص این که کدام مقایسه اتفاق افتاده از دو شرط if استفاده می کنیم. در این دو شرط بیت های صفر و 1 رجیستر IR تایمر صفر را بررسی می کنیم. اگر وقفۀ تایمر ناشی از مقایسۀ صفر باشد، پایۀ P0.21 را 1 می کنیم. و اگر ناشی از مقایسۀ 1 باشد، آن پایه را صفر می کنیم. با این روش با راه اندازی تایمر LPC1768 در مدهای غیر از PWM، یک موج PWM روی پایۀ P0.21 می سازیم.

نحوه-تولید-تایمر-صفر

تصویر 6 – راه اندازی تایمر LPC1768، وقفۀ تایمر صفر و تغییر وضعیت پایۀ P0.21

در این صورت یک موج PWM وارون روی پایۀ P0.21 شکل می گیرد. در شرط دوم علاوه بر صفر کردن P0.21، مقدار رجیستر تایمر صفر را برابر TcStartPoint قرار می دهیم. که تایمر پس از ریست شدن از آن مقدار شروع به شمارش کند. در پایان پرچم های وقفۀ تایمر صفر را برای مقایسۀ صفر و یک پاک می کنیم. در روتین وقفۀ تایمر 1 نیز یک واحد به متغیر LcdRefCounter اضافه می کنیم. سپس پرچم وقفۀ تایمر 1 را برای مقایسۀ شمارۀ 2 پاک می کنیم.

void TIMER0_IRQHandler(void)
{
	if (LPC_TIM0->IR & (1<<0)) // Check Match Channel 0 Interrupt Flag
	{
		Write(P0_21,1); // Set P0.21
	}
	else if (LPC_TIM0->IR & (1<<1)) // Check Match Channel 1 Interrupt Flag
	{
		Write(P0_21,0); // Clear P0.21
		LPC_TIM0->TC=TcStartPoint; // Set timer Value
	}
	LPC_TIM0->IR =(1<<1)|(1<<0); // Clear Interrupt Flag For Chanel 0 and 1
}

void TIMER1_IRQHandler(void)
{
	LcdRefCounter++;      // Add to LcdRefCounter
	LPC_TIM1->IR =(1<<2); // Clear Interrupt Flag For Chanel 2
}

 

کدهای حلقۀ while، تغییر مشخصات PWM و نمایش در LCD

در حلقۀ while چهار شرط برای تغییر فرکانس و Duty Cycle قرار داده ایم. در شرط اول فشرده شدن کلید روی پایۀ P2.11 بررسی می شود. اگر درست باشد، ابتدا چک می شود که Duty Cycle بزرگتر از 10 درصد باشد. اگر درست باشد، 10 واحد از مقدار Duty Cycle کم می شود. در سطر بعد رجیستر MR0 با توجه به مقدار Duty Cycle و متغیر TcStartPoint تغییر می کند. در سطر بعد یک شرط برای این که مقدار MR0 کمتر از TcStartPoint نشود قرار داده ایم. علت چنین کاری این است که اگر مقدار MR0 کمتر از TcStartPoint شود، در خروجی موج PWM نخواهیم داشت. برای درک بهتر این موضوع، در تغییر فرکانس و دیوتی سایکل PWM در AVR بخش «چگونه یک موج PWM با Duty Cycle و فرکانس متغیر بسازیم؟» را مطالعه فرمایید. در شرط دوم نیز همین عملیات را برای افزایش Duty Cycle با فشردن کلید روی پایۀ P2.12 انجام داده ایم. با این دو شرط مقدار Duty Cycle بین 10 تا 90 درصد تغییر می کند. و البته تغییر Duty Cycle روی فرکانس تأثیری نخواهد داشت.

if ( Read(P2_11) == 0 )
{
	if (DutyCycle>10)
	{
		while ( Read(P2_11) == 0 );
		DutyCycle -=10;
		LPC_TIM0->MR0 = (unsigned int)(2000 - ((DutyCycle*0.01) * (2000 - TcStartPoint)));
		if ( LPC_TIM0->MR0<=TcStartPoint )
		{
			DutyCycle +=10;
			LPC_TIM0->MR0 = (unsigned int)(2000 - ((DutyCycle*0.01) * (2000 - TcStartPoint)));
		}
	}
}
else if ( Read(P2_12) == 0 )
{
	if ( DutyCycle<90 )
	{
		while ( Read(P2_12) == 0 );
		DutyCycle +=10;
		LPC_TIM0->MR0 = (unsigned int)(2000 - ((DutyCycle*0.01) * (2000 - TcStartPoint)));
	}
}

 

تغییر-duty-cycle-تایمر

تصویر 7 – تغییرات Duty Cycle موج PWM

در دو شرط بعد مقدار فرکانس تغییر می کند. ابتدا چک می شود که فرکانس بین 100 هرتز تا 4000 هرتز باشد. سپس مقدار آن 100 واحد اضافه یا کم می شود. پس از آن متغیر TcStartPoint، رجیستر تایمر صفر (TC) و رجیستر مقایسۀ صفر آن (MR0) مقدار دهی می شوند. با این کار تغییر مقدار فرکانس تأثیری در مقدار Duty Cycle نخواهد داشت. بدین شکل با راه اندازی تایمر LPC1768 و وقفۀ آن و همچنین تغییر مقدار رجیستر TC و رجیستر MR0، یک موج PWM روی پایۀ P0.21 خواهیم داشت. برای تبدیل اعداد float به عدد int از Cast کردن استفاده کرده ایم. که این کار ممکن است باعث کم شدن دقت در ارائۀ Duty Cycle و فرکانس شود.

if ( Read(P2_13) == 0 )
{
	if ( Freq>100 )
	{
		while ( Read(P2_13) == 0 );
		Freq -=100;
		TcStartPoint= (unsigned int) (2000-(40000/Freq));
		LPC_TIM0->TC=TcStartPoint;
		LPC_TIM0->MR0 = (unsigned int)(2000 - ((DutyCycle*0.01) * (2000 - TcStartPoint)));
	}
			
}
else if ( Read(P2_10) == 0 )
{
	if ( Freq < 4000 )
	{
		while ( Read(P2_10) == 0 );
		Freq +=100;
		TcStartPoint= (unsigned int) (2000-(40000/Freq));
		LPC_TIM0->TC=TcStartPoint;
		LPC_TIM0->MR0 = (unsigned int)(2000 - ((DutyCycle*0.01) * (2000 - TcStartPoint)));
	}
}

 

تغییر-فرکانس-duty-cycle

تصویر 8 – تغییر فرکانس موج PWM و بی تأثیر بودن آن در مقدار Duty Cycle

نمایش در LCD و چشمک زدن LED روی برد

هر بار که وقفۀ تایمر 1 اتفاق می افتد، به مقدار متغیر LcdRefCounter یک واحد اضافه می شود. حال اگر مقدار این متغیر برابر یا مساوی 2 شود، LCD رفرش می شود. علاوه بر آن پایۀ P0.18 که به LED متصل است، یک بار تغییر وضعیت می دهد. هر بار که این شرط اجرا می شود، مقدار متغیر Counter چک می شود. اگر صفر باشد، پایۀ P0.18 یک و Counter برابر 1 می شود. در مرحلۀ بعد متغیر Counter برابر 1 است و شرط دوم اجرا می شود. در شرط دوم (else) پایۀ P0.18 صفر می شود و مقدار متغیر Counter به مقدار قبلی (صفر) تغییر می کند. بنابراین با هر بار رفرش شدن LCD، یک بار LED روشن یا خاموش می شود. با توجه به این که کلاک تایمر 1 همان موج PWM فرکانس متغیر روی P0.21 است، زمان رفرش شدن LCD و تغییر وضعیت P0.18 نیز ثابت نیست.

if (LcdRefCounter >= 2)
{
	LcdRefCounter=0;
	sprintf(LcdStr,"Freq= %d Hz",  Freq );
	lcd_gotoxy(0,0);
	lcd_puts(LcdStr);
	sprintf(LcdStr,"DutyCycle= %d ", DutyCycle );
	lcd_gotoxy(0,1);
	lcd_puts(LcdStr);
	if (Counter == 0)
	{
		Write(P0_18,1);
		Counter=1;
	}
	else
	{
		Write(P0_18,0);
		Counter=0;
	}
}

 

راه اندازی تایمر LPC1768 را در عمل ببینیم

در تصویر زیر هدر برد LPC1768 یوبرد را مشاهده می کنید. دو کلید برای تغییر Duty Cycle در روی برد قرار گرفته است. این دو کلید به پایه های P2.11 و P2.12 متصل هستند. دو کلید نیز برای تغییر فرکانس روی برد بورد قرار داده ایم. این دو کلید به پایه های P2.10 و P2.13 وصل هستند. همان طور که در تصویر مشخص است، پایۀ P0.21 را با استفاده از یک سیم به پایۀ P1.18 متصل کرده ایم. یک LED قرمز روی پایۀ P0.21 و یک LED سبز روی پایۀ P0.18 قرار داده ایم. همان طور که مشاهده می کنید، شدت نور LED قرمز با Duty Cycle موج PWM نسبت مستقیم دارد. LED سبز نیز با هر بار رفرش شدن LCD یک بار روشن یا خاموش می شود (وابسته به فرکانس موج PWM). در صورتی که فرکانس موج PWM را کم کنیم، چشمک زدن LED سمت چپ مشخص می شود.

نتیجه-راه-اندازی-تایمر

تصویر 9 – نتیجه راه اندازی تایمر LPC1768

نتایج راه اندازی تایمر LPC1768 و تولید موج PWM

  1. ساخت موج PWM بدون استفاده از مدهای PWM تایمر و یا واحدهای سخت افزاری PWM روشی غیر اصولی است. این کار باعث افزایش بار پردازشی CPU می شود.
  2. نحوه راه اندازی واحد تایمر در LPC1768 بدین صورت است که پس از پیکربندی، باید برای شروع شمارش تایمر، بیت صفر رجیستر TCR را 1 کرد.
  3. راه اندازی PWM در LPC1768 که در این نوشته بررسی شد، با استفاده از وقفۀ تایمر صفر برای مقایسه های شمارۀ صفر و 1 انجام شده است.
  4. اگر مقدار تقسیم فرکانسی تایمر را n قرار دهیم، تعداد n+1 پالس لازم است تا یک واحد به مقدار رجیستر تایمر اضافه شود.
  5. در سورس کد تایمر میکروکنترلر LPC1768 که در این نوشته بررسی کردیم، فرکانس سیگنال روی پایۀ 18 یک بیستم فرکانس موج PWM روی پایۀ P0.21 است. این موضوع در تصویر 4 مشاهده می شود. با هر دو بار صفر شدن متغیر LcdRefCounter، یک دورۀ تناوب روی پایۀ P0.18 ایجاد می شود.
  6. تغییر Duty Cycle در فرکانس موج PWM تأثیری ندارد. ولی باید شرطی قرار داد که در تغییر Duty Cycle، مقدار MR0 کمتر از TcStartPoint نشود. زیرا در این صورت مقایسه ای انجام نمی شود، در نتیجه موج PWMی شکل نخواهد گرفت.
  7. تغییر فرکانس موج PWM باعث تغییر مقدار TcStartPoint و سپس مقدار رجیستر TC می شود. بنابراین اگر مقدار MR0 نیز با توجه به مقدار TcStartPoint تغییر نکند، Duty Cycle موج PWM تغییر می کند. برای همین پس از تغییر فرکانس، علاوه بر مقدار دهی به TC، به MR0 نیز مقدار داده ایم. این موضوع در تصویر 8 مشاهده می شود.
  8. در فرکانس های بالا چشمک زدن LEDها مشخص نمی شود. در فرکانس های بین 100 تا 500 هرتز، چشمک زدن LED سبز رنگ که به پایۀ 18 متصل است، مشخص است. که فرکانس آن یک بیستم فرکانس PWM روی P0.21 است.


 

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد
رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های STM32

میکروکنترلر ARM

میکروکنترلر ARM چیست؟ پردازندۀ ARM

میکروکنترلر ARM ، میکروکنترلرهایی هستند که پردازندۀ آنها ساخت شرکت ARM است. شرکت ARM سازندۀ میکروکنترلر نیست. سازندۀ پردازنده (CPU) است. امروزه به میکروکنترلرهایی که پردازندۀ آنها طراحی شدۀ شرکت ARM باشد، میکروکنترلر ARM گفته می شود.

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-usart-stm32

راه اندازی UART در STM32، رجیستری و HAL

راه اندازی UART در STM32، اتصالات و نرم افزار مورد نیاز، نمونه کد USART در STM32 به صورت رجیستری، نمونه کد رجیستری USART با وقفۀ دریافت، نمونه کد HAL برای راه اندازی USART در STM32، نمونه کد HAL با وقفۀ دریافت، نحوه محاسبه Baud rate در USART میکروکنترلرهای STM32F1

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های AVR

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

ترمینال-پورت-سریال-آموزش-hercules

ترمینال پورت سریال و کار با نرم افزار Hercules

ترمینال پورت سریال چیست؟ پورت سریال مجازی چیست؟ نرم افزارهای پورت سریال، ترمینال سریال در CodeVisionAVR و Atmel Studio و Arduino، ارتباط کامپیوتر با میکروکنترلرها و ماژول ها از طریق پورت سریال، ترمینال سریال در پروتئوس، کار با ترمینال سریال نرم افزار Hercules، ارسال و دریافت دادۀ سریال با Hercules

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های میکروکنترلرهای ARM-LPC

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

پروگرامر-j-link-میکروکنترلر-arm

پروگرامر J-Link و برنامه ریزی میکروکنترلرهای ARM

پروگرامر J-Link، پردازنده هایی که توسط J-Link پشتیبانی می شوند، انواع J-Link، ویژگی های J-Link، نرم افزار J-Flash چیست؟ پروگرام کردن STM32F1xx و LPC17xx با J-Flash و J-Flash Lite و Keil، اتصالات JTAG و SWD در J-Link، تنظیمات J-Flash و Keil برای پروگرام کردن با J-Link

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های آردوینو

استفاده از همه امکانات میکروکنترلر در آردوینو

راه اندازی همه امکانات میکروکنترلر با آردوینو

راه اندازی همه امکانات میکروکنترلر با آردوینو امکان دارد؟ سوالیست که برای بسیاری از مخاطبین آردوینو در اوایل کار با آن بوجود می آید. در این نوشته به پاسخ به این سوال می پردازیم.

راه-اندازی-سون-سگمنت-با-آردوینو

راه اندازی سون سگمنت با آردوینو

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت

راه-اندازی-adc-در-آردوینو

راه اندازی ADC در آردوینو

راه اندازی ADC در آردوینو، راه اندازی LCD گرافیکی KS0108 با کتابخانۀ U8g2، اتصالات لازم برای راه اندازی ADC و LCD گرافیکی KS0108، نمونه کد راه اندازی ADC آردوینو، فرمول محاسبۀ دما با TMP36، راه اندازی سنسور دما با آردوینو، راه اندازی فتوسل (LDR) با آردوینو

راه-اندازی-آردوینو-run-arduino

راه اندازی آردوینو، شروع کار با Arduino

راه اندازی آردوینو، اضافه کردن آردوینو به VS Code و ویژوال استودیو، ایجاد پروژه آردوینو در Arduino IDE و VS Code و ویژوال استودیو، برنامه نویسی آردوینو در Arduino IDE و VS Code و ویژوال استودیو، آپلود برنامه روی آردوینو با Arduini IDE و VS Code و ویژوال استودیو

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های طراحی PCB

فیوز الکترونیکی

فیوز الکترونیکی، حافظ جان بردهای الکترونیکی

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

تست-الکتریکال-pcb

تست الکتریکال PCB و روش های آن

تست الکتریکال برد مدار چاپی چیست؟ برخی انواع تست PCB، تست الکتریکال PCB، پارامترهای اندازه گیری در تست الکتریکال، روش های تست الکتریکال برد مدار چاپی، روش تست Flying probe، روش تست Universal grid یا Bed of nails، نکات تست الکتریکال برد مدار چاپی

رله-relay

رله، سوییچ تحریک پذیر

تعریف رله، تاریخچه، طرز کار رلۀ الکترومکانیکی، اصطلاحات، انواع الکترومکانیکی، رلۀ حالت جامد، رلۀ هیبریدی، رلۀ حرارتی و انواع تحریک شونده با عوامل غیر الکتریکی، انواع موجود در صنعت برق و برق صنعتی، رلۀ ایمنی و برخی انواع حفاظتی، رلۀ دیجیتال، لزوم استفاده و راه اندازی رله، مشخصات الکتریکی

دیود-tvs

دیود TVS، حذف ولتاژ گذرا و ESD

ولتاژ گذرا و TVS (Transient Voltage Suppression) چیست؟ دیود TVS چیست؟ حذف ولتاژ گذرا با دیود TVS، حذف تخلیه الکتریسیته ساکن (ESD) با TVS، مشخصات الکتریکی دیودهای TVS، انواع دیودهای TVS، نماد شماتیک دیودهای TVS، کاربرد دیودهای TVS، کاربرد خودرویی، تفاوت دیودهای TVS و دیودهای زنر، انتخاب دیودهای TVS مناسب

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های لحیم کاری و مونتاژ استاندارد

لحیم کاری قطعات حساس

لحیم کاری قطعات حساس

لحیم کاری قطعات حساس، باید با دقت به دمای لحیم کاری انجام شود. در این نوشته 4 نکته در رابطه با حرارت در لحیم کاری قطعات حساس را بیان می کنیم.

انواع-هویه

انواع هویه، ویژگی ها و کاربرد آنها

تعریف و انواع هویه، هویه های الکتریکی و غیر الکتریکی، هویه ها از لحاظ اتصال نوک هویه به هیتر آن، توان هویه، قابل حمل بودن، سرعت داغ شدن هویه، هویه های AC و DC، هویه های قلمی و تفنگی، قابلیت های دیگر هویه ها، انواع مختلف هویه، نکات هویه

تست-الکتریکال-pcb

تست الکتریکال PCB و روش های آن

تست الکتریکال برد مدار چاپی چیست؟ برخی انواع تست PCB، تست الکتریکال PCB، پارامترهای اندازه گیری در تست الکتریکال، روش های تست الکتریکال برد مدار چاپی، روش تست Flying probe، روش تست Universal grid یا Bed of nails، نکات تست الکتریکال برد مدار چاپی

انواع-نوک-هویه

انواع نوک هویه و کاربرد آنها

انواع نوک هویه متداول، انواع اتصال نوک هویه به هیتر، مشخصات و کاربرد انواع نوک هویه، نوک هویه تایپ B، تایپ I، تایپ BI، تایپ SI، تایپ D، تایپ C، تایپ K، قاشقی، T شکل و Diamond، احیا کننده های نوک هویه، نام های نوک هویه

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های حوزه الکترونیک

فیوز الکترونیکی

فیوز الکترونیکی، حافظ جان بردهای الکترونیکی

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

دومینوی تخصص در مهندسی الکترونیک

دومینوی تخصص در مهندسی الکترونیک

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

دانشگاه و صنعت در الکترونیک

دانشگاه و صنعت در الکترونیک باید با هم ارتباط داشته باشند. چرا باید ارتباط داشته باشند؟ در کشور ما وضعیت ارتباط دانشگاه و صنعت بخصوص در زمینۀ الکترونیک چطور است؟

اهمیت-تخصص-مهندس-الکترونیک

اهمیت تخصص مهندس الکترونیک

اهمیت تخصص مهندس الکترونیک در جایگاه، حقوق، آیندۀ یک مهندس الکترونیک را می بینیم.

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های برنامه نویسی میکروکنترلر

استفاده از زبان سی در سیستم های حیاتی

از همه ابزارهای زبان برنامه نویسی میکروکنترلرها استفاده کنیم؟!

ابزارهای زبان برنامه نویسی میکروکنترلرها در استانداردهای برنامه نویسی محدود شده است. بطور مثال در استاندارد MISRA-C برای سیستم های حیاتی، استفاده از دستورهای goto و continue ممنوع شده است. در این نوشته به بررسی این موضوع می پردازیم.

مهمترین کاربردهای اشاره گر

مهمترین کاربردهای اشاره گر در زبان C میکروکنترلرها

کاربردهای اشاره گر در زبان C میکروکنترلرها شامل موارد مختلفی است که مهمترین آنها «ارسال اشاره گر به تابع» و «اشاره گر به تابع» است. در این نوشته ابتدا آنها را به اختصار شرح داده سپس در مورد اهمیت کاربرد اشاره گر در میکروکنترلر توضیح می دهیم.

انواع-متغیر-زبان-c-cpp

انواع متغیر در زبان برنامه نویسی C

انواع متغیرها در زبان C، تعریف انواع متغیر در زبان C، انواع متغیر در نرم افزار کدویژن و نرم افزار Keil، آرایه و رشته در زبان برنامه نویسی C، انواع متغیر استراکچر (Structure) و یونیون (union)، typedef در زبان C، متغیر نوع volatile، متغیرهای عمومی (Global)، متغیرهای محلی (Local)

ساخت-کتابخانه-c-cpp

نحوۀ ساخت کتابخانه در زبان برنامه نویسی C برای میکروکنترلرها

کتابخانه در زبان برنامه نویسی چیست؟ ساخت کتابخانه در نرم افزار CodevisionAVR، کتابخانه با پسوند h، کتابخانه با پسوند c، کتابخانه با پسوند h و c، فراخوانی کتابخانه، کاربرد دستور پیش پردازندۀ #ifndef در نوشتن کتابخانه، فراخوانی کتابخانه از پوشه های مختلف، ساخت کتابخانه در نرم افزار Keil

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های ماژول های الکترونیکی

راه-اندازی-ماژول-sim800

راه اندازی ماژول SIM800، تماس تلفنی و پیامک

راه اندازی ماژول SIM800، AT کامند چیست، سخت افزارها و نرم افزارهای مورد نیاز برای راه انداختن SIM800، تغذِیۀ ماژول SIM800، ارتباط سریال ماژول SIM800، ارسال AT کامند به SIM800، سینتکس های AT کامند در SIM800، تنظیمات اولیۀ SIM800، تماس تلفنی و ارسال و دریافت SMS با SIM800

آپدیت-فریمور-ماژول-sim800

آپدیت Firmware ماژول SIM800

نحوه آپدیت Firmware ماژول SIM800، آپدیت Firmware بلوتوث ماژول SIM808 و SIM800، نکات قبل از شروع آپدیت ماژول های SIM800، آپدیت ماژول های SIM800 با نرم افزار SIM800 Series download Tools Customer، مراحل به روز رسانی و تغییر نرم افزار SIM800، آپدیت Firmware ماژول SIM800C

سامانه-gnss-gps

سامانه GNSS و GPS، سامانه های موقعیت یاب جهانی و محلی

معرفی سامانه GNSS، سامانه موقعیت یاب محلی بدون ماهواره، ناوبری هذلولوی، سامانه ماهواره ای ناوبری جهانی و محلی، GPS و GLONASS، خطای GPS محیط های مختلف، NMEA چیست؟ فرمت داده خروجی GPS، قالب داده GPS در ماژول SIM808، فرمت های استاندارد طول و عرض جغرافیایی، تنظیمات ماژول های سامانه GNSS

بلوتوث-bluetooth

معرفی بلوتوث، پروفایل های بلوتوث و نسخه های بلوتوث

نام گذاری بلوتوث، مزیت بلوتوث به WIFI، کلاس کاری و پروفایل بلوتوث، بلوتوث نسخه 1.0، B1.0، 1.1 و 1.2، نسخه 2.0 و EDR، نسخه 2.1 و EIR، نسخه 3.0 و HS، نسخه 4.0 و BLE یا LE، بلوتوث هوشمند، نسخه 4.1، 4.2 و IPV6، نسخه 5، کاربرد بلوتوث در خودرو

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین تاپیک های ماژول های الکترونیکی

راه-اندازی-ماژول-sim800

راه اندازی ماژول SIM800، تماس تلفنی و پیامک

راه اندازی ماژول SIM800، AT کامند چیست، سخت افزارها و نرم افزارهای مورد نیاز برای راه انداختن SIM800، تغذِیۀ ماژول SIM800، ارتباط سریال ماژول SIM800، ارسال AT کامند به SIM800، سینتکس های AT کامند در SIM800، تنظیمات اولیۀ SIM800، تماس تلفنی و ارسال و دریافت SMS با SIM800

آپدیت-فریمور-ماژول-sim800

آپدیت Firmware ماژول SIM800

نحوه آپدیت Firmware ماژول SIM800، آپدیت Firmware بلوتوث ماژول SIM808 و SIM800، نکات قبل از شروع آپدیت ماژول های SIM800، آپدیت ماژول های SIM800 با نرم افزار SIM800 Series download Tools Customer، مراحل به روز رسانی و تغییر نرم افزار SIM800، آپدیت Firmware ماژول SIM800C

سامانه-gnss-gps

سامانه GNSS و GPS، سامانه های موقعیت یاب جهانی و محلی

معرفی سامانه GNSS، سامانه موقعیت یاب محلی بدون ماهواره، ناوبری هذلولوی، سامانه ماهواره ای ناوبری جهانی و محلی، GPS و GLONASS، خطای GPS محیط های مختلف، NMEA چیست؟ فرمت داده خروجی GPS، قالب داده GPS در ماژول SIM808، فرمت های استاندارد طول و عرض جغرافیایی، تنظیمات ماژول های سامانه GNSS

بلوتوث-bluetooth

معرفی بلوتوث، پروفایل های بلوتوث و نسخه های بلوتوث

نام گذاری بلوتوث، مزیت بلوتوث به WIFI، کلاس کاری و پروفایل بلوتوث، بلوتوث نسخه 1.0، B1.0، 1.1 و 1.2، نسخه 2.0 و EDR، نسخه 2.1 و EIR، نسخه 3.0 و HS، نسخه 4.0 و BLE یا LE، بلوتوث هوشمند، نسخه 4.1، 4.2 و IPV6، نسخه 5، کاربرد بلوتوث در خودرو

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین های دانلودی

پک های نرم افزار KEIL

دانلود پک های میکروکنترلر برای Keil

دانلود پک های میکروکنترلر برای Keil پیش نیاز استفاده از میکروکنترلر موردنظر در نرم افزار Keil است. شامل پکهای میکروکنترلر STM32 و LPC

دانلود نرم افزار KEIL

دانلود نرم افزار Keil MDK-ARM

دانلود نرم افزار Keil، یک محیط یکپارچۀ توسعۀ نرم افزار (IDE) برای میکروکنترلرها را در اختیار ما قرار می دهد.

دانلود نرم افزار STM32CubeProg

دانلود نرم افزار STM32CubeProg

دانلود نرم افزار STM32CubeProg ، یک ابزار برنامه ریزی برای میکروکنترلرهای STM32 از طریق درگاه JTAG و SWD را در اختیار شما قرار می دهد.

دانلود پک های میکروکنترلر برای STM32Cube

دانلود پک های میکروکنترلر برای STM32Cube

دانلود پک های میکروکنترلر برای STM32Cube لازم برای استفاده از میکروکنترلر موردنظر در پکیج نرم افزارهای STM32Cube است.

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین های میکروآموزش

فرق آماتور و حرفه‌ای در الکترونیک

فرق آماتور و حرفه‌ای در الکترونیک

در این میکروآموزش، فرق آماتور و حرفه‌ای در الکترونیک را با نکات فنی واقعی، تجربه صنعتی و استانداردهای بین‌المللی بررسی می‌کنیم.

علت سوختن برد الکترونیکی

علت سوختن برد الکترونیکی چیست؟

علت سوختن برد الکترونیکی چیست؟ در این میکروآموزش، با مقایسه طراحی معماری و برد الکترونیکی، مفهوم طراحی پایدار را بررسی می‌کنیم.

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD یکی از مراحل کلیدی در فرآیند تولید برد است. این آموزش اهمیت این مرحله و دقت مورد نیاز را بررسی می‌کند.

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB مفهومی کلیدی برای عملکرد بی‌نویز است. این آموزش با نگاهی الهام‌گرفته از معماری ایرانی، اهمیت آن را بررسی می‌کند.

7 Comments

  1. سلام آقای اسدی. میشه لطفا درمورد میکروکنترلرهای LPC ببشتر مطلب بزارید؟ مثل اینکه جدیدا میکروکنترلرهای خیلی قوی تر از همه شرکتا زده

    Reply
    • سلام. بله در ادامه بیشتر در مورد میکروکنترلهای NXP مطلب قرار خواهیم داد.

      Reply
  2. سلام. لطفا درمورد میکروکنترلرهای LPC و کلا میکروکنترلرهای شرکت NXP بیشتر مطلب قرار بدید. اگر هم ممکنه توی یه نوشته میکروکنترلرهای شرکتهای مختلف رو مقایسه کنید. حداقل میکروکنترلرهای پرفروش دنیا.

    Reply
    • سلام. بسیارخب. تشکر از پیشنهادتون. در برنامه ها قرار گرفت.

      Reply
  3. سلام استاد. دستتون درد نکنه بابت مطالبی که میذارید. این طرز استفاده از تایمر و وصل کردن خروجی یکی از تایمرا یا پایه io به ورودی یه تایمر دیگه کاربردی هم داره؟

    Reply
    • سلام. خواهش میکنم. بله کاربرد داره. میتونید سیکل شمارشتون رو بیشتر کنید.

      Reply
  4. با سلام وسپاس فراوان
    در میکروکنترلر های stm32 و lpc هاتایمر موتور ۳ فاز وجود دارد ایا میتوان در عمل بااین میکروها ومدار درایور ۶ عدد IGBT را تحریک کرد و موتور ۳ فاز را راه اندازی کرد نمونه ی از این مثال یاطریقه ی تنظیم تایمر در این مود را توضیح دهید .
    با تشکر فراوان

    Reply

Submit a Comment

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای AVR یوبرد

شاهکار 8 بیتی Atmel

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است