اگر جلسه اول آموزش ARM LPC1768 را دنبال کرده باشید می دانید که با برای شروع کار با پایه های میکروکنترلر آشنا شدیم و آنها را ورودی ، خروجی تعریف کردیم و همچنین نحوه برنامه نویسی بصورت رجیستری و با نحوه اضافه کردن و برنامه نوشتن با توابع CMSIS را یادگرفتیم و همچنین وقفه های میکروکنترلر را برسی کردیم و براشون برنامه های مختلف نوشتیم و همچنین نحوه نوشتن تابع تاخیر را هم یاد گرفتیم حال در قسمت دوم آموزش ARM LPC1768 میخواهیم کار با تایمر های میکروکنترلر LPC1768 را یاد بگیریم و البته یکی از مهترین بحث های میکروکنترلر است که بصورت کامل توضیح داده شده و با چندین فیلم آموزشی ، مثال و فایل پی_دی_اف قصد داریم تا کامل شما این بحث از برنامه نویسی میکروکنترلر های ARM LPC1768 را یاد بگیرید. در ادامه با میکرو دیزاینر الکترونیک همراه باشید تا مقدمه ای از آموزش ها را با هم ببینیم.
تایمر ها از مهم ترین امکانات میکروکنترلر ها محسوب میشوند. و اغلب در اکثر پروژه از آن ها استفاده میشود.
کاربرد های تایمر :
- زمان سنجی برای شمارش رویداد های داخلی
- دمودلاتور عرض پالس ورودی به وسیله ی ورودی های Capture
- کارکرد های معمولی تایمر که عبارتند از : شمارش رویداد ها ، اندازه گیری زمان ، ایجاد زمان های مورد نظرو …
در حالت شمارنده وقتی یک اتفاق خارجی رخ دهد. به محتوای شمارنده یک واحد افزوده میشود. به این ترتیب محتوای شمارنده تعداد دفعات اتفاق افتادن یک رویداد را نشان میدهد.
توجه : وقتی پالس هایی به صورت منظم و با فرکانس مشخص به میکرو اعمال شود. میتوان با شمردن این پالس ها زمان های مورد نظر را ایجاد کرد.
Counter : وقتی پالسی که به میکرو اعمال میشود. خارج از میکرو کنترلر باشد.گفته میشود Timer/Counter در وضعیت Counter است. برای مثال برای شمردن تعداد نوشابه های یک خط تولید ، یا برای شمردن تعداد بسته های خط تولید دارو. و …
Timer : وقتی پالسی که به میکرو اعمال میشود از داخل میکرو باشد گفته میشود که Timer/Counter دروضعیت Timer قرار دارد. برای مثال برای اندازه گیری زمان یا ایجاد زمان دلخواه از Timer استفاده میشود.
LPC 1768 دارای 4 تایمر 32 بیتی میباشد که که به صورت تایمر یا شمارنده مورد استفاده قرار میگیرند. هر تایمر دارای یک بخش prescaler میباشد. که به منظور تقسیم کلاک Pclk مورد استفاده قرار میگیرد.
تنظیم منبع کلاک :
بیت های (2:3) از رجیستر PCLKSEL0 برای Timer0 میباشد.
بیت های (4:5) از رجیستر PCLKSEL0 برای Timer1 میباشد.
بیت های (12:13) از رجیستر PCLKSEL1 برای Timer2 میباشد.
بیت های (14:15) از رجیستر PCLKSEL1 برای Timer3 میباشد.
تایمر های 0 و 1 (Timer0/1) به طور پیش فرض روشن میباشند. اما برای استفاده از تایمر های 2 و 3 باید آن ها را فعال کنیم :
برای فعال کردن Timer2 : بایستی بیت 22 از رجیستر PCONP را فعال کنیم :
LPC_SC-> |= (1<<22);
برای فعال کردن Timer3 : بایستی بیت 23 از رجیستر PCONP را فعال کنیم :
LPC_SC-> |= (1<<23);
Power Control for Peripherals register (PCONP):
Reset value | Description | Symbol | Bit |
NA | Reserved. | – | 0 |
1 | Timer/Counter 0 power/clock control bit | PCTIM0 | 1 |
1 | Timer/Counter 1 power/clock control bit | PCTIM1 | 2 |
1 | UART0 power/clock control bit. | PCUART0 | 3 |
1 | UART1 power/clock control bit. | PCUART1 | 4 |
NA | Reserved. | – | 5 |
1 | PWM1 power/clock control bit. | PCPWM1 | 6 |
1 | The I2C0 interface power/clock control bit. | PCI2C0 | 7 |
1 | The SPI interface power/clock control bit. | PCSPI | 8 |
1 | The RTC power/clock control bit. | PCRTC | 9 |
1 | The SSP 1 interface power/clock control bit. | PCSSP1 | 10 |
NA | Reserved. | – | 11 |
0 |
A/D converter (ADC) power/clock control bit. Note: Clear the PDN bit in the AD0CR before clearing this bit, and set |
PCADC | 12 |
0 | CAN Controller 1 power/clock control bit | PCCAN1 | 13 |
0 | CAN Controller 2 power/clock control bit | PCCAN2 | 14 |
1 | Power/clock control bit for IOCON, GPIO, and GPIO interrupts. | PCGPIO | 15 |
0 | Repetitive Interrupt Timer power/clock control bit. | PCRIT | 16 |
0 | Motor Control PWM | PCMCPWM | 17 |
0 | Quadrature Encoder Interface power/clock control bit. | PCQEI | 18 |
1 | The I2C1 interface power/clock control bit. | PCI2C1 | 19 |
NA | Reserved. | – | 20 |
1 | The SSP0 interface power/clock control bit. | PCSSP0 | 21 |
0 | Timer 2 power/clock control bit. | PCTIM2 | 22 |
0 | Timer 3 power/clock control bit. | PCTIM3 | 23 |
0 | UART 2 power/clock control bit | PCUART2 | 24 |
0 | UART 3 power/clock control bit. | PCUART3 | 25 |
1 | I2C interface 2 power/clock control bit. | PCI2C2 | 26 |
0 | I2S interface power/clock control bit. | PCI2S | 27 |
NA | Reserved. | – | 28 |
0 | GPDMA function power/clock control bit. | PCGPDMA | 29 |
0 | Ethernet block power/clock control bit. | PCENET | 30 |
0 | USB interface power/clock control bit. | PCUSB | 31 |
توجه : تنظیمات این بخش را میتوان از طریق زبانه ی Configration Wizard از داخل فایل StartUp.s هم انجام داد. که نحوه انجام و توضیحات بیشتر در داخل فایل های آموزشی کامل کامل توضیح داده شدن.
تنظیم منبع کلاک
بیت های (2:3) از رجیستر PCLKSEL0 برای Timer0 میباشد.
بیت های (4:5) از رجیستر PCLKSEL0 برای Timer1 میباشد.
بیت های (12:13) از رجیستر PCLKSEL1 برای Timer2 میباشد.
بیت های (14:15) از رجیستر PCLKSEL1 برای Timer3 میباشد.
Peripheral Clock Selection registers 0 (PCLKSEL0 ):
Bit | Symbol |
Description |
Reset value |
1:0 | PCLK_WDT |
Peripheral clock selection for WDT. |
00 |
3:2 | PCLK_TIMER0 |
Peripheral clock selection for TIMER0. |
00 |
5:4 | PCLK_TIMER1 |
Peripheral clock selection for TIMER1. |
00 |
7:6 | PCLK_UART0 |
Peripheral clock selection for UART0. |
00 |
9:8 | PCLK_UART1 |
Peripheral clock selection for UART1. |
00 |
11:10 | – |
Reserved. |
NA |
13:12 | PCLK_PWM1 |
Peripheral clock selection for PWM1. |
00 |
15:14 | PCLK_I2C0 |
Peripheral clock selection for I2C0. |
00 |
17:16 | PCLK_SPI |
Peripheral clock selection for SPI |
00 |
19:18 | – |
Reserved. |
NA |
21:20 | PCLK_SSP1 |
Peripheral clock selection for SSP1. |
00 |
23:22 | PCLK_DAC |
Peripheral clock selection for DAC. |
00 |
25:24 | PCLK_ADC |
Peripheral clock selection for ADC. |
00 |
27:26 | PCLK_CAN1 |
Peripheral clock selection for CAN1.[1] |
00 |
29:28 | PCLK_CAN2 |
Peripheral clock selection for CAN2.[1] |
00 |
31:30 | PCLK_ACF | Peripheral clock selection for CAN acceptance filtering.[1] | 00 |
[1] : مقادیر مقسم کلاک های PCLK_CAN1 و PCLK_CAN2 در هنگام استفاده از توابع CAN باید برابر باشند.
Peripheral Clock Selection registers 1 (PCLKSEL1 ):
Bit | Symbol |
Description |
Reset value |
1:0 | PCLK_QEI |
Peripheral clock selection for the Quadrature Encoder Interface. |
00 |
3:2 | PCLK_GPIOINT |
Peripheral clock selection for GPIO interrupts. |
00 |
5:4 | PCLK_PCB |
Peripheral clock selection for the Pin Connect block. |
00 |
7:6 | PCLK_I2C1 |
Peripheral clock selection for I2C1. |
00 |
9:8 | – |
Reserved. |
NA |
11:10 | PCLK_SSP0 |
Peripheral clock selection for SSP0. |
00 |
13:12 | PCLK_TIMER2 |
Peripheral clock selection for TIMER2. |
00 |
15:14 | PCLK_TIMER3 |
Peripheral clock selection for TIMER3. |
00 |
17:16 | PCLK_UART2 |
Peripheral clock selection for UART2 |
00 |
19:18 | PCLK_UART3 |
Peripheral clock selection for UART3 |
00 |
21:20 | PCLK_I2C2 |
Peripheral clock selection for I2C2. |
00 |
23:22 | PCLK_I2S |
Peripheral clock selection for I2S. |
00 |
25:24 | – |
Reserved |
NA |
27:26 | PCLK_RIT |
Peripheral clock selection for Repetitive Interrupt Timer. |
00 |
29:28 | PCLK_SYSCON |
Peripheral clock selection for the System Control block. |
00 |
31:30 | PCLK_MC |
Peripheral clock selection for the Motor Control PWM. |
00 |
Peripheral Clock Selection register bit values :
PCLKSEL0 and PCLKSEL1 individual peripheral’s clock select options |
Function |
Reset value |
00 |
PCLK_peripheral = CCLK/4 |
00 |
01 |
PCLK_peripheral = CCLK |
|
10 |
PCLK_peripheral = CCLK/2 |
|
11 |
PCLK_peripheral = CCLK/8, except for CAN1, CAN2, and |
توجه : تنظیمات این بخش را میتوان از طریق زبانه ی Configration Wizard از داخل فایل StartUp.s هم انجام داد.
عکسی از نمونه برنامه در Keil با توابع CMSIS :
ادامه جلسات این اموزش ها را میتوانید از لینک های زیر دنبال کنید.(آموزش ها از اول دوباره نوشته شد.)
جلسات آموزش میکروکنترلر ARM LPC1768 با مثال :
- آموزش میکروکنترلرهای LPC1768 جلسه اول: معرفی ARM و هسته Cortex-M3
- آموزش میکروکنترلرهای LPC1768 جلسه دوم: برسی امکانات LPC1768
- آموزش میکروکنترلرهای LPC1768 جلسه سوم: ایجاد پروژه در Keil
- آموزش میکروکنترلرهای LPC1768 جلسه چهارم: معرفی CMSIS
- آموزش میکروکنترلرهای LPC1768 جلسه پنجم: پورت های ورودی و خروجی lpc17xx_gpio
- آموزش میکروکنترلرهای LPC1768 جلسه ششم: مبدل آنالوگ به دیجیتال lpc17xx_adc.h
- آموزش میکروکنترلرهای LPC1768 جلسه هفتم: مبدل دیجیتال به آنالوگ lpc17xx_dac.h
- آموزش میکروکنترلرهای LPC1768 جلسه هشتم: وقفه ها در LPC1768
- آموزش میکروکنترلرهای LPC1768 جلسه نهم: وقفه GPIO
- آموزش میکروکنترلرهای LPC1768 جلسه دهم: UART
- آموزش میکروکنترلرهای LPC1768 جلسه یازدهم: تایمر های LPC1768
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام. لطفا آموزش ارتباط سریال یا spi و کار با وقفه رو هم بزارید. لازم دارم !!!
سلام ،ممنون از مطالبتون.
اموزش سریال و adc هم اضافه کنید
bebakhshid mishe file haye qesmate 2 ham bezariiiin khaheshan