Tải bản đầy đủ (.pptx) (19 trang)

Đồ án thiết kế hệ thống nhúng (3)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (885.34 KB, 19 trang )

BÁO CÁO
BÀI TẬP LỚN
Đề tài
ĐỌC GIÁ TRỊ NHIỆT ĐỘ, ĐỘ ẨM HIỆN THỊ LCD20X4
LÀM ĐỒNG HỒ BẤM GIỜ DÙNG RTC STM32F103
TRÊN HỆ ĐIỀU HÀNH THỜI GIAN THỰC FREERTOS


Nhóm 0X:


01

Thuyết minh
về Hệ điều
hành thời gian
thực
FREERTOS

Tìm hiểu về hệ thống
nhúng và hệ điều hành
FREERTOS

02
Làm
projectcode
trên keilCv5 đo
nhiệt độ độ
ẩm và làm
RTCthực RTC
Thiết kếđồng


đồng hồhồ
thời gian
Đo nhiệt độ độ ẩm hiện thị lên LCD


A. Sơ đồ tổng quát đề
tài
DHT11

RTC : Đồng
hồ Hẹn giờ

STM32F103

LCD_20x4

(FREERTOS)

 


01

Hệ điều hành FREERTOS


I. FREERTOS là gì ?
● RTOS là viết tắt của cụm từ Real-time operating system hay hệ điều hành
thời gian thực thường được nhúng trong các dòng vi điều khiển dùng để điều
khiển thiết bị một cách nhanh chóng và đa nhiệm (multi tasking). Để hiểu rõ

ràng nó là gì trước hết hãy làm rõ khái niệm về hệ điều hành đã.
● Hệ điều hành (tiếng Anh: Operating System – viết tắt: OS) là một phần
mềm dùng để điều hành, quản lý toàn bộ tất cả thành phần (bao gồm cả phần
cứng và phần mềm) của thiết bị điện tử.
● Nói đơn giản, hệ điều hành giống như hội đồng quản trị vậy. Họ có quyền
quyết định ai làm gì và thời gian như thế nào. Các nhân viên cũng như các
ứng dụng, nhận lệnh của cấp trên và thực thi các công việc theo đúng chức
năng của mình.


II. Hệ điều hành thời gian thực FREERTOS với hệ điều hành thông thường
khác nhau ở đâu ?


Hệ điều hành thơng thường (non-realtime): như Window, linux, android, ios…
chính là thứ mà chúng ta sử dụng hằng ngày. Khi mở một phần mềm trên đó,
có thể bạn phải chờ nó tải rất lâu, việc chờ đợi này cũng không ảnh hưởng gì
cả. Bởi vì đa số phần mềm đó tương tác với con người chứ ít tương tác với
các phần mềm hoặc thiết bị khác



Hệ điều hành thời gian thực (realtime): sinh ra cho các tác vụ cần sự phản hồi
nhanh của hệ thống, thường được nhúng trong các loại vi điều khiển và khơng
có giao diện (GUI) tương tác với người dùng. Chúng cần phản hồi nhanh bởi
vì đa số các tác vụ tương tác với thiết bị, máy móc khác chứ không phải con
người. Các tài nguyên bên trong rất hữu hạn nên chỉ một sự chậm trễ cũng có
thể làm hệ thống làm việc hồn tồn sai lệch.



III.Một số khái niệm về Hệ điều hành thời gian thực
FreeRTOS
●HeapSize: là size của data trên RAM cần để lưu trữ khi bạn khai báo biến hay
mảng trong chương trình chính hoặc chương trình con.
●StackSize: là size của data lưu trữ giá trị back up hiện tại của thanh ghi bao
gồm cả con trở stack pointer(PC) khi chương chình gọi một chương trình con
khác và sẽ trả lại bộ nhớ đó khi thực hiện xong chương trình con.
●Nếu StackSize khơng đủ nó sẽ ghi data cả vào phần của HeapSize gây ra
stackoverflow và xảy ra lỗi Hardfult tạo ra ngắt nhảy vào Hardfult Handler. Lúc
này chương trình sẽ bị treo cho đến khi khởi động lại.


