STDIO
Tìm kiếm gần đây
    Mục lục
    Thảo luận
    0
    Liên kết
    QR Code

    Xác Định Loại Vi Điều Khiển Của Arduino Bằng Lập Trình

    Hướng dẫn sử dụng code lập trình để xác định loại vi điều khiển của Arduino đang sử dụng.

    Vũ Quang Huy

    29/09/2014
    08/08/2020
    3 phút đọc
    Xác Định Loại Vi Điều Khiển Của Arduino Bằng Lập Trình

    Nhằm đáp ứng nhiều yêu cầu khác nhau của công việc, nhà sản xuất Arduino đã đưa ra nhiều tùy chọn khác nhau về kích thước, số lượng chân giao tiếp, bộ vi xử lý, giá thành, ... tùy theo mỗi dự án mà lựa chọn một phiên bản Arduino thích hợp với nhu cầu.

    Ví dụ nếu dự án cần kích thước nhỏ gọn thì Arduino Pro Mini hay Arduino Nano là lựa chọn đầu tiên. Trong khi đó, ở mức độ phổ thông thì có thể dùng Arduino Uno - cân bằng giữa hiệu năng và kích thước. Tuy nhiên, nếu yêu cầu cần phải xử lý nhiều dữ liệu và giao tiếp với nhiều thiết bị khác, Arduino Mega hay Due là ứng viên sáng giá.

    Mỗi Arduino board như vậy lại sử dụng một loại vi điều khiển (microcontroller unit - VDK) khác nhau: Arduino Uno R3 sử dụng VDK ATmega328P trong khi Arduino Mega sử dụng VDK ATmega2560. Mỗi loại VDK này lại có bộ nhớ, tốc độ xử lý, số chân giao tiếp, ... khác nhau.

    Giả sử khi viết thư viện cho nhiều loại Arduino khác nhau, cần phải biết chính xác loại VDK đang sử dụng để có hướng lập trình phù hợp.

    Phương pháp xác định

    Hầu hết các loại Arduino đều sử dụng VDK sản xuất bởi Atmel, các VDK này thường được đặt tên bắt đầu với ATxxxxx như ATmega328P, ATtiny13, ... tương ứng với mỗi VDK có 1 mã cho chúng gọi là signature code. Mã này không phải là duy nhất cho mỗi VDK, nhưng là duy nhất cho mỗi dòng VDK. 

    Với Arduino, có thể biết được loại VDK đang sử dụng bằng cách truy vấn 3 hằng số lần lượt là SIGNATURE_0, SIGNATURE_1SIGNATURE_2, tương ứng với 3 byte của signature code.

    Bảng sau đây giải thích ý nghĩa của từng hằng số:

    Hằng số Ý nghĩa Giá trị hợp lệ
    SIGNATURE_0 Mã của hãng sản xuất

    1E nghĩa là VDK này sản xuất bởi Atmel

    SIGNATURE_1 Dòng VDK và bộ nhớ flash 9n - VDK AVR với 2n kB bộ nhớ
    SIGNATURE_2 Mã của VDK Tên chính xác của VDK này

    Dựa trên bảng này, đây là danh sách các signature code của một số VDK phổ biến được sản xuất bởi hãng Atmel:

    Loại MCU Signature code
    ATtiny13 1E9007
    ATtiny2313 1E910A
    ATmega48P 1E920A
    ATmega8 1E9307
    ATmega168 1E9406
    ATmega32 1E9502
    ATmega328P 1E950F
    ATmega328-PU 1E9514
    ATmega64 1E9602
    ATmega644 1E9609
    ATmega128 1E9702
    ATmega1280 1E9703
    ATmega2560 1E9801

    Ví dụ cần truy vấn 3 hằng số và nhận được kết quả:

    • SIGNATURE_0 = 0x1E
    • SIGNATURE_1 = 0x98
    • SIGNATURE_2 = 0x01

    Dựa theo bảng trên, xác định được VDK đang sử dụng là ATmega2560 với bộ nhớ flash là 28 = 256 kB.

    Code minh hoạ

    Với Arduino Uno R3, trên thị trường có 2 phiên bản sử dụng 2 loại VDK khác nhau là ATmega328P và ATmega168. Đoạn code sau minh họa việc nhận biết 2 loại VDK này:

    void setup()
    {
    	Serial.begin(9600);	
    	char* mcuType;
    	
    	if (SIGNATURE_0 == 0x1E || SIGNATURE_0 == 0x00)
    	{
    		if (SIGNATURE_1 == 0x95 && SIGNATURE_2 == 0x0F)
    		{
    			mcuType = "ATmega328P";
    		} 
    		else if (SIGNATURE_1 == 0x94 && SIGNATURE_2 == 0x06)
    		{
    			mcuType = "ATmega168";
    		} 
    		else 
    		{
    			mcuType = "Unknown Atmel MCU"; 
    		}
    	} 
    	else
    	{
    		mcuType = "Unknown MCU";
    	}
    	
    	Serial.print("This Arduino using MCU: ");
    	Serial.println(mcuType);
    }
    
    void loop() { 
    	
    }
    
    Điện Tử Ứng Dụng

    Điện Tử Ứng Dụng

    Kiến thức điện tử, Arduino, Raspberry Pi, giới thiệu sản phẩm.

    Đề xuất

    Điều Khiển Động Cơ Servo Với Adruino

    Điều Khiển Động Cơ Servo Với Adruino

    Tìm hiểu cách hoạt động của động cơ servo và cách lập trình hoạt động ...

    Điện Tử Ứng DụngArduino

    29/09/2014

    Đo Tốc Độ Động Cơ Sử Dụng Cảm Biến IR FC-03

    Đo Tốc Độ Động Cơ Sử Dụng Cảm Biến IR FC-03

    Bài viết hướng dẫn cách sử dụng cảm biến đo tốc độ IR FC-03 kết hợp với ...

    Điện Tử Ứng DụngĐào tạo & nâng cao

    27/05/2016

    Khám phá thêm

    Lập Trình Điều Khiển Đèn LED với Arduino

    Lập Trình Điều Khiển Đèn LED với Arduino

    Giới thiệu đèn LED, các lưu ý và sử dụng LED cơ bản với Arduino.

    Điện Tử Ứng DụngKiến thức & linh kiện

    13/10/2014

    Lập Trình Multithreading trong Ngôn Ngữ Lập Trình Java

    Lập Trình Multithreading trong Ngôn Ngữ Lập Trình Java

    Trong chương trình của chúng ta đôi khi ta cần thực thi nhiều tác vụ ...

    JavaNâng Cao

    19/11/2015

    Validate Form Bằng Thư Viện Knockout-Validation trong Dự Án Durandaljs

    Validate Form Bằng Thư Viện Knockout-Validation trong Dự Án Durandaljs

    Bài viết hướng dẫn sử dụng thư viện Knockout-Validation để kiểm tra dữ ...

    JavaScriptKiến Thức

    05/11/2017

    STDIO Starter Kit - Các Thành Phần Cần Thiết Để Học Điện Tử Cơ Bản

    STDIO Starter Kit - Các Thành Phần Cần Thiết Để Học Điện Tử Cơ Bản

    Bộ STDIO Starter Kit là bộ kit điện tử thống kê các thành phần cần thiết ...

    Điện Tử Ứng DụngSản phẩm

    19/10/2014

    CBP-7: Cài Đặt Phản Ứng Cho Entity

    CBP-7: Cài Đặt Phản Ứng Cho Entity

    Thiết lập phản ứng của Entity nhằm điều khiển các Component trong CBP.

    Lập Trình GameKiến Thức Nâng Cao

    20/08/2015

    Sử Dụng Arduino IDE Lập Trình ESP8266 NodeMCU

    Sử Dụng Arduino IDE Lập Trình ESP8266 NodeMCU

    Hướng dẫn việc sử dụng Arduino IDE để tích hợp thư viện hỗ trợ cho việc ...

    Điện Tử Ứng DụngESP module

    30/10/2014

    Thiết Kế Ngôn Ngữ Lập Trình Lary - 001

    Thiết Kế Ngôn Ngữ Lập Trình Lary - 001

    Giới thiệu ngôn ngữ lập trình Lary, các đặc tả của ngôn ngữ, các yêu cầu ...

    La Kiến Vinh

    05/08/2014

    CBP-8: Component Điều Khiển và AI – Component Ra Lệnh

    CBP-8: Component Điều Khiển và AI – Component Ra Lệnh

    Component ra lệnh - các Component có khả năng gửi Entity Command cho ...

    Lập Trình GameKiến Thức Nâng Cao

    21/08/2015

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020