Bộ vi điều khiển ATMEGA328P

0
598

ATmega328P là một trong những vi điều khiển công nghệ AVR hiệu suất cao với số lượng chân cắm và tính năng lớn.

Được thiết kế bằng công nghệ CMOS 8-bit và CPU RSIC giúp nâng cao hiệu suất và tối ưu mức sử dụng năng lượng nhờ có chế độ ngủ tự động và cảm biến nhiệt độ bên trong.

ATmega328P có mạch bảo vệ bên trong và có nhiều cách lập trình giúp các kỹ sư sử dụng linh hoạt ở các tính huống khác nhau. IC hỗ trợ nhiều giao thức giao tiếp hiện đại cho các module khác và chính bộ vi điều khiển, đó là lý do tại sao ATmega328P được sử dụng phổ biến.

Sơ đồ chân ATmega328P

Trong phần này, chúng ta sẽ xem chi tiết cách sử dụng của từng chân và sơ đồ chân của vi điều khiển 28 chân này. Hình ảnh này cho thấy sơ đồ chân:

Sơ đồ chân ATmega328P

Các lựa chọn thay thế vi điều khiển atmel: ATtiny45, ATtiny88, ATtiny85

Chi tiết cấu hình chân

Chân I/O digital

Bộ vi điều khiển này có ba cổng digital (B, C, D) là PORT B, PORT C và PORT D. Tất cả các chân này có thể được sử dụng làm I/O digital. Trên hết, mỗi cổng có thể được sử dụng cho các chức năng khác. Để sử dụng làm I/O hoặc cho các chức năng khác, phải được xác định trước vì các chân không có chức năng mặc định. Các chân I / O digital của bộ điều khiển là:

  • PB0 – GPIO14
  • PB1 – GPIO15
  • PB2 – GPIO16
  • PB3 – GPIO17
  • PB4 – GPIO18
  • PB5 – GPIO19
  • PB6 – GPIO9
  • PB7 – GPIO10
  • PC0 – GPIO23
  • PC1 – GPIO24
  • PC2 – GPIO25
  • PC3 – GPIO26
  • PC4 – GPIO27
  • PC5 – GPIO28
  • PC6 – GPIO1
  • PD0 – GPIO2
  • PD1 – GPIO3
  • PD2 – GPIO4
  • PD3 – GPIO5
  • PD4 – GPIO6
  • PD5 – GPIO11
  • PD6 – GPIO12
  • PD7 – GPIO13

Chân ngắt

Hầu hết các chức năng điều khiển đều yêu cầu hệ thống ngắt hoạt động như bộ điều chỉnh độ sáng AC, v.v. ATmega328P hỗ trợ 2 bộ ngắt trong bộ điều khiển được sử dụng để báo thực thi sự kiện trong CPU bất cứ lúc nào. Các chân ngắt của ATmega328P được đưa ra dưới đây:

  • IN0 – GPIO4
  • IN1 – GPIO5

Module giao tiếp UART ATmega328P

Mặc dù có nhiều giao thức trong các thiết bị và module nhưng phổ biến nhất là USART. Đây là một trong những giao thức đơn giản và dễ thực hiện và dễ hiểu nhất. Trong giao thức này, hai dây được sử dụng để gửi và nhận dữ liệu. Các chân USART của vi điều khiển ATmega328P là:

  • RX – GPIO2
  • TX – GPIO3

Dữ liệu được gửi theo tốc độ gửi được xác định trong bộ điều khiển nhưng cũng có thể sử dụng chân xung clock bên ngoài để giữ xung nhịp đồng bộ hóa dữ liệu.

  • XCK – GPIO6

Giao tiếp USART / UART có thể được sử dụng để lập trình vi điều khiển.

Giao thức SPI ATmega328P

Là một trong những giao thức nối tiếp tốt nhất trong trường hợp có nhiều thiết bị ngoại vi. Giao thức SPI cho phép nhiều thiết bị sử dụng cùng một kênh để giao tiếp.

Có bốn dây, hai dây để gửi dữ liệu và một dây cho xung clock và dây thứ tư được sử dụng để chọn thiết bị ngoại vi muốn giao tiếp. Trong trường hợp có nhiều thiết bị ngoại vi, số lượng các chân SS sẽ tăng lên. Các chân SPI của vi điều khiển là:

  • MOSI – GPIO17
  • MISO – GPIO18
  • SS – GPIO16
  • SCK – GPIO19

Module giao tiếp I 2 C

Hầu hết các thiết bị ngoại vi đều có giao thức I 2 C. Giao thức I 2 C chỉ sử dụng một dây dữ liệu và một dây xung clock. Dây dữ liệu sẽ truyền và nhận dữ liệu và dây xung clock sẽ gửi xung nhịp để giữ nhịp truyền đồng bộ dữ liệu. Các dây trên bộ vi điều khiển là:

  • SDA – GPIO27
  • SCL – GPIO28

Các module timer

ATtiny328P có hai timer bên trong có thể sử dụng để tạo bộ đếm và tạo xung. Cả hai timer này đều phụ thuộc vào một bộ dao động. Cả hai timer đều có thể sử dụng xung clock bên trong và bên ngoài để hoạt động, nhưng có một chân bên trong có thể được sử dụng để đếm xung nhịp bên ngoài. Tất cả các chân này trong vi điều khiển ATmega328P được đưa ra dưới đây:

  • T0 – GPIO6
  • T1 – GPIO11
  • TOSC1 – GPIO9
  • TOSC2 – GPIO10
  • ICP1 – GPIO

