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

آموزش ARM LPC1768 (قسمت دوم ، تایمرها)

اگر جلسه اول آموزش ARM LPC1768 را دنبال کرده باشید می دانید که با برای شروع کار با پایه های میکروکنترلر آشنا شدیم و آنها را ورودی ، خروجی تعریف کردیم و همچنین نحوه برنامه نویسی بصورت رجیستری و با نحوه اضافه کردن و برنامه نوشتن با توابع CMSIS را یادگرفتیم و همچنین وقفه های میکروکنترلر را برسی کردیم و براشون برنامه های مختلف نوشتیم و همچنین نحوه نوشتن تابع تاخیر را هم یاد گرفتیم حال در قسمت دوم آموزش ARM LPC1768 میخواهیم کار با تایمر های میکروکنترلر LPC1768 را یاد بگیریم و البته یکی از مهترین بحث های میکروکنترلر است که بصورت کامل توضیح داده شده و با چندین فیلم آموزشی ، مثال و فایل پی_دی_اف قصد داریم تا کامل شما این بحث از برنامه نویسی میکروکنترلر های ARM LPC1768 را یاد بگیرید. در ادامه با میکرو دیزاینر الکترونیک همراه باشید تا مقدمه ای از آموزش ها را با هم ببینیم.

آموزش ARM LPC1768 قسمت دوم تایمرها

 

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

کاربرد های تایمر :

  1. زمان سنجی برای شمارش رویداد های داخلی
  2. دمودلاتور عرض پالس ورودی به وسیله ی ورودی های Capture
  3. کارکرد های معمولی تایمر که عبارتند از : شمارش رویداد ها ، اندازه گیری زمان ، ایجاد زمان های مورد نظرو …

در حالت شمارنده وقتی یک اتفاق خارجی رخ دهد. به محتوای شمارنده یک واحد افزوده میشود. به این ترتیب محتوای شمارنده تعداد دفعات اتفاق افتادن یک رویداد را نشان میدهد.

توجه : وقتی پالس هایی به صورت منظم و با فرکانس مشخص به میکرو اعمال شود. میتوان با شمردن این پالس ها زمان های مورد نظر را ایجاد کرد.

Counter  : وقتی پالسی که به میکرو اعمال میشود. خارج از میکرو کنترلر باشد.گفته میشود Timer/Counter در وضعیت Counter است. برای مثال برای شمردن تعداد نوشابه های یک خط تولید ، یا برای شمردن تعداد بسته های  خط تولید دارو. و …

Timer : وقتی پالسی که به میکرو اعمال میشود از داخل میکرو باشد گفته میشود که Timer/Counter دروضعیت Timer  قرار دارد. برای مثال برای اندازه گیری زمان یا ایجاد زمان دلخواه از Timer  استفاده میشود.

مطلب پیشنهادی:  آموزش برنامه نویسی میکروکنترلرهای ARM [از شی گرایی تا توابع CMSIS]

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
this bit before setting PDN

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
مطلب پیشنهادی:  UART در میکروکنترلرهای LPC1768

توجه : تنظیمات این بخش را میتوان از طریق زبانه ی 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
CAN filtering when “11” selects = CCLK/6

توجه : تنظیمات این بخش را میتوان از طریق زبانه ی Configration Wizard از داخل فایل  StartUp.s هم انجام داد.

عکسی از نمونه برنامه در Keil با توابع CMSIS :

کد نوشته شده آموزش ARM LPC1768

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

جلسات آموزش میکروکنترلر ARM LPC1768  با مثال :

 

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطلب پیشنهادی:  راه اندازی I2C در STM32

دیدگاهتان را بنویسید

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

3 دیدگاه

  1. سلام. لطفا آموزش ارتباط سریال یا spi و کار با وقفه رو هم بزارید. لازم دارم !!!

  2. سلام ،ممنون از مطالبتون.
    اموزش سریال و adc هم اضافه کنید

  3. bebakhshid mishe file haye qesmate 2 ham bezariiiin khaheshan