Tìm hiểu SWI và động cơ bước hiển thị số vòng quay qua LED đơn
Trang 1MỤC LỤC
I Cơ sở lý thuyết 3
1 Tìm hiểu về RTOS 3
1.1 RTOS là gì ? 3
1.1.1 Hệ thống thời gian thực (Real time System): 3
1.1.2 Thời gian thực cứng (Hard Real-time) và thời gian thực mềm (Soft Real- Time): 3
1.1.3 Định nghĩa hệ điều hành thời gian thực RTOS: 4
1.2 Các thành phần trong RTOS: 4
1.2.1 Bộ lịch trình (Scheduler): 4
1.2.2 Bộ điều phối (Dispatcher): 6
1.2.3 Các đối tượng (Objects) trong RTOS: 7
1.3 Định nghĩa Tasks: 8
1.3.1 Task hệ thống (System Task): 8
1.3.2 Các trạng thái của một Task: 9
1.3.3 Cấu trúc của một Task: 10
2 Tìm hiểu về SWI 10
2.1 Định nghĩa SWI 10
2.2 Độ ưu tiên SWI trong hệ thống 10
2.3 Quy tắc lập lịch trình (Scheduling Rules) 11
2.4 Các bước xử lí trong hệ thống 12
3 Động cơ bước 12
3.1 Khái niệm 12
3.3 Phân loại 13
3.4 Ưu điểm và nhược điểm 13
4 Giới thiệu về Kit Launchpad dùng vi điều khiển TivaC 14
II Thiết kế 15
1 Sơ đồ khối 15
2 Kết nối phần cứng 16
3 Thiết kế phần cứng 16
3.1 Phím nhấn 15
Trang 22
3.2 Led đơn 17
3.3 Mạch bảo vệ 17
3.4 Mạch đệm dòng 18
4 Phần mềm CCS 18
III Code điều khiển 18
IV Kết quả đánh giá 24
1 Kết quả đạt được 24
2 Ưu điểm và hạn chế: 24
3 Đề nghị 24
TÀI LIỆU THAM KHẢO 24
Trang 3TÌM HIỂU SWI VÀ ĐỘNG CƠ BƯỚC HIỂN THỊ
SỐ VÒNG QUAY QUA LED ĐƠN
1.1 RTOS là gì ?
1.1.1 Hệ thống thời gian thực (Real time System):
Thời gian (Time) :
Sự chính xác của hệ thống không chỉ phụ thuộc vào kết quả tính toán logic mà còn phụ thuộc vào thời gian cho ra kết quả
Thực (Real):
Đáp ứng của hệ thống với những sự kiện bên ngoài
Thời gian thực (Real-Time):
Phải đảm bảo các yếu tố:
Đáp ứng nhanh
Dự đoán được
Các tác vụ (Real-time Task) được xác định bằng deadline
Deadline là thời gian tối đa một tác vụ phải hoàn thành việc thính toán
1.1.2 Thời gian thực cứng (Hard Real-time) và thời gian thực mềm (Soft Real-Time):
Trang 44
Thời gian thực cứng:
Một tác vụ là thời gian thực cứng nếu như thời gian tính toán vượt quá deadtime có thể gây ra sự phá vỡ môi trường điều khiển
Thời gian thực mềm:
Một tác vụ là thời gian thực mềm nếu như đảm bảo thực thi trong deadtime cho phép và nếu như không đảm bảo thì sẽ không tạo ra những nguy hại nào đáng kể cho hệ thống và không làm ảnh
hưởng đến sự ứng xử của hệ thống
1.1.3 Định nghĩa hệ điều hành thời gian thực RTOS:
Là hệ thống có:
Lịch trình thực thi theo thời gian
Quản lý tài nguyên hệ thống
Cung cấp những nền tảng cơ bản để phát triển các ứng dụng trên nó
Đối tượng (Object):
Là những cấu trúc đặc biệt (Kernel) giúp người lập trình tạo ra các ứng dụng
Trang 5 Là một phần vô cùng quan trọng của lõi hệ thống điều khiển (Operating System Kernel)
Nó giúp xác định tác vụ (task) nào sẽ dành quyền CPU để thực thi tiếp theo Sau đó, nó thực hiện việc chuyển trạng thái (context switching) được thực hiện bằng bộ điều phối (dispatcher)
Hình 3: Chuyển đổi trạng thái (Context Switching)
Trạng thái (ngữ cảnh) của tác vụ (Task)
Mỗi task có một trạng thái riêng của nó, nó chính là trạng thái của những thanh ghi (registers)
Mỗi thời điểm 1 task mới được tạo ra, kernel sẽ tạo ra và lưu giữ một block điều khiển liên quan đến task đó (TCBs) TCBs là những cấu trúc dữ liệu hệ thống mà kernel dùng để lưu trữ những thông tin đặc trung của task TCBs chứa mọi thứ mà một kernel cần
để biết về một task cụ thể nào đó Khi task đnag chạy, trạng thái của
nó là động Trạng thái động này được lưu trữ trong TCB Khi task không còn chạy nữa, trạng thái sẽ bị đóng băng (frozen) trong TCB,
và được sử dụng cho lần thực thi tiếp theo của task
Công tắc chuyển đổi trạng thái (Context Switch):
Sẽ xảy ra khi bộ lịch trình (scheduler) chuyển từ một trạng thái này sang một trạng thái khác
Việc chuyển đổi trạng thái bao gồm:
Thời gian chuyển đổi:
Là thời gian tiêu tốn để cho bộ lịch trình chuyển từ task này sang task khác
Nó không có liên quan nào đến các lệnh thực hiện trong task Nếu một ứng dụng được thiết kế mà xảy ra chuyển đổi trạng thái thường xuyên thì có thể dẫn đến những thực thi không cần thiết
Vì vậy, nên thiết kế ứng dụng theo cách mà tạo ra ít chuyển đổi trạng thái nhất
Khi nào chuyển đổi xảy ra:
Mỗi khi ứng dụng tạo một lời gọi hệ thống (System Call), bộ lịch trình sẽ xác định rằng có cần chuyển đổi trạng thái hay không Khi bộ lịch trình xác định việc chuyển đổi là cần thiết thì sẽ gọi bộ phân phối (dispatcher) để thực hiện việc chuyển đổi
Trang 66
Ví dụ: Khi bộ thực thi của Kernel xác định cần dừng việc thực thi Task 1 để chuyển qua trạng Task 2 thì nó sẽ thực thi theo các bước sau: Kernel sẽ lưu thông tin trạng thái của Task 1 Load thông tin trạng thái của Task 2, Task 2 trở thành luổng (thread) thực thi hiện tại Trạng thái chuyển đổi của Task 1 sẽ được đóng bang trong khi Task 2 đang được thực thi, nhưng nếu như bộ chuyển đổi xác định cần chạy lại Task 1 thì Task 1 sẽ quay lại vị trí ngay trước khi nó bị chuyển đổi
Hình 4: Ví dụ về Contex Switch
1.2.2 Bộ điều phối (Dispatcher):
Dòng thực thi (Flow of Execution):
Tại bất kì thời điểm nào RTOS đang chạy, dòng thực thi sẽ chuyển đến 3 vùng: đến các Task ứng dụng (application Task), đến một chương trình phục vụ ngắt (ISR), hoặc đến Kernel
Khi nào bộ phân phối được thực hiên:
Khi một Task hoặc ISR tạo một lời gọi hệ thống, dòng điều khiển sẽ chuyển đến Kernel để thực thi một trong số những thủ tục được cung cấp bởi Kernel
Khi rời khỏi Kernel, dispatcher sẽ có trách nhiệm là chuyển lệnh điều khiển đến một trong số những Task ứng dụng
Hình 5: Điều phối từ một Task
Trang 7 Cách thực hiện như sau:
Không cần thiết để chuyển toàn bộ lệnh điều khiển đến cùng một task gọi System Call Điều này sẽ được xác định bằng giải thuật phân chia thời gian biểu (scheduling algorithms) của bộ lịch trình (scheduler)
Chuyển đổi thực thi từ một Task
Tùy thuộc vào cách truy cập vào Kernel như thế nào mà dispatching sẽ xãy ra khác nhau Khi một Task thực hiện một lời gọi
hệ thống, dispatcher sẽ được sử dụng để thoát khỏi Kernel mỗi khi Lời gọi hệ thống được hoàn thành Trong trường hợp này, dispatcher được dùng như một lời gọi của lời gọi (call-by-call basic) để nó có thể hỗ trợ cho việc chuyển đổi trạng thái của Task Bất kì Task nào cũng có thể gọi system call Một hay nhiều Task có thể ở trạng thái sắn sàng cho thực thi
Chuyển đổi thực thi từ 1 chương trình phục vụ ngắt (ISR):
Hình 6: Điều phối từ một ISR
Khi một ISR tạo một System Call, Dispatcher sẽ bị bỏ vô hiệu hóa cho đến khi ISR thưc thi xong Quá trinh này sẽ đúng miễn
là có đủ tài nguyên để chuyển đổi giữa các Task Chuyển đổi trạng thái này sẽ không được diễn ra bởi vì ISR phải được thực thi xong
mà không được ngắt bởi các Tasks Sau khi ISR thực thi xong, Kernel sẽ thoát đến dispatcher để có thể điều phối đến đúng task thực thi tiếp theo
1.2.3 Các đối tượng (Objects) trong RTOS:
Trang 88
Là một kiểu cấu trúc dữ liệu được dùng để đồng bộ hóa hoặc trao đổi thông tin giữa các Tasks
Real-time embedded applications:
Là sự kết nối giữa các đối tượng của Kernel để giải quyết vấn
đề thời gian thực như sự đồng thời, sự đồng bộ, và trao đổi dữ liệu
1.3 Định nghĩa Tasks:
Hình 7: Sơ đồ cấu trúc của một Task cơ bản
Task là một luồng thực thi độc lập mà có thể cạnh tranh chiếm quyền thực thi Một ứng dụng được chia ra làm nhiều Tasks đồng thời (Concurrent Task) để tối ưu khả năng đáp ứng vào ra trong luật thời gian
Một Task được định nghĩa thuần túy là một tập các tham số và cấu trúc dữ liệu
Các thành phần của một Task:
Khi được tạo ra, Task sẽ có tên, ID duy nhất, độ ưu tiên, một block điều khiển Task (TCB), Stack, và các thủ tục thực thi Task
1.3.1 Task hệ thống (System Task):
Bao gồm các Task sau:
Task khởi tạo (Initialization or Startup Task)
Khởi tạo hệ thống và tạo task khởi động hệ thống
Task “Rỗi” (Idle Task)
Idle Task chạy theo chu kì rỗi của hệ thống (idle cycles), được đặt ở độ ưu tiên thấp nhất
Thực thi một vòng lặp vô tận Idle task chắc chắn rằng bộ đếm chương trình luôn luôn có giá trị cho trong trường hợp không có task nào thực thi
Kernel cho phép các thao tác được cấu hình bời người dùng (developer) để chạy những yêu cầu đặc biệt: sleep mode
Trang 9 Task “đăng nhập” (Logging Task)
Là tin nhắn truy cập vào hệ thống
Task “Lỗi” (Exception- Handling Task)
Thực thi các trường hợp lỗi hệ thống hoặc ứng dụng
Task “sữa lỗi” (Debug Agent Task)
Cho phép sữa lỗi thông qua công cụ debug (host debugger) Chú ý rằng các task hệ thống khác có thể được tạo ra trong quá trình khởi tạo, phụ thuộc vào các thành phần có trong Kernel
Hình 8: Các trạng thái của một Task
1.3.2 Các trạng thái của một Task:
Trạng thái của một Task:
Tại bất kì một thời điểm, mỗi task tồn tại một trong số những trạng thái nhỏ bao gồm: Sẵn sàng (Ready), Đang thực thi (Running), hoặc Khóa (Blocked) Khi một hệ thống nhúng thời gian thực chạy, mỗi task thay đổi từ trạng thái này đến trạng thái khác theo quy luật logic của một trạng thái hữu hạn đơn giản (Finite state machine (FSM))
Về cơ bản, 3 trạng thái chính được sử dụng trong hầu hết các
hệ thống Kernel sử dụng phương pháp lịch trình thay thế (preemptive – scheduling)
Trang 1010
1.3.3 Cấu trúc của một Task:
Hình 9: Hiện thực cấu trúc của một Task
Chạy đến kết thúc Task (Run – to – completion Task)
Một ví dụ của Run – to – completion Task là Task khởi tạo
ở cấp ứng dụng (application level) Task khởi tạo có nhiệm vụ khởi tạo ứng dụng và tạo ra các dịch vụ, Tasks, và một số đối tượng của Kernel
Vòng vô tận Task (Enless-Loop Task)
Một cấu trúc Enless-Loop Task bao gồm cả phần code khỏi tạo nhưng phần khởi tạo chỉ cần một lần, sau đó sẽ là vòng lặp vô tận
Một thành phần không thể thiếu của vòng lặp vô tận là một hay nhiều blocking call nẳm trong vòng lặp Những blocking call này cho phép các Task có độ ưu tiên thấp hơn có thể chạy được
2.1 Định nghĩa SWI
SWI (software interrupt) là một ngắt gây ra bởi phần mềm, thường là
bằng một chương trình trong chế độ người dùng
2.2 Độ ưu tiên SWI trong hệ thống
Trang 11Hình 10: Độ ưu tiên SWI trong hệ thống
CPU chỉ thực hiện một lệnh ở một thời điểm nên nó chỉ có thể tạm ngưng việc thực thi một tiến trình đang chạy để thực thi một tiến trình khác rồi sau đó quay trở về thực thi tiếp tiến trình đang bị tạm ngưng
Khi một ngắt xuất hiện, việc thực thi trương trình chính tạm thời bị dừng
và CPU thực hiện rẽ nhánh đến trình phục vụ ngắt ISR Ta có thể nói chương trình chính được thực thi ở mức nền còn ISR được thực thi ở mức ngắt
Mỗi một nguyên nhân dẫn đến ngắt phải được thông qua thanh ghi cho phép ngắt IE (interrupt enable)
Ưu tiên ngắt: Các ngắt có mức ưu tiên cao hơn sẽ được phục vụ trước nhờ thanh ghi IP (interrupt priority)
2.3 Quy tắc lập lịch trình (Scheduling Rules)
Hình 11: Quy tắc lập lịch trình Biểu đồ dưới đây cho thấy độ ưu tiên được sắp xếp theo thứ tự tăng dần từ dưới lên trên với Hwi có ưu tiên cao nhất
Trong hình trên SWI có 2 quá trình, swi_a (p1) và swi_b (p2) có độ ưu tiên cao hơn
Thời gian xử lí linh hoạt
Thường ở “tỉ lệ khung hình”
Chu kỳ là mini giây
Mức độ ưu tiên
Trang 1212
Khởi đầu swi_a đang ở trạng thái running và sau đó Hwi yêu cầu một ngắt swi_post (swi_b) Khi nhận được yêu cầu ngắt từ Hwi thì lập tức swi_b từ trạng thái ready chuyển sang trạng thái running Trong khi đó swi_a đang ở hàng đợi sẵn sàng, khi tiến trình swi_b kết thúc thì swi_a sẽ quay về trạng thái running
Hình 12: Kỹ thuật FIFO Chiến lược FIFO: CPU được cấp phát cho tiến trình đầu tiên trong danh sách sẵn sàng có yêu cầu, và chỉ được giải phóng khi tiến trình đó tự nguyện hoặc có một yêu cầu xuất nhập
Sau khi Hwi gửi yêu cầu ngắt swi_post (swi_b) thì CPU được trả lại cho swi_a (p1), trong khi đó swi_b vẫn ở trạng thái ready và chờ đến khi swi_a thực hiện xong thì swi_b mới chuyển sang trạng thái running
ứng với số xung và tần số xung điện cấp cho động cơ
Mỗi vòng quay của trục động cơ được thiết lập bởi một số lượng hữu
hạn các góc bước, là góc quay của roto mỗi khi stato bị đảo cực tính
3.2 Cấu tạo
Động cơ bước có thể được coi là tổng hợp của hai loại động cơ: Động cơ
một chiều không tiếp xúc và động cơ đồng bộ giảm tốc công suất nhỏ
Động cơ bước có thể được mô tả như là một động cơ điện không dung
chuyển mạch
INT! Hard R/T Process Post Swi Cleanup, RET
Swi Ready Continue Processing
Trang 13Cụ thể, các mấu trong động cơ là rotor và stato là các nam châm vĩnh cửu hoặc trong trường hợp của động cơ biến từ trở nó là những khối răng làm bằng vật liệu nhẹ có từ tính, cho phép chúng quay khá nhanh và với một mô điều khiển thích hợp cho phép chúng khởi động và dừng lại ở bất kỳ vị trí nào
ta muốn một cách dễ dàng
Hình 14: Cấu tạo động cơ bước 3.3 Phân loại
Động cơ bước có thể được phân loại dựa theo cấu trúc hoặc cách quấn
các cuộn dây trên stator
• Dựa theo cấu trúc rotor, động cơ bước được chia thành 3 loại:
- Động cơ bước từ trở biến thiên
- Động cơ bước nam châm vĩnh cửu
- Động cơ bước lai
• Dựa theo các quấn dây trên stator, động cơ bước được chia thành 2 loại:
- Động cơ bước đơn cực
- Động cơ bước lưỡng cực
Ngoài ra, các loại này còn rơi vào một trong hai phương pháp cấu tạo Trong phương pháp thứ nhất, rotor có các răng bình thường Stator có các răng tượng tự để giữ các cuộn dây Trong phương pháp thứ hai, mặt răng của rotor
và stator có nhiều răng nhỏ hơn Ưu điểm của răng nhỏ này là tạo ra các góc
- Dễ dàng điều khiển khởi động, dừng và đảo chiều quay
- Không có chổi than nên làm việc tin cậy
Nhược điểm
- Cộng hưởng sẽ xảy ra khi điều khiển không đúng cách
- Công suất thấp
Trang 1414
Tiva™ C Series TM4C123G LaunchPad Evaluation Board là nền tảng dành cho ARM® Cortex™-M4F Sử dụng chip TM4C123GH6PMI với tính năng hỗ trợ USB 2.0, chế độ ngủ đông, module điều xung (MC PWM) Trên kit
có các nút nhấn, LED RGB, dễ dàng nạp và debug chương trình với CCS hoặc IAR
Một số tính năng cơ bản:
Chuyển động kiểm soát PWM
USB micro-ab kết nối:
Thiết bị chế độ cấu hình mặc định
Máy chủ/OTG chế độ supportable
Rgb dẫn người sử dụng
Hai người sử dụng các thiết bị chuyển mạch (ứng dụng/Wake)
Có sẵn I/O đưa ra tiêu đề trên một 0.1-in (2,54-mm) lưới
Chuyển đổi-lựa chọn nguồn điện:
Hình 15: KIT Tiva C Launchpad
Trang 15II Thiết kế
Hình 16 Sơ đồ khối
KEY nối từ port PA2 đến PA5 của Kit Tiva C
LED ĐƠN nối từ port PC4 đến PC7 của Kit Tiava C
Từ KIT TIVA C nối từ port PD0 đến PD3 với đầu vào MẠCH BẢO VỆ (PC817)
Đầu ra MẠCH BẢO VỆ nối từ chân 1 đến chân 4 của ULN2803 (mạch đệm dòng)
Chân 15 đến chân 18 của ULN2803 nối với MOTOR BƯỚC
3.1 Phím nhấn