Thứ Bảy, 1 tháng 12, 2018

Bài 7. Hẹn giờ ngắt trong vi điều khiển LPC1768

Trong hướng dẫn trước, chúng tôi đã học cách lập trình hầu hết các cổng ngoại vi cơ bản tức là GPIO Port Pin của Vi điều khiển. Ở đây trong hướng dẫn này, chúng tôi sẽ viết ứng dụng đơn giản mà sẽ giới thiệu bạn hẹn giờ ngắt trong LPC1768 vi điều khiển.

Timer là thiết bị ngoại vi nội bộ trong LPC1768. Họ sử dụng đồng hồ CPU để theo dõi thời gian và số lượng. Bộ hẹn giờ tăng cường sử dụng vi điều khiển theo nhiều cách. Bộ hẹn giờ gửi các sự kiện định kỳ và thực hiện các phép đo chính xác. Nó làm cho thời gian có sẵn cho dự án vi điều khiển của bạn. Điều này có nghĩa là bạn có thể bắt đầu sử dụng thông tin thời gian trong chương trình của bạn, mà không cần phải sử dụng vòng quay không sử dụng. Trong hướng dẫn này, mục tiêu của chúng tôi là thiết lập bộ hẹn giờ và sau đó với sự trợ giúp của các ngắt, chúng tôi sẽ nhấp nháy đèn LED.

Bộ định thời trong LPC1768 Thông tin cơ bản

Trong LPC1768 vi điều khiển có bốn giờ Timer 0 , Timer1 , Timer2 và Timer3 . Đây là bộ đếm thời gian / bộ đếm 32 bit có bộ lập trình 32 bit có thể lập trình được. Tất cả đều giống nhau nhưng có thể có các tùy chọn để đặt chúng một cách độc lập. Và có thể được sử dụng mà không can thiệp lẫn nhau.
timer_counter_block_diagram
Timer Counter Block Sơ đồ
Tất cả các bộ đếm thời gian được xây dựng xung quanh một bộ đếm thời gian nội bộ (TC) , đó là một đăng ký 32-bit và tăng dần theo định kỳ. Tốc độ thay đổi bắt nguồn từ tốc độ hiện tại của đồng hồ CPU mà bạn đã kết nối và bộ đếm Prescale được đặt thành. Không có gì nhiều hơn thế. Prescale Counter là bộ chia đồng hồ. Như đã đề cập trước đó, Timer Counter là một thanh ghi 32 bit và nó được đếm trong khoảng từ 0x00000000 đến 0xFFFFFFFF .
Trước khi chúng tôi đi sâu vào các nguyên tắc cơ bản của chương trình, điều quan trọng là phải hiểu quy trình cấp nguồn cho vi điều khiển LPC1768. Cần có thiết bị cấp nguồn trước khi chọn đồng hồ ngoại vi và cài đặt thanh ghi prescale. Chúng ta cần bật hẹn giờ. Khi RESET, hầu hết các thiết bị ngoại vi của LPC đều OFF và không được cung cấp năng lượng bởi vi điều khiển.
Điều này có thể tiết kiệm rất nhiều năng lượng, nhưng vài thiết bị ngoại vi lõi được bật khi LPC bắt đầu, trong số các GPIO, TIMER0 và TIMER1. Điều này có nghĩa là TIMER2 và TIMER3 bắt đầu và nếu bạn cần chúng trong ứng dụng của bạn thì bạn sẽ phải bật chúng lên. Ngoài ra, nếu bạn không cần TIMER0 hoặc TIMER1, bạn thậm chí có thể TẮT chúng để tiết kiệm một số năng lượng.
Thông thường, điều khiển công suất được coi là một tính năng hệ thống và được điều khiển bằng cách đăng ký LPC_SC–> PCONP . Chúng ta sẽ thấy chi tiết trong khi thảo luận về chương trình trong phần sau của hướng dẫn này. Để biết thêm thông tin chi tiết về bộ hẹn giờ, vui lòng truy cập Hướng dẫn sử dụng UM10360 [Chương: 21, Trang số: 499].
Bây giờ hãy móc LED lên Pin P1.29 . Vui lòng tham khảo Bộ mạch:
led-blink-lpc1768-mcu
Mạch Schematic: LED với LPC1768
Chúng ta hãy xem đoạn mã sử dụng TIMER0 để nháy LED khoảng 1 giây,

Giải thích mã:

Hãy để tôi cắt chương trình hoàn chỉnh thành từng phần để giải thích,
Cấp nguồn cho thiết bị; ở đây chúng ta thiết lập bit trong LPC_SC–> PCONP cho TIMER0, để bật nguồn. Đây là cơ bản giống nhau cho hầu hết các thiết bị ngoại vi khác. Sau khi bật tùy chọn nguồn, chúng tôi yêu cầu đặt đồng hồ cho TIMER0 để tắt đồng hồ CPU. Đọc thêm trong Hướng dẫn sử dụng [trang No: 57, Bảng: 40 và Bảng: 42] .
Trong LPC1768 chúng ta có 4 thanh ghi trận đấu cho mỗi Timer. Các thanh ghi đối sánh này có thể được sử dụng vì nhiều lý do như, để đặt lại hẹn giờ, tạo gián đoạn, ngừng bộ hẹn giờ, để tạo tín hiệu thời gian trên pin ngoài. Ở đây trong trường hợp này, Match0 được đặt thành 2 ^ 23 (Lưu ý: vì mã khởi động nhận chip chạy ở 100 MHz theo mặc định, 1 tick hoặc khoảng thời gian timer = 1 / 100MHz = 10ns, do đó (2 ^ 23 + 1) ve = 0.08388609 giây Bạn sẽ thấy đèn LED nhấp nháy sau mỗi 0,083 giây mọi thứ khác trong phần này cũng được nhận xét bằng mã & tự giải thích.
Bên trong trình xử lý ngắt, chúng ta kiểm tra nguồn ngắt. Trong trường hợp này, TIMER0 có thể sản xuất gián đoạn từ Match0 và sau đó bật đèn LED. Chúng ta sẽ thảo luận thêm về tính năng ngắt của vi điều khiển Cortex-M3 trong tương lai. Tôi hy vọng hướng dẫn này sẽ giúp bạn hiểu được ngắt thời gian trong Bộ vi điều khiển LPC1768.

Không có nhận xét nào:

Đăng nhận xét

Bài đăng mới nhất

14. I2C trong LPC2148 vi điều khiển ARM7

Trong bài này, chúng ta sẽ tìm hiểu về cách lập trình I2C trong LPC2148 ARM7 Microcontroller.  Ngoài ra, chúng tôi sẽ giao diện nối tiếp EE...