IV. Cách tạo ra 1 task trong keilCV5
●Trong ví dụ này nhóm mình tạo 4 task led nháy với tần số khác nhau (tần số
xung nhịp của hệ điều hành 1Khz cài đặt tại file FreeRTOSConfig.h).
●Ban đầu mình sử dụng 4 task mỗi task điều khiển một led như sau.










Tiếp theo trong hàm main,bạn tạo task bằng hàm xTaskCreate và chạy task đã tạo sử dụng
vTaskStartScheduler();
xTaskCreate(vTaskLed1,( const char * ) “Task LED
1”,configMINIMAL_STACK_SIZE,NULL,mainFLASH_TASK_PRIORITY,( xTaskHandle * )

NULL);
xTaskCreate(vTaskLed2,( const char * ) “Task LED
2”,configMINIMAL_STACK_SIZE,NULL,mainFLASH_TASK_PRIORITY,( xTaskHandle * )
NULL);
xTaskCreate(vTaskLed3,( const char * ) “Task LED
3”,configMINIMAL_STACK_SIZE,NULL,mainFLASH_TASK_PRIORITY,( xTaskHandle * )
NULL);
xTaskCreate(vTaskLed4,( const char * ) “Task LED
4”,configMINIMAL_STACK_SIZE,NULL,mainFLASH_TASK_PRIORITY,( xTaskHandle * )
NULL);
vTaskStartScheduler();
Lưu ý : Khi sử dụng nhiều Task khác nhau nếu gọi chương trình cịn nhiều bạn sẽ cần nhiều
stack_size hơn. Vì vậy cần tính tốn sơ bộ và cài đặt lại stack size trong file startup.


VI. Tiện Ích của FREERTOS
●Điều gì làm cho một RTOS đáng mong đợi? Nó cung cấp cái gì? Hãy xem xét
một số danh mục dịch vụ chính được tìm thấy trong FreeRTOS:


Đa nhiệm và lập lịch trình



Hàng đợi tin nhắn (Message queues)



Semaphoresvà mutex




Timer



Nhóm sự kiện (Event groups)


VII. Thực hiện tác vụ
●FreeRTOS rất linh hoạt. Nó cung cấp hai loại lập lịch trình tác vụ:


Ưu tiên đa tác vụ



Hợp nhất đa tác vụ (coroutines)

●Với tính năng đa tác vụ ưu tiên, một tác vụ sẽ chạy cho đến khi nó hết thời gian, hoặc bị chặn, hoặc cần
kiểm sốt rõ ràng. Bộ lập lịch trình tác vụ sẽ sắp xếp tác vụ chạy tiếp sau, có tính đến các ưu tiên. Đây là
loại tác vụ đa nhiệm sẽ được sử dụng trong các dự án của cuốn sách này.
●Một dạng đa nhiệm khác là coroutines. Sự khác biệt là tác vụ hiện tại chạy cho đến khi nó từ bỏ quyền
kiểm sốt. Khơng có phân chia thời gian hoặc thời gian chờ. Nếu khơng có hàm gọi nào chặn (như một
mutex), thì một coroutine phải gọi một hàm yield để chuyển quyền kiểm soát với một tác vụ khác. Bộ lập
lịch trình tác vụ sau đó sẽ quyết định tác vụ nào sẽ chuyển quyền kiểm soát sang bước tiếp theo. Hình
thức lập chương trình này là cần phải có cho các ứng dụng yêu cầu an tồn cao sẽ kiểm sốt chặt chẽ thời
gian CPU.



02

Giới thiệu về các
module dùng Trong
đề tài


I. DHT11
●Thông số kỹ thuật


nhiệt độ




độ phân giải: 1 ° C độ chính xác: ° C phạm vi đo: 0 ° C ~ 50 ° C

