Vi điều khiển ATtiny85

0
683

Vi điều khiển ATtiny85 là một trong những vi điều khiển AVR nhỏ và hiệu suất cao, dựa trên CPU RISC. Nó là một trong những bộ vi điều khiển 8 chân có hai gói, được sử dụng để điều khiển và giao tiếp giữa các thiết bị và cảm biến khác nhau.

Nó đi kèm với ADC 10-bit và MSSP. ATtiny85 là một trong những thiết bị tiêu thụ điện năng thấp và là một vi điều khiển kích thước nhỏ với 8Kb EEROM và 512 byte RAM đủ để lưu trữ mã lệnh.

Vi điều khiển ATtiny85

Bộ vi điều khiển cũng có một số tính năng an toàn như bộ đếm thời gian cho cơ quan giám sát và nó được sử dụng rộng rãi trong tự động hóa và các hệ thống nhúng khác, khiến nó vẫn đáng tin cậy cho đến thời kỳ hiện đại.

CẤU HÌNH PIN Vi điều khiển ATtiny85

Sơ đồ sơ đồ chân và giải thích thêm về cấu hình chân cho vi điều khiển Avr nhỏ này được liệt kê trong phần này. Tất cả những chi tiết này theo biểu dữ liệu của nó.

Bây giờ, chúng ta sẽ thảo luận về từng chi tiết sơ đồ chân như đã đề cập trong biểu dữ liệu.

NGUỒN ĐẦU VÀO NGUỒN: ATtine85 chỉ có hai chân cắm nguồn do số lượng chân có hạn. Một trong các chân nguồn sẽ dành cho đầu vào nguồn và chân thứ hai sẽ được sử dụng cho điểm chung. Bộ vi điều khiển bật nguồn không được tăng quá điện áp tối đa được thiết kế của nó:

  • VCC – Pin8
  • VCC – Pin8
  • GND – Pin4

OSCILLATOR / CLOCK: Nó đi kèm với xung nhịp bên trong 8MHz và giá trị của đồng hồ có thể thay đổi từ 0-8Mhz nhưng ATtiny85 có khả năng mở rộng bộ dao động lên đến 20MHz. Để tăng giá trị bộ dao động, nó nên được kết nối với các chân dao động của vi điều khiển, đó là:

  • XTAL2/CLKO – GPIO3
  • XTAL1/CLKI – GPIO2                                                                                                                    

DIGITAL INPUT / OUTPUT: Trong bộ vi điều khiển này, mọi chân, ngoại trừ chân nguồn. TẤT CẢ các chân đầu vào / đầu ra được kết nối với thanh ghi Đầu vào / đầu ra hai chiều thông qua các thanh ghi kéo lên bên trong. Bất kỳ chân nào cũng có thể được sử dụng cho mục đích đầu vào hoặc đầu ra nhưng trước tiên, nó phải được mô tả trong một chương trình mà nó phải tuân theo chức năng. Tất cả các chân đầu vào / đầu ra đó là:

  • PB0 – GPIO5
  • PB1 – GPIO6
  • PB2 – GPIO7
  • PB2 – GPIO7
  • PB3 – GPIO2
  • PB4 – GPIO3
  • PB5 – GPIO1

INTERRUPT: Để thu hút sự chú ý của bộ vi điều khiển bằng cách bỏ qua tất cả các hướng dẫn khác, một chân ngắt bên ngoài được sử dụng, có thể được điều khiển bằng bất kỳ đầu ra cảm biến hoặc nút thủ công nào. Bộ vi điều khiển ATtiny85 có một chân ngắt:

  • INT0 – GPIO7

SPI: Cảm biến sử dụng nhiều loại giao tiếp nối tiếp và SPI là một trong số chúng. ATtiny85 cho khả năng hoạt động với các thiết bị khác thông qua giao thức SPI, nó cũng hữu ích trong trường hợp có nhiều thiết bị ngoại vi nhưng ở đây nó chỉ được sử dụng bởi một thiết bị duy nhất trong trường hợp giao tiếp dữ liệu SPI và để lập trình vi điều khiển. Các chân SPI trong bộ vi điều khiển này là:

  • MOSI – GPIO5
  • MISO – GPIO6
  • SCK – GPIO7
  • dW (debug wire) – GPIO1

Các chân MOSI được sử dụng để gửi dữ liệu từ bộ điều khiển, MISO được sử dụng để nhận dữ liệu và SCK là xung đồng hồ. Dây gỡ lỗi sẽ chỉ sử dụng trong trường hợp lập trình.

I2C: ATtiny85 cũng có khả năng giao thức truyền thông I2C. I2data đang được gửi và nhận bởi một dòng duy nhất và một dòng khác được sử dụng để gửi xung đồng hồ để giữ cho dữ liệu đồng bộ theo thời gian. ATtiny85 cũng có các chân I2C là:

  • SDA (Data) – GPIO5
  • SCL (Clock) – GPIO7

TIMER: Trong vi điều khiển này, có hai bộ định thời, cả hai bộ định thời này đều có thể dùng để đếm xung. Cả Timer0 và Timer1 đều có thể hoạt động theo xung nhịp bên trong nhưng Timer0 có thể hoạt động với xung nhịp bên ngoài. Cả hai bộ định thời này đều là 8-bit. Các chân Timer / Counter trong PIC này là:

  • T0 (Timer0) – GPIO7

TIMER / COUNTER / COMPARE: Trong ATiny85 có một số chân đặc biệt có thể được sử dụng để điều khiển nguồn bên ngoài một cách an toàn bằng đầu vào tín hiệu PWM kết hợp bên trong. Các chân này có thể hoạt động theo thời gian cụ thể được gọi là Bộ tạo thời gian chết.

Bộ đếm thời gian bắt đầu đếm và tiếp tục so sánh giá trị của nó cho đến khi nó về không. Trong ATtiny85, hai bộ tạo thời gian chết được sử dụng bằng cách đếm thông qua Timer0 và Timer1 và tín hiệu đầu ra đến ở cả dạng đảo ngược và không đảo ngược, nói cách khác, chúng ta nói ở dạng không chồng chéo. Danh sách các chân này là:

  • OC1B – GPIO
  • OC1B’ – GPIO
  • OC0B – GPIO
  • OC0A – GPIO
  • OC0A – GPIO
  • OC1A – GPIO
  • OC1A’ – GPIO

SO SÁNH ANALOG: So sánh tín hiệu tương tự cũng có thể được thực hiện trong ATtiny85. Nó có một bộ so sánh Analog bên trong có thể được sử dụng để so sánh cùng một tín hiệu tương tự (đảo và không đảo). Đầu ra của cửa hàng so sánh của họ trong sổ đăng ký và có thể được sử dụng thêm. Chân đầu vào bộ so sánh tương tự của ATtiny85 là:

  • AIN0 – GPIO5
  • AIN1 – GPIO6

ANALOG TO DIGITAL CONVERTER: ATtiny85 có 4 kênh đầu vào analog. Đầu vào tương tự được chuyển đổi thành đầu ra kỹ thuật số 10 bit. ATtiny85 chuyển đổi dữ liệu analog ở tốc độ 65-260us, đủ để giữ cho hệ thống cập nhật mỗi giây.

Mức điện áp đầu vào tương tự được quyết định tùy theo điện áp cung cấp, có thể đôi khi gây ra lỗi cho các thiết bị bên ngoài. Để loại bỏ vấn đề này, một chân tham chiếu tương tự được sử dụng, giúp hệ thống hiểu mức điện áp tối đa và tối thiểu theo tham chiếu điện áp đã cho. Điện áp tham chiếu và điện áp tín hiệu đầu vào tương tự không được vượt quá công suất xử lý điện áp thực của bộ điều khiển. Chân tương tự của ATtiny85 là:

  • ADC0 – GPIO1
  • ADC1 – GPIO7
  • ADC2 – GPIO3
  • ADC3 – GPIO2
  • ADC3 – GPIO2
  • Vref – GPIO5

ĐẶT LẠI: Bộ vi điều khiển cũng đi kèm với một thiết lập lại bên ngoài và bên trong. Nó có thể được đặt lại từ chương trình theo một điều kiện cụ thể hoặc nó có thể được điều khiển từ một chân bên ngoài.

Sơ đồ khối

Sơ đồ khối của vi điều khiển ATtiny85 là:

Sơ đồ khối của vi điều khiển ATtiny85 là:

Các ứng dụng

  • ATtiny85 được sử dụng trong các ban phát triển và các dự án sở thích.
  • Trong hệ thống điều khiển công nghiệp, PIC được sử dụng do có nhiều chức năng do hoạt động cụ thể trong các điều kiện đặc biệt.
  • PIC cũng được sử dụng để thao tác tương tự và đo lường của nó.
  • Trong các thiết bị thương mại nhỏ, PIC ATtiny85 được sử dụng.

 Vi điều khiển ATtiny85

Có nhiều mô-đun trong bộ điều khiển nhưng tất cả chúng đều độc lập trên các thanh ghi để hoạt động. Để biết thêm chi tiết và thông tin thêm về sổ đăng ký lập trình của họ, bạn có thể xem qua biểu dữ liệu.

ĐẶT LẠI NGUỒN NÉT: Thiết lập lại Brownout được sử dụng trong vi mạch, giúp bảo vệ nó trong tình huống điện áp thấp. Bất cứ khi nào điện áp giảm xuống so với ngưỡng thì nó sẽ thiết lập lại IC và nhiều dải điện áp cũng được sử dụng để bảo vệ IC.

WATCHDOG TIMER: Đây là một trong những bộ thiết lập lại tốt nhất trong hầu hết các bộ vi điều khiển. Để kích hoạt nó, chỉ có hướng dẫn sẽ được đưa ra khi bắt đầu chương trình. Nó sẽ không ảnh hưởng đến bất cứ điều gì của bộ điều khiển trừ khi bộ điều khiển ngừng hoạt động và sau đó bộ đếm thời gian của cơ quan giám sát sẽ đặt lại ATtiny85 và sẽ khởi động lại.

DÂY GỬI: Trong các chân SPI, bạn có thể nhận thấy rằng chúng ta đã nói về phương pháp lập trình SPI cho PIC nhưng để lập trình bất kỳ bộ điều khiển nào thông qua giao thức SPI, một chân gỡ lỗi sẽ được sử dụng để cắt các lệnh chương trình khỏi CPU và sau đó nó sẽ lập trình không-bộ nhớ dễ bay hơi. Việc sử dụng chân gỡ lỗi sẽ chỉ áp dụng trong trường hợp có chân SPI trên bộ điều khiển, nếu không nó sẽ không có bất kỳ mục đích sử dụng cụ thể nào.

BỘ PHÁT ĐIỆN THỜI GIAN CHẾT: Đó là các cặp đầu ra của PWM trong ATtiny85 cho phép bộ điều khiển điều khiển các công tắc điều khiển bên ngoài một cách an toàn. Nó hoạt động bằng cách sử dụng xung PWM và kiểm tra bằng 0 được sử dụng với Bộ tạo thời gian chết để kiểm tra bộ đếm đã hoàn thành. Dead Timer Generator giúp hai đầu ra không bị chồng chéo.

TỰ LẬP TRÌNH: ATtiny85 đi kèm với tính năng tự lập trình có thể được sử dụng để đặt bộ nạp khởi động của bộ điều khiển. Phương pháp tự lập trình này rất hữu ích trong trường hợp có vấn đề về bộ nhớ cho một sản phẩm thương mại. Nó cũng có thể được sử dụng để nhận dữ liệu cụ thể trong bộ nạp khởi động. Để sử dụng tính năng tự lập trình, bộ điều khiển sẽ cần kích hoạt tính năng này trước tiên nếu không nó sẽ không hoạt động.

Bản đồ bộ nhớ

Bản đồ bộ nhớ tổng của ATtiny85 được đưa ra dưới đây:

Bản đồ bộ nhớ tổng của ATtiny85 được đưa ra dưới đây:

Các tính năng của ATtiny85

Tên Các tính năng
Kiến trúc CPU Kiến trúc RISC 8-bit
Tần số CPU , 0 – 20 MHz
Dải điện áp hoạt động  4.5 – 5.5V
GPIO PORTS 6 I/O Pins
Ngắt Một ngắt bên ngoài trên INT0 – GPIO7
Bộ định thời
  • Bộ đếm 8 bit với các chế độ so sánh một bộ hẹn giờ
  • bộ đếm tốc độ cao 8 bit
PWM 2 PWM channels
UART Not Available
I2C Một kênh I2C
SPI Một kênh giao tiếp SPI với các chân: MOSI – GPIO5, MISO – GPIO6, SCK – GPIO7
LAN No Available
CAN No Available
ADC 4-channel, 10-bit ADC
DAC No Available
Mô-đun USART nâng cao 1 Channel
SRAM 256 bytes
FLASH (Bộ nhớ chương trình) 8K bytes
EEPROM 512 bytes
Bộ so sánh một bộ so sánh tương tự với các chân đầu vào là AIN0 – GPIO5 AIN1 – GPIO6

Lập trình vi điều khiển ATtiny85

Để 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ữ.

  1. Atmel Studio (Hướng dẫn bắt đầu sử dụng Avr studio)
  2. Mikro C cho AVR
  3. AVR – GCC
  4. AVR – chuỗi công cụ dành cho Windows và Linux

Ví dụ về lập trình GPIO

Bây giờ chúng ta hãy xem một ví dụ về việc sử dụng các cổng GPIO. Trong ví dụ lập trình này, chúng tôi sẽ đặt chân 0 và chân 1 của cổng B là mức cao kỹ thuật số. Chân 2 và Chân 3 của Cổng B kỹ thuật số thấp. Chúng tôi cũng khai báo GPIO4 và GPIO5 là các chân đầu vào kỹ thuật số.

PORTB = (1 << PB4) | (1 << PB1) | (1 << PB0);

DDRB = (1 << DDB3) | (1 << DDB2) | (1 << DDB1) | (1 << DDB0);

Ví dụ về chương trình nhấp nháy đèn LED

Chúng ta thấy một ví dụ về đèn LED nhấp nháy với một nút nhấn.

#include <avr / io.h>
int main (void)
{
   // Đặt cổng b chân 4 làm chân đầu ra kỹ thuật số
   // Kết nối đèn LED với chân này
  DDRB | = (1 << PB4);
   // Đặt chân 5 của cổng b làm chân đầu vào kỹ thuật số
   // Kết nối công tắc với chốt này
   DDRB & = ~ (1 << PB5);
   // Kích hoạt điện trở kéo lên của PB5
    PORTB | = (1 << PB5);
    trong khi (1)
    {
   // Kiểm tra xem công tắc có mở không, đèn LED vẫn tắt
        if (PINB & (1 << PB5))
       {
            PORTB & = ~ (1 << PB4);
      }
   // Kiểm tra xem công tắc đã đóng chưa, có bật đèn LED không khác {
            PORTB | = (1 << PB4);
        }
    }

Mã này chỉ cần bật một đèn LED được kết nối với PB5 theo trạng thái của công tắc mà chúng tôi kết nối với PB4.

>>> Mời anh em xem thêm

Tôi là một người làm việc trong lĩnh vực cơ khí, thiết bị công nghiệp....Blog là nơi tôi chia sẻ thông tin hữu ích đến các bạn đọc.
Subscribe
Notify of
0 Bình luận
Inline Feedbacks
View all comments