ATtiny45 là một trong những bộ vi điều khiển phổ biến nhất do có kích thước nhỏ và nhiều tính năng. Bộ vi điều khiển này được ứng dụng trong nhiều hệ thống nhúng và thậm chí là trong các ứng dụng ở cấp độ công nghiệp.
Bộ vi điều khiển ATtiny45 cho phép nhà thiết kế tối ưu hóa sức mạnh và hiệu suất thông qua lập trình. Được thiết kế bằng cách sử dụng công nghệ AVR và RSIC giúp bộ điều khiển tiêu thụ ít điện năng hơn và với việc sử dụng bộ dao động bên trong làm tiết kiệm điện hơn.
Tóm lại, hầu hết các dự án của bo mạch phát triển và đồ án sinh viên sử dụng ATtiny85 để giảm kích thước của dự án mong muốn khác nhau bằng cách sử dụng các package khác nhau. Trong bài viết này, chúng ta sẽ làm rõ những điều sau:
- Sơ đồ cấu hình chân
- Chi tiết sơ đồ chân
- Tính năng và thiết bị ngoại vi
- Ứng dụng và datasheet
Sơ đồ chân ATtiny45
Trong phần này, sẽ đề cập chi tiết cấu hình chân:
Giải thích cấu hình chân Attiny45
Bây giờ sẽ bắt đầu xem xét chi tiết sơ đồ chân và tất cả các thiết bị ngoại vi của nó. Thông tin này có trong datashet.
Các chân nguồn cấp
ATtiny45 chỉ có hai chân nguồn do số lượng chân có hạn. Một chân là đầu vào cấp nguồn và chân thứ hai là chân nối đất. Chân nối đất sẽ làm điểm nối đất chung với vi điều khiển và các thiết bị bên ngoài. Các chân nguồn trong ATtiny45 là:
- VCC – Chân 8
- GND – Chân 4
Bộ dao động / chân xung clock
Bộ vi điều khiển có bộ dao động bên trong từ 0-8MHz nhưng cũng cho khả năng lên đến từ 10 đến 20MHz. Giá trị của xung clock bên ngoài phụ thuộc vào package khác nhau. Bộ tạo dao động / xung clock bên ngoài yêu cầu các chân bên ngoài là:
- XTAL1 / CLKI – GPIO2
- XTAL2 / CLKO – GPIO3
Module Timer Attiny45
ATtiny45 có hai bộ định thời 8 bit bên trong có thể được sử dụng để đếm. Việc đếm có thể được thực hiện bằng lập trình nhưng timer0 có chân đầu vào bên ngoài được sử dụng để nhận xung đầu vào, sau đó đếm giá trị. Chân đầu vào xung bên ngoài của Timer0 là:
- T0 – GPIO7
Chân I/O Digital
Trong bộ vi điều khiển này, chỉ có một Cổng GPIO (Cổng B) có khả năng thực hiện nhiều chức năng I / O. Cổng B có điện trở kéo đầu vào cho phép thực hiện chức năng đầu vào và cổng cũng có thể cấp tín hiệu đầu ra thông qua lập trình. Các chân I / O trong vi điều khiển là:
- PB0 – GPIO5
- PB1 – GPIO6
- PB2 – GPIO7
- PB3 – GPIO2
- PB4 – GPIO3
- PB5 – GPIO1
Chân ngắt
Hầu hết mọi mạch đều yêu cầu một chân ngắt trong trường hợp code khẩn cấp hoặc để giao tiếp với một số module. ATtiny45 có một chân ngắt duy nhất có thể được sử dụng để báo tín hiệu xử lý sự kiện riêng trong CPU thông qua lập trình. Chân ngắt của bộ vi điều khiển được đưa ra dưới đây:
- INT0 – GPIO7
Giao tiếp SPI (3-wire)
Hầu hết các module sử dụng nhiều giao thức giao tiếp khác nhau và SPI là một trong số đó. Trong ATtiny45, giao thức SPI được sử dụng để lập trình bằng cách sử dụng chân debug. Do không có sẵn chân SS, nên bộ điều khiển sẽ sử dụng chân đầu ra để giao tiếp:
- MOSI / DO – GPIO5
- MISO / DI – GPIO6
- SCK / USCK – GPIO7
Module giao thức I 2 C
Giao thức I 2 C được hỗ trợ trong bộ điều khiển. Giao thức này yêu cầu hai dây, một dây cho xung ckicj và một dây để truyền / nhận dữ liệu. Cả hai chân này được liệt kê bên dưới:
- SDA (dữ liệu) – GPIO5
- SCL (xung clock) – GPIO7
Chân dW
Có nhiều cách để lập trình vi điều khiển, một trong những cách là thông qua giao thức SPI. Một số thiết bị SPI có thể được sử dụng để lập trình bộ điều khiển nhưng để lập trình bộ điều khiển, một chân debug sẽ được yêu cầu. Chân gỡ lỗi trên ATtiny45 được cung cấp dưới đây:
- dW – GPIO1
Module so sánh analog ATtiny45
Được sử dụng để so sánh các tín hiệu đầu vào analog. Bộ so sánh analog có các chân đầu vào nhưng không có chân đầu ra. Đầu ra của bộ so sánh được sử dụng bởi các thanh ghi bên trong để xử lý hoặc được lập trình để xuất giá trị được so sánh cụ thể. Các chân đầu vào nhận cùng một tín hiệu analog đảo và không đảo ngược. Các chân của bộ so sánh analog trên vi điều khiển là:
- AN0 – GPIO5
- AN1 – GPIO6
Chân CAPTURE / COMPARE / PWM
PWM là yêu cầu tín hiệu đầu ra bắt buộc đối với hầu hết các thiết bị có điều khiển tốc độ và chân capture / compare / PWM cho phép vi điều khiển tạo PWM với xung clock khác nhau bằng cách sử dụng bộ Prescaler.
Capture lấy tín hiệu đầu vào và giữ tín hiệu so sánh với timer0 và timer1, sau đó xuất tín hiệu đầu ra theo code và có tín hiệu không bị chồng chéo. Các chân đầu ra trên vi điều khiển là:
- OC1B ‘- GPIO2
- OC0B – GPIO6
- OC1B – GPIO3
- OC1A – GPIO6
- OC1A ‘- GPIO5
- OC0A – GPIO5
Các kênh chuyển đổi tín hiệu analog sang digital
ATtiny45 có bộ chuyển đổi analog sang digital 10 bit lấy đầu vào từ bốn kênh đầu vào analog và sau đó lưu dữ liệu vào thanh ghi 10 bit. Dữ liệu có thể được sử dụng bên trong thông qua code hoặc có thể nhận tín hiệu ở các chân đầu ra. Các chân chuyển đổi từ Analog sang Digital trên ATtiny45 là:
- ADC0 – GPIO1
- ADC1 – GPIO7
- ADC2 – GPIO3
- ADC3 – GPIO2
Chân AREF
Tất cả bộ ADC đều sử dụng điện áp nguồn cấp làm tham chiếu đo giá trị tín hiệu analog nhưng trong ATtiny45 có một chân tham chiếu analog để chuyển đổi mức tín hiệu analog theo điện áp trên chân tham chiếu analog. Chân tham chiếu tương tự là:
- AREF – GPIO5
Chân reset
Bộ vi điều khiển có reset bên trong và bên ngoài. Chân reset bên ngoài trên ATtiny45 có thể được kích hoạt từ các module hoặc nút nhấn bên ngoài khi có yêu cầu reset bộ điều khiển. Chân reset bên ngoài trên ATtiny45 là:
- RESET – GPIO1
Các lựa chọn thay thế là: ATtiny88, ATtiny85, ATmega328P
Sơ đồ khối vi điều khiển ATtiny45
Sơ đồ khối của vi điều khiển được đưa ra dưới đây. Sơ đồ này mô tả tất cả các thiết bị ngoại vi và thể hiện bus dữ liệu và bus địa chỉ 8 bit.
Lập trình vi điều khiển ATtiny45
Để lập trình vi điều khiển Atmel, chúng ta luôn cần một trình biên dịch. Đây là những trình biên dịch phổ biến được sử dụng để lập trình bằng ngôn ngữ c hoặc hợp ngữ (assembly).
- Atmel Studio (Hướng dẫn bắt đầu sử dụng Avr studio )
- Mikro C dành cho AVR
- AVR – GCC
- AVR – toolchain dành cho Windows và Linux
Lưu ý: Bạn cũng có thể lập trình vi điều khiển nhỏ với cổng ISP Arduino Uno.
Lập trình với Arduino ISP
Arduino Uno có các chân ISP sử dụng để lập trình chip Attinyxx bằng phần mềm Arduino IDE. Chỉ cần tạo kết nối vi điều khiển dòng ATtinyxx và Arduino như hình sau:
Chân Arduino Uno R3 | Chân chip ATtiny45 |
Chân 5V | Chân Vcc |
GND | GND |
Chân 13 | Chân 2 |
Chân 12 | Chân 1 |
Chân 11 | Chân 0 |
Chân 10 | Reset |
Bây giờ hãy làm theo các bước sau:
- Đầu tiên, thực hiện kết nối phần cứng như sơ đồ mạch trên và theo bảng
- Mở phần mềm IDE Arduino và chọn bộ xử lý
- Vào menu Arduino IDE và chọn “Programmer – Select Arduino as ISP”
- Có thể thay đổi tần số hoạt động của bộ xử lý. Để thay đổi tần số, hãy vào mục tools và chọn “Clock and select frequency”
- Ghi bootloader vào ATtiny45
- Sau đó, viết một code test và nạp lên thiết bị của bạn
Các ngoại vi
SELF PROGRAMMING: Là một trong những cách lập trình phổ biến và hiệu quả nhất trong bộ điều khiển. Trong Self Programming, dữ liệu được lưu trong bộ nhớ boot và sau đó thực thi khi khởi động. Self Programming hiệu quả khi cần thực hiện cùng một chương trình ở mọi lúc, giúp giải quyết vấn đề bộ nhớ và tăng hiệu quả của bộ điều khiển.
USI: Là một trong những cách giao tiếp tốt nhất cho mọi bộ điều khiển. Nó có hai dây và ba dây. Trong vi điều khiển, giao thức ba dây được gọi là SPI và hai dây được gọi là I 2 C. Cả hai giao thức này đều truyền dữ liệu tuần tự và cho phép vi điều khiển lập trình các lệnh trong vi điều khiển bằng giao thức SPI.
Bộ tạo thời gian chết (Deadtime Generator): Trong ATtiny45 bộ tạo thời gian chết được kết nối với các chân đầu ra. Bằng cách sử dụng bộ vi điều khiển tạo thời gian chết, bộ vi điều khiển có khả năng tạo ra tín hiệu đầu ra với xung khác nhau. Tín hiệu đầu ra cũng có thể được tạo ra ở dạng non-overlap và overlap.
Ứng dụng Attiny45
- Hiển thị như LCD chủ yếu kết hợp với các bộ vi điều khiển nhỏ.
- Thực hiện một chức năng duy nhất trong công nghiệp
- Được sử dụng ở cả cấp độ thương mại và phát triển vì hiệu suất của nó.
- Hệ thống điều chỉnh điện áp có thể được vận hành với ATtiny45.
SƠ ĐỒ 2D Attiny45
>>> Mời anh em xem thêm