độ ẩm
phân giải: 1% RH Độ chính xác: ± 5% RH (0 ~ 50 ° C ) phạm vi đo: 20% RH ~ 90% RH (25 ° C)



điện áp hoạt động: 3.3 V ~ 5.5 V



đề nghị điều kiện bảo quản



nhiệt độ: 10 ° C ~ 40 ° C



độ ẩm: 60% RH hoặc dưới đây

●Ứng dụng
trạm thời tiết + điều khiển độ ẩm + Test & thiết bị phát hiện


II. Đồng Hồ RTC trong STM32
1.

RTC là gì ?

●RTC hay Real Time Clock là ngoại vi sử dụng như một bộ đồng hồ – lịch thời
gian thực. Thuật ngữ thời gian thực là chỉ thời gian trong cuộc sống của con
người hằng ngày, chứ khơng phải thời gian trong tính tốn như các Timer khác.
●Để bộ RTC có thể hoạt động chúng ta cần nối chân Vbat của vi điều khiển với
một nguồn 3V, thường sử dụng Pin Cmos, nguồn điện này giúp duy trì xung RTC
hoạt động bình thường.




2. Các thơng số chính của STM32
RTC
Có thể cấu hình Clock đầu vào theo 3 nguồn đó là: LSE, HSE, LSI




Bộ chia clock lên đến 20 bit, giúp bộ RTC hoạt động chính xác.



Độ phân giải của timer RTC lên đến 32 bit – tức là 2^32 giây mới tràn và cần reset
lại.



3 nguồn clock source có thể được sử dụng.



2 loại Reset RTC riêng biệt.



Có các ngắt hỗ trợ là : ngắt Alarm, ngắt mỗi giây, ngắt tràn bộ đếm.

●Trong bài hướng dẫn này, mình sẽ hướng dẫn các bạn tạo ra một chiếc đồng hồ chạy
thời gian thực, nó sẽ vẫn chạy dù cho nguồn vi điều khiển có bị mất hay khơng. Bắt
đầu nhé


4. Các chức năng cơ bản của bộ RTC:


Bộ chia clock lên đến 20 bit, giúp bộ RTC hoạt động chính xác.




Độ phân giải của timer RTC lên đến 32 bit – tức là 2^32 giây mới tràn và cần reset lại.



3 nguồn clock source có thể được sử dụng.



2 loại Reset RTC riêng biệt.



Có các ngắt hỗ trợ là : ngắt Alarm, ngắt mỗi giây, ngắt tràn bộ đếm.


5. Cấu tạo trong lòng RTC và các nguồn
●Hãy cùng phân tích giản đồ này để hiểu q trình hoạt động của RTC trước khi chúng ta đi qua một số thanh ghi quan trọng trong
RTC.
●Bộ RTC ở đây sẽ gồm 2 phần chính:


Đầu tiên, APB1 Interface được sử dụng để giao tiếp với APB1 bus. APB1 Interface giúp cho Core có thể đọc ghi dữ liệu đến
các thanh ghi trong bộ RTC thơng qua APB1 bus. Ngồi ra, APB1 interface sẽ được APB1 bus clock trong quá trình giao tiếp
dữ liệu.



Tiếp theo, các khối RTC được chia làm 2 phần chính:

o

Khối đầu tiên, RTC prescaler sau khi chúng ta cấp clock cho RTC thì ở đây nó sẽ qua bộ RTC_DIV để chia tần, và
chúng ta có thể lập trình tạo ra tần số lên đến 1Hz (1s).

o

Sau đó xung TR_CLK sẽ được cấp vào khối 32 bit programmable counter, giá trị trong RTC_CNT theo với tần số
TR_CLK cấp vào, RTC_CNT sẽ được so sánh với giá trị định sẵn trong RTC_ALR để tạo ra ngắt đánh thức hệ thống
dậy ở chế động Standby mode(chế độ tiết kiệm năng lượng)


D. ĐÚC KẾT ĐỀ TÀI VÀ DEMO SẢN PHẨM



×