While regular Hackaday readers already know how to blink a LED with a microcontroller and have moved onto slightly more challenging projects such as solving the Navier-Stokes equations in 6502 assembly, that doesn’t mean there’s not không gian cho người mới. [Rik] đã xuất bản một hướng dẫn tuyệt vời về việc lạm dụng DMA cho những thứ Blinkier Glowy. Tại sao bất cứ ai muốn tìm hiểu về các kỹ thuật DMA? Đối với Blinkier Glowy, tất nhiên.
Hướng dẫn này giả định kiến thức về đa kênh LED và ma trận LED, hoặc về cơ bản là một loạt các đèn LED được kết nối với nhau trên lưới XY. Cách ngây thơ để lái một lưới đèn LED 8 × 8 được gắn tám catốt vào chân GPIO trên vi điều khiển, gắn tám cực dương vào một bộ chân GPIO và tìm nguồn cung cấp và hiện tại chìm theo yêu cầu. Số pin có thể được giảm với các thanh ghi ca, và LED làm mờ có thể được thực hiện với PWM. Điều này kết thúc khóa học Arduino tám tuần chuyên sâu của chúng tôi.
Nhờ các bộ vi điều khiển không bị mắc kẹt vào những năm 1980, các kỹ thuật mới có thể được sử dụng để lái những ma trận LED này. Hầu hết các bộ vi điều khiển cánh tay mạnh mẽ hơn đi kèm với DMA, ngoại vi để truy cập bộ nhớ trực tiếp. Thay vì có CPU thực hiện tất cả các công việc, bộ điều khiển DMA chỉ có thể xáo trộn xung quanh các bit giữa bộ nhớ và chân. Điều này có nghĩa là các dự án chớp mắt và đèn LED phát sáng hơn.
Phương pháp của [RIK] cho đèn LED DMAING bao gồm thiết lập một ‘mảng OL lớn trong mã, khởi động chính xác thiết bị ngoại vi DMA và nối dây ma trận LED lên một vài chân. Kỹ thuật này có thể được mở rộng thành hình ảnh động với 64 mức độ sáng, một thứ sẽ mất một lượng năng lượng xử lý đáng kinh ngạc (ít nhất là với vi điều khiển, ít nhất) nếu không có bộ điều khiển DMA.
Thiết lập được sử dụng trong các thí nghiệm này là bảng nucleo STM32F103 cùng với IDE OpenStm32. [Rik] đã phát hành tất cả các mã trên GitHub, và tất nhiên, bạn đã được khuyến khích chơi xung quanh.