ICP1 là một chân capture đầu vào có thể được sử dụng để bắt xung nhịp bên ngoài tại một khoảng thời gian cụ thể. Khi có một xung đầu vào ở chân này thì nó sẽ tạo ra một timestamp cho biết thời gian nhận tín hiệu bên ngoài.

Hệ thống xung clock

Xung clock bên trong và xung clock bên ngoài có thể được chia tần số bởi Prescaler và nhận giá trị ở chân xuất ra bên ngoài:

  • CLKO – GPIO14

Module so sánh

Bộ vi điều khiển có các module so sánh bên trong cho tín hiệu analog. Module này nhận đầu vào ở dạng đảo và không đảo, và được sử dụng cho các chức năng bên trong hoặc có thể được sử dụng để tạo các tín hiệu đầu ra. Các chân so sánh của bộ vi điều khiển được liệt kê dưới đây:

  • AN0 (Positive) – GPIO12
  • AN1 (Negative) – GPIO13

Kênh CAPTURE / COMPARE / PWM

Có sáu chân capture / compare / PWM được sử dụng để tạo ra tín hiệu dựa trên xung thời gian mong muốn. Nó sử dụng một bộ Prescaler để chia xung thời gian. Tất cả các chân này trong ATmega328P là:

  • OC0B – GPIO11
  • OC0A – GPIO12
  • OC1A – GPIO15
  • OC1B – GPIO16
  • OC2A – GPIO17
  • OC2B – GPIO5

Kênh chuyển đổi tín hiệu analog sang digital

Trong ATmega328P có 6 kênh ADC được sử dụng để chuyển đổi tín hiệu analog sang digital. Đầu tiên cần kích hoạt bộ chuyển đổi analog bằng chân cấp nguồn (AVCC) của nó. Các kênh ADC sử dụng điện áp nguồn cấp làm tham chiếu để xác định các mức giá trị khác nhau của tín hiệu analog. Các chân analog của bộ điều khiển là:

  • ADC0 – GPIO23
  • ADC1 – GPIO24
  • ADC2 – GPIO25
  • ADC3 – GPIO26
  • ADC4 – GPIO27
  • ADC5 – GPIO28
  • AVCC – Chân 20

Chân AREF

Đôi khi điện áp tín hiệu analog bị chênh lệch nhưng nó vẫn được bộ điều khiển đo theo đầu vào nguồn cấp. Để đo bằng bất kỳ đầu vào nguồn cấp nào hoặc bằng nguồn cấp từ thiết bị tạo tín hiệu analog khác, một chân tham chiếu điện áp analog AREF được sử dụng.

Chân này sẽ phát hiện giá trị lớn nhất của tín hiệu analog và sau đó xuất tín đầu ra tương ứng. Chân AREF trong ATmega328P là:

  • AREF – GPIO21

RESET:  Trong ATmega328 có một số reset để khởi động lại vi điều khiển. Trong các reset này, có một chân reset bên ngoài để đặt lại thiết bị bằng tín hiệu bên ngoài:

  • RESET- GPIO1

Chân nguồn: Mọi bộ điều khiển đều cần nguồn điện để hoạt động và có chân cắm nguồn. Trong ATmega328P, có 3 chân nguồn cấp. Một chân là chân điện áp và hai chân còn lại là nối đất chung. Cả hai chân nối đất này đều được kết nối bên trong nên không quan trọng cái nào được cấp. Các chân nguồn của vi điều khiển là:

  • VCC – Chân 7
  • GND – Chân 8, chân 22

Bộ dao động: Bộ điều khiển có bộ dao động có thể thay đổi 8MHz. Tuy nhiên, cũng có thể sử dụng bộ dao động bên ngoài lên đến 40MHz. Để sử dụng bộ dao động bên ngoài, các chân dao động sẽ dùng chân đầu vào và chân đầu ra để cấp dao động. Các chân đó được đưa ra dưới đây:

  • XTAL1 – GPIO9
  • XTAL2 – GPIO10

Sơ đồ khối ATMEGA328P

Sơ đồ khối ATMEGA328P

Sơ đồ chân của ATmega328P với arduino

ATmega328 tương thích với các chân Arduino, giúp người dùng viết code chương trình bằng Arduino thay vì hợp ngữ (assembly) hoặc các ngôn ngữ điều khiển khác.

Arduino phổ biến vì có thông tin trên mạng khổng lồ và lập trình với ngôn ngữ cấp cao, và có thể giúp viết code chương trình điều khiển trong Arduino và chuyển đổi thành code của vi điều khiển ATmega328P. Trong trường hợp với Arduino, cấu hình chân cho bộ điều khiển sẽ như sau:

Sơ đồ chân của ATmega328P với arduino

Trong trường hợp với Arduino, các chân đặc trưng với chức năng của chúng. Khi sử dụng trình biên dịch của ATmega328 hầu như tất cả các chân đều có thể được sử dụng làm GPIO.

Tuy nhiên, trong khi sử dụng trong Arduino, mỗi chân sẽ thực hiện một chức năng cụ thể, nhưng bộ điều khiển vẫn có thể thực hiện tất cả các chức năng giống như ATmega328.

CÁC ỨNG DỤNG

  • Hầu hết các hệ thống nhúng IoT đều sử dụng ATmega328 để thực hiện nhiều chức năng do có rất nhiều ví dụ và tài liệu hữu ích trên internet.
  • Được sử dụng trong Arduino làm nó trở thành bộ điều khiển phổ biến nhất.

SƠ ĐỒ 2D ATmega328
SƠ ĐỒ 2D ATmega328 

>>> 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