1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

16 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 1,27 MB

Nội dung

BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG -  - BÁO CÁO BTL MÔN: ĐỒ ÁN HỆ THỐNG NHÚNG Giảng viên giảng dạy:Nguyễn Ngọc Minh Nhóm: 13 Thành viên nhóm: Nguyễn Phan Tun-B18DCDT228 Nguyễn Đức Giang-B18DCDT061 Hồng Lê Minh-B18DCDT152 Đỗ Thùy Trang-B18DCDT252 LỜI MỞ ĐẦU Lời nhóm em xin cảm ơn thầy Minh giảng dạy giúp đỡ lớp suốt trình kì học vừa qua, để chúng em tiếp cận gần với chuyên ngành, đặc biệt mảng điện tử Qua giảng, tập tập lớn, chúng em tiếp cận gần gửi chuyên ngành thực tế Trong q trình làm đồ án chắn em cịn mắc phải nhiều sai sót mong thầy bỏ qua Đồng thời, với kinh nghiệm kiến thức cịn hạn chế em xin đóng góp từ thầy để đồ án em hồn thiện Chúng em xin chân thành cảm ơn !!! MỤC LỤC A ĐỀ TÀI VÀ TRIỂN KHAI ĐỀ TÀI I Các task vụ Gồm task Vụ : - Task 1: Hiện thị đồng hồ thời gian ( Giờ phút giây ) Lên LCD 20x4 : - Task 2: Hiện Thị nhiệt độ Độ ẩm lên LCD 20x4 ( task Sử dụng chung LCD20x4) Lập trình KID STM32F103 Trên Hệ Điều Hành thời gian thực FREERTOS II Sơ đồ thực DHT11 STM32F103 (FREERTOS) RTC : Đồng hồ Hẹn LCD_20x4 B Tìm Hiểu Hệ điều hành Thời gian thực FREERTOS I Mở đầu Có nhiều hệ điều hành thời gian thực phát triển RxTiny 8051, uRTOS, TI RTOS, Sau thời gian dài tìm hiểu làm project nhóm nhận thấy sử dụng làm quen FreeRTOS dễ, support có sẵn example tài liệu đầy đủ Vì vậy, hơm giới thiệu hệ điều hành FreeRTOS chia sẻ kinh nghiệm để FreeRTOS hoạt động ổn định FreeRTOS tạo lâu hỗ trợ port sang STM32, AVR, PIC, TI… (TI có hệ điều hành riêng xây dựng dựa hàm nhân Linux hàm hoạt động giống nhau) Gần FreeRTOS Amazon mua lại Licence phát triển thêm tính giữ nguyên Kernel FreeRTOS dần phổ biến ổn định II Rtos gì? RTOS viết tắt cụm từ Real-time operating system hay hệ điều hành thời gian thực thường nhúng dòng vi điều khiển dùng để điều khiển thiết bị cách nhanh chóng đa nhiệm (multi tasking) Để hiểu rõ ràng trước hết làm rõ khái niệm hệ điều hành Hệ điều hành (tiếng Anh: Operating System – viết tắt: OS) phần mềm dùng để điều hành, quản lý toàn tất thành phần (bao gồm phần cứng phần mềm) thiết bị điện tử Nói đơn giản, hệ điều hành giống hội đồng quản trị Họ có quyền định làm thời gian Các nhân viên ứng dụng, nhận lệnh cấp thực thi công việc theo chức III Hệ điều hành thời gian thực FREERTOS với hệ điều hành thông thường khác đâu ? • Hệ điều hành thơng thường (non-realtime): Window, linux, android, ios… thứ mà sử dụng ngày Khi mở phần mềm đó, bạn phải chờ tải lâu, việc chờ đợi không ảnh hưởng Bởi đa số phần mềm tương tác với người tương tác với phần mềm thiết bị khác • Hệ điều hành thời gian thực (realtime): sinh cho tác vụ cần phản hồi nhanh hệ thống, thường nhúng loại vi điều khiển 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 đa số tác vụ tương tác với thiết bị, máy móc khác khơng phải người Các tài nguyên bên hữu hạn nên chậm trễ làm hệ thống làm việc hoàn toàn sai lệch Bạn thử tưởng tượng hệ điều hành chạy tác vụ điều khiển tên lửa mà độ trễ 2s Với tốc độ tên lửa bắn lệch từ Hà Nội thành TP Hồ Chí Minh Thực tế hệ điều hành thời gian thực cịn chia thành loại: • Soft-realtime: Sử dụng cho ứng dụng cruise control (điều khiển hành trình) ô tô ứng dụng viễn thông • Hard-realtime: Sử dụng ứng dụng điều khiển máy bay, động điện VI Một số khái niệm Hệ điều hành thời gian thực FreeRTOS Trước bắt đầu làm việc với FreeRTOS việc nắm rõ hàm sử dụng nó, nên nắm rõ số cài đặt quan trọng HeapSize: size data RAM cần để lưu trữ bạn khai báo biến hay mảng chương trình chương trình StackSize: size data lưu trữ giá trị back up ghi bao gồm trở stack pointer(PC) chương chình gọi chương trình khác trả lại nhớ thực xong chương trình Nếu StackSize khơng đủ ghi data vào phần HeapSize gây stackoverflow xảy lỗi Hardfult tạo ngắt nhảy vào Hardfult Handler Lúc chương trình bị treo khởi động lại Cài đặt project Vì project nhóm lớn (dùng mảng lớn lưu liệu) đặt Heap_Size = 0x4000 = 16Kb nên bạn cài đặt dùng hết số RAM FreeRTOS Và trình dịch compile tính tốn sử dụng biên dịch hệ điều hành sử dụng runtime Bạn Heap_Size Stack_Size file FreeRTOSConfig.h Đối với Stask_Size: stack size dùng Task thường để mặc định 128byte lớn tùy vào số chương trình gọi liên tiếp task Theo kinh nghiệm Task tốn khoảng 800byte Heap +128 byte stack RAM sử dụng FreeRTOS chia thành Task xử lý riêng biệt sử dụng ngắt SystemStick Timer làm xung clock Như xảy ngắt SystemStick hệ điều hành tính tốn chuyển task dựa mức cài đặt ưu tiên công việc thực không dùng SystemStick để làm delay bình thường Cài đặt xung clock cho hệ điều hành #define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 ) #define configTICK_RATE_HZ ( ( TickType_t ) 100000 ) //100Khz ConfigCPU_CLOCK_HZ : cài đặt xung clock CPU chip cấp cho hệ điều hành, dùng STM32F103-> xung max 72Mhz configTICK_RATE_HZ: Tần số chuyển task hay tần số ngắt SystemStick, đặt 100Khz -> CPU 72000000/100000 = 720 xung để xử lý cơng việc Theo mức mức cao hệ điều hành chạy Nếu khơng có yêu cầu đặc biệt bạn nên để giá trị configTICK_RATE_HZ = 1000 Lưu ý: Đối với STM32, sử dụng ngắt bạn phải config NVIC group SubPriority = PreemPriority = 4bit chất PreemPriority xử lý chương trình ngắt chồng ngắt tức cơng việc ngắt chưa xong(ví dụ chờ delay) chip thực cơng việc ngắt khác mức ưu tiên cao hơn, cho phép hệ điều hành chuyển task xử lý công việc quan trọng #define configUSE_PREEMPTION Các phần cài đặt sau sử dụng hệ điều hành Mục đích chủ yếu giảm nhớ build code, code sử dụng hàm có liên quan bạn đặt giá trị không sử dụng bạn để giá trị #define INCLUDE_vTaskPrioritySet //Sử dụng Task Priority #define INCLUDE_uxTaskPriorityGet //Sử dụng hàm get Task Priority #define INCLUDE_vTaskDelete vTaskDelete(xStartTaskHandle); //Sử dụng hàm Delete task ví dụ: #define INCLUDE_vTaskCleanUpResources #define INCLUDE_vTaskSuspend //Sử dụng hàm vTaskSuspend #define INCLUDE_vTaskDelayUntil #define INCLUDE_vTaskDelay //Sử dụng hàm vTaskDelay V.Cách tạo task keilCV5 Trong ví dụ nhóm tạo task led nháy với tần số khác (tần số xung nhịp hệ điều hành 1Khz cài đặt file FreeRTOSConfig.h) Ban đầu sử dụng task task điều khiển led sau Tiếp theo hàm main,bạn tạo task hàm xTaskCreate 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(); Hàm xTaskCreate gồm para input: vTaskLed1: Chương trình muốn tạo task ( const char * ) “Task LED 1”: Tên task bạn đặt số kí tự max định nghĩa file FreeRTOSConfig.h #define configMAX_TASK_NAME_LEN ( 16 ) configMINIMAL_STACK_SIZE: giá trị stack size bạn sử dụng với task stack size 128byte Với byte stack size FreeRTOS lấy 4byte RAM để back up giá trị ghi R0-R15 32bit tốn 128*4 = 512byte RAM Khi sử dụng nhiều Task khác gọi chương trình cịn nhiều bạn cần nhiều stack_size Vì cần tính tốn sơ cài đặt lại stack size file startup mainFLASH_TASK_PRIORITY: Mức ưu tiên hệ điều hành max 255 định nghĩa file FreeRTOSConfig.h #define configKERNEL_INTERRUPT_PRIORITY 255) ( xTaskHandle * ) NULL: Có tác dụng việc tạm dừng, xóa task Trong dùng đến biến đầu vào Lưu ý: Nếu bạn lấy file startup từ code ví dụ FreeRTOS build chạy Nhưng bạn lấy file startup trực tiếp từ thư viện CMSIS StdPeriph_Driver , ta cần phải chỉnh sửa lại chút Vấn đề chỗ file port.c FreeRTOS dùng ngắt phục vụ cho việc tính tốn chuyển task khác tên ngắt định nghĩa bảng vector ngắt file startup VI Tiện Ích FREERTOS Điều làm cho RTOS đáng mong đợi? Nó cung cấp gì? Hãy xem xét số danh mục dịch vụ tìm thấy FreeRTOS: • Đa nhiệm lập lịch trình • Hàng đợi tin nhắn (Message queues) • Semaphoresvà mutex • Timer • Nhóm kiện (Event groups) VII Thực tác vụ Với FreeRTOS (một RTOS), hàm logic đặt vào tác vụ riêng biệt chạy độc lập Một tác vụ chịu trách nhiệm đọc tính tốn nhiệt độ Một tác vụ khác chịu trách nhiệm thể nhiệt độ tính tốn cuối Trong thực tế, trở thành hai chương trình chạy song song lúc Đối với ứng dụng đơn giản, phí tổn việc lên lịch tác vụ cao Tuy nhiên, độ phức tạp tăng lên, lợi ích việc phân chia vấn đề thành tác vụ trở nên rõ rệt nhiều FreeRTOS 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 đa tác vụ (coroutines) Với tính đa tác vụ ưu tiên, tác vụ chạy hết thời gian, bị chặn, cần kiểm sốt rõ ràng Bộ lập lịch trình tác vụ xếp tác vụ chạy tiếp sau, có tính đến ưu tiên Đây loại tác vụ đa nhiệm sử dụng dự án sách Một dạng đa nhiệm khác coroutines Sự khác biệt tác vụ chạy từ bỏ quyền kiểm sốt Khơng có phân chia thời gian thời gian chờ Nếu hàm gọi chặn (như mutex), coroutine phải gọi hàm yield để chuyển quyền kiểm sốt với tác vụ khác Bộ lập lịch trình tác vụ sau định tác vụ chuyển quyền kiểm sốt sang bước Hình thức lập chương trình cần phải có cho ứng dụng yêu cầu an toàn cao kiểm soát chặt chẽ thời gian CPU VIII.Tin nhắn hàng đợi Ngay sau bạn áp dụng đa tác vụ, bạn thừa hưởng vấn đề giao tiếp Sử dụng ví dụ đọc nhiệt độ, tác vụ đọc nhiệt độ an toàn truyền giá trị đến tác vụ phát nhiệt độ nào? Nếu nhiệt độ lưu trữ bốn byte, làm để bạn truyền giá trị mà khơng bị gián đoạn? Tính đa nhiệm ưu tiên có nghĩa việc chép bốn byte liệu đến vị trí khác bị gián đoạn phần Một cách thô để giải vấn đề ngăn chặn gián đoạn chép nhiệt độ bạn đến vị trí sử dụng tác vụ phát sóng Nhưng cách tiếp cận khơng thể chấp nhận bạn thường xuyên bị gián đoạn Vấn đề trở nên tồi tệ đối tượng chép có kích thước tăng Hàng đợi tin nhắn FreeRTOS cung cấp cách an toàn để truyền thơng tin hồn chỉnh Hàng đợi tin nhắn đảm bảo nhận tin nhắn đầy đủ Ngoài ra, giới hạn độ dài hàng đợi cho tác vụ gửi sử dụng hết nhớ Bằng cách sử dụng độ dài hàng đợi xác định trước, tác vụ thêm thông báo bị chặn khơng gian có sẵn Khi tác vụ bị chặn, cơng cụ lập lịch trình tác vụ tự động chuyển sang tác vụ khác sẵn sàng thực thi, thao tác xóa tin nhắn khỏi hàng đợi Độ dài cố định cho hàng đợi tin nhắn dạng điều khiển dòng IX Semaphore Mutex Trong thực hàng đợi, có thao tác mutex Q trình thêm tin nhắn u cầu số hướng dẫn để hoàn thành Tuy nhiên, hệ thống đa tác vụ ưu tiên, tin nhắn thêm nửa trước bị gián đoạn để thực tác vụ khác Trong FreeRTOS, hàng đợi thiết kế để có tin nhắn thêm vào theo cách nguyên tử Để thực điều này, số loại thiết bị mutex sử dụng đằng sau chương trình Mutex thiết bị tất khơng có Bạn có khóa hay khơng Tương tự mutex, có semaphore Trong số tình mà bạn muốn giới hạn số u cầu định, ví dụ, semaphore quản lý theo cách ngun tử Ví dụ, cho phép giá trị tối đa ba Sau đó, tối đa ba yêu cầu “nhận” thành công Các yêu cầu “nhận” bổ sung chặn nhiều yêu cầu “cung cấp” thực để trả lại khoảng trống X TIMER Timer quan trọng nhiều ứng dụng, bao gồm chương trình nhấp nháy Khi bạn có nhiều tác vụ tốn thời gian CPU, delay không khơng đáng tin cậy, mà cịn lấy tác vụ khác thời gian CPU, sử dụng hiệu Trong hệ thống RTOS, thường có ngắt “systick” giúp quản lý thời gian Cái ngắt systick không theo dõi số lượng “ticks” phát hành nay, mà sử dụng lập lịch trình tác vụ để hốn đổi tác vụ Trong FreeRTOS, bạn chọn delay việc thực số tick định Điều hoạt động cách đánh dấu “thời gian đánh dấu” phát triển cho tác vụ khác thời gian đánh dấu bắt buộc đến Bằng cách này, độ xác delay giới hạn khoảng thời gian chọn định cấu hình Nó cho phép tác vụ khác thực công việc thực thời điểm đến FreeRTOS có tiện ích timer “ảo” (software timer) tạo Chỉ đếm thời gian hết hạn hàm callback thực Cách tiếp cận nhớ tiết kiệm tất định thời gian sử dụng ngăn xếp XI Nhóm EVENT Một vấn đề thường xảy tác vụ cần phải theo dõi nhiều hàng đợi lúc Ví dụ, tác vụ cần phải chặn tin nhắn đến từ hai hàng đợi khác FreeRTOS cung cấp cho việc tạo “bộ hàng đợi.” Điều cho phép tác vụ chặn tin nhắn từ hàng đợi tập hợp có tin nhắn Điều event người dùng xác định? Các nhóm event tạo phép bit nhị phân đại diện cho event Khi thiết lập, API FreeRTOS cho phép tác vụ đợi kiện kết hợp cụ thể xảy Các kiện kích hoạt từ code tác vụ thơng thường từ bên ISR (interrupt service routine: dịch vụ ngắt) C Giới thiệu module dùng Trong đề tài I DHT11 Tổng quan : Đây hiệu chỉnh nhiệt độ kỹ thuật số độ ẩm mô-đun với onboard cảm biến DHT11 sử dụng để phát nhiệt độ môi trường độ ẩm, thông qua tiêu chuẩn singlewire giao diện Thông số kỹ thuật  nhiệt độ • độ phân giải: ° C • độ xác: ° C • phạm vi đo: ° C ~ 50 ° C  độ ẩm • phân giải: 1% RH • độ 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 Ứng dụng • trạm thời tiết • điều khiển độ ẩm 10 • Test & thiết bị phát II Đồng Hồ RTC STM32 RTC ? RTC hay Real Time Clock ngoại vi sử dụng đồng hồ – lịch thời gian thực Thuật ngữ thời gian thực thời gian sống người ngày, thời gian tính tốn Timer khác Để RTC hoạt động cần nối chân Vbat vi điều khiển với nguồn 3V, thường sử dụng Pin Cmos, nguồn điện giúp trì xung RTC hoạt động bình thường Ưu nhược điểm RTC on chip so với IC RTC khác DS3231, DS1307 Ưu điểm: • Tiết kiệm chi phí linh kiện, góp phần giảm giá thành sản phẩm • Có thể sử dụng ghi Backup 16bit Eprom điều mà STM32 thiếu Nhược điểm • Sai số từ dao động lớn (1%), chạy lâu dài dẫn tới sai thời gian Các thơng số STM32 RTC • Có thể cấu hình Clock đầu vào theo nguồn là: LSE, HSE, LSI • Bộ chia clock lên đến 20 bit, giúp RTC hoạt động xác • Độ phân giải timer RTC lên đến 32 bit – tức 2^32 giây tràn cần reset lại • nguồn clock source sử dụng • loại Reset RTC riêng biệt • Có ngắt hỗ trợ : ngắt Alarm, ngắt giây, ngắt tràn đếm 11 Trong hướng dẫn này, hướng dẫn bạn tạo đồng hồ chạy thời gian thực, chạy nguồn vi điều khiển có bị hay khơng Bắt đầu Các chức RTC: • Bộ chia clock lên đến 20 bit, giúp RTC hoạt động xác • Độ phân giải timer RTC lên đến 32 bit – tức 2^32 giây tràn cần reset lại • nguồn clock source sử dụng • loại Reset RTC riêng biệt • Có ngắt hỗ trợ : ngắt Alarm, ngắt giây, ngắt tràn đếm Giản đồ block khối RTC: Cấu tạo lòng RTC nguồn Hãy phân tích giản đồ để hiểu trình hoạt động RTC trước qua số ghi quan trọng RTC Bộ RTC gồm phần chính: • Đầu tiên, APB1 Interface sử dụng để giao tiếp với APB1 bus APB1 Interface giúp cho Core đọc ghi liệu đến ghi RTC thơng qua APB1 bus Ngồi ra, APB1 interface APB1 bus clock trình giao tiếp liệu • Tiếp theo, khối RTC chia làm phần chính: o Khối đầu tiên, RTC prescaler sau cấp clock cho RTC qua RTC_DIV để chia tần, lập trình tạo tần số lên đến 1Hz (1s) 12 o Sau xung TR_CLK cấp vào khối 32 bit programmable counter, giá trị RTC_CNT theo với tần số TR_CLK cấp vào, RTC_CNT so sánh với giá trị định sẵn RTC_ALR để tạo ngắt đánh thức hệ thống dậy chế động Standby mode(chế độ tiết kiệm lượng) Một Số ghi quan trọng a RTC_CR – RTC control registe Thanh ghi bao gồm ghi high low với bit sau: • OWIE: cờ báo ngắt tràn đếm vượt qua giá trị 2^32 • ALRIE: cờ báo ngắt Alarm – giống báo thời gian báo thức đồng hồ hẹn • SECIE : cờ báo ngắt 1s xảy • RTOFF: cờ báo RTC có chạy hay khơng • CNF: Cờ báo có trình cấu hình hay cấu hình xong • RSF: cờ báo ghi đồng bộ, thống với hay chưa • OWF : cờ báo tràn đếm vượt qua giá trị 2^32 • ALRF: cờ báo Alarm – giống báo thời gian báo thức đồng hồ hẹn • SECF: cờ báo 1s xảy 13 b, RTC_DIV – RTC prescaler divider register D ĐÚC KẾT ĐỀ TÀI VÀ DEMO SẢN PHẨM 14 15 16 ... nhiên, hệ thống đa tác vụ ưu tiên, tin nhắn thêm nửa trước bị gián đoạn để thực tác vụ khác Trong FreeRTOS, hàng đợi thiết kế để có tin nhắn thêm vào theo cách nguyên tử Để thực điều này, số loại thiết. .. hay hệ điều hành thời gian thực thường nhúng dòng vi điều khiển dùng để điều khiển thiết bị cách nhanh chóng đa nhiệm (multi tasking) Để hiểu rõ ràng trước hết làm rõ khái niệm hệ điều hành Hệ. .. tương tác với người tương tác với phần mềm thiết bị khác • Hệ điều hành thời gian thực (realtime): sinh cho tác vụ cần phản hồi nhanh hệ thống, thường nhúng loại vi điều khiển khơng có giao diện

Ngày đăng: 06/06/2022, 15:24

HÌNH ẢNH LIÊN QUAN

• Có thể cấu hình Clock đầu vào theo 3 nguồn đó là: LSE, HSE, LSI - Đồ án thiết kế hệ thống nhúng (11)
th ể cấu hình Clock đầu vào theo 3 nguồn đó là: LSE, HSE, LSI (Trang 11)
• CNF: Cờ báo có đang trong quá trình cấu hình hay đã cấu hình xong. - Đồ án thiết kế hệ thống nhúng (11)
b áo có đang trong quá trình cấu hình hay đã cấu hình xong (Trang 13)

TỪ KHÓA LIÊN QUAN

w