So sánh các dòng vi điều khiển pic, avr, arm

Trong thị trường hiện đại, có một số gia đình và hàng loạt vi điều khiển từ các nhà sản xuất khác nhau, trong đó có thể phân biệt được AVR, STM32 và PIC. Mỗi gia đình đã tìm thấy phạm vi riêng của mình. Trong bài viết này tôi sẽ nói với những người mới bắt đầu về vi điều khiển PIC, cụ thể là nó là gì và những gì bạn cần biết để bắt đầu với chúng.

So sánh các dòng vi điều khiển pic, avr, arm


PIC là gì

PIC là tên của một loạt các bộ vi điều khiển được sản xuất bởi Microchip Technology Inc (Hoa Kỳ). Tên PIC xuất phát từ Bộ điều khiển giao diện ngoại vi.

Vi điều khiển PIC có kiến ​​trúc RISC. RISC - một bộ hướng dẫn viết tắt, cũng được sử dụng trong các bộ xử lý cho thiết bị di động. Có một số ví dụ về việc sử dụng nó: ARM, Atmel AVR và những người khác.

Vào năm 2016, Microchip đã mua Atmel, một nhà sản xuất bộ điều khiển AVR. Do đó, trang web chính thức giới thiệu các bộ vi điều khiển của gia đình và PIC và AVR.

So sánh các dòng vi điều khiển pic, avr, arm


Gia đình

Trong số các bộ vi điều khiển PIC 8 bit, nó bao gồm 3 họ khác nhau về kiến ​​trúc (độ sâu bit và tập lệnh).

  • Đường cơ sở (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Dải trung (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Dải trung nâng cao (PIC12F1xxx, PIC16F1xxx);

  • Cao cấp hoặc PIC18 (18Fxxxx, 18FxxJxx và 18FxxKxx).

So sánh các dòng vi điều khiển pic, avr, arm

Các đặc điểm được đưa ra trong bảng dưới đây.

So sánh các dòng vi điều khiển pic, avr, arm

Ngoài bộ vi điều khiển 8 bit, Microchip tạo ra 16 bit:

  • PIC24F;

  • DsPIC30 / 33F để xử lý tín hiệu.

Đại diện của gia đình 16 bit hoạt động ở tốc độ từ 16 đến 100 MIPS (hoàn thành hàng triệu hướng dẫn mỗi giây). Điều đáng chú ý và các tính năng:

  • chu kỳ máy - 2 chu kỳ;

  • Độ phân giải ADC - 16 bit;

  • hỗ trợ một số giao thức truyền thông (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN và SENT), PWM và nhiều hơn nữa.

Ngoài ra còn có một họ vi điều khiển 32 bit - PIC32MX, các tính năng chính:

  • hoạt động ở tần số lên tới 120 MHz;

  • Thực hiện tới 150 MIPS

  • ADC: 10 bit, 1 Msps (tốc độ lượng tử hóa), tối đa 48 kênh.


PIC bắt đầu với cái gì?

Người mới bắt đầu nên bắt đầu thành thạo các bộ vi điều khiển PIC từ dòng 8 bit. Nhìn chung, nhà sản xuất tuyên bố rằng tính năng của cả gia đình là tính di động dễ dàng của các chương trình từ gia đình này sang gia đình khác và sơ đồ chân của một số mô hình.

Một trong những vi điều khiển phổ biến nhất trong môi trường vô tuyến nghiệp dư là PIC16f628A. Đặc tính kỹ thuật của nó như sau:

  • Có một máy phát đồng hồ tích hợp. Bạn có thể điều chỉnh để hoạt động với tần số 4 hoặc 8 MHz;

  • 18 chân, trong đó 16 - đầu vào / đầu ra và 2 - nguồn;

  • Để hoạt động ở tần số lên đến 20 MHz, bạn có thể kết nối bộ cộng hưởng thạch anh, nhưng trong trường hợp này không có 16, mà chỉ còn 14 chân cho đầu vào / đầu ra;

  • Có một chữ F trong phần đánh dấu, có nghĩa là bộ nhớ FLASH có dung lượng 2048 từ được sử dụng;

  • Hướng dẫn 14 bit, 35 miếng;

  • 2 bộ so sánh;

  • 4 đầu vào tương tự;

  • Đầu vào PORTB có điện trở kéo lên;

  • Hai bộ định thời 8 bit và một 16 bit;

  • Chu kỳ máy - 4 chu kỳ của bộ cộng hưởng thạch anh hoặc bộ dao động bên trong);

  • RAM 225 byte;

  • 128 byte EEPROM;

  • USART - cổng nối tiếp;

  • tham chiếu điện áp bên trong;

  • cung cấp bởi 3,3 đến 5 V.

Những lý do cho sự phổ biến của nó là giá thấp và khả năng đồng hồ từ một máy phát nội bộ.

Sơ đồ chân nào của 16f628 được hiển thị bên dưới:

So sánh các dòng vi điều khiển pic, avr, arm

Các mạch bên trong khối của vi điều khiển này được hiển thị dưới đây.

So sánh các dòng vi điều khiển pic, avr, arm


Tôi nên chú ý điều gì trong sơ đồ ở nơi đầu tiên?

Bộ vi điều khiển này có hai cổng PORTA và PORTB. Mỗi pin, mỗi pin có thể được sử dụng làm đầu vào và đầu ra, cũng như để kết nối các thiết bị ngoại vi hoặc sử dụng các mô-đun khác của vi điều khiển.

Xem xét phần này của chương trình chi tiết lớn.

So sánh các dòng vi điều khiển pic, avr, arm

Ví dụ, các cổng RB0-RB3 - có thể hoạt động như một cổng tương tự. Nếu cần, nguồn đồng hồ được kết nối với RA6, RA7 (cộng hưởng thạch anh). Các đầu ra của chính vi điều khiển được cấu hình ở chế độ đầu vào / đầu ra bằng thanh ghi TRIS.

Có các lệnh cho loại này:

TRISA = 0; // Tất cả các chân của cổng A được đặt làm đầu ra TRISB = 0xff; // Tất cả các chân của cổng B được gán làm đầu vào TRISA0 = 1; // Vì vậy, một pin riêng được gán là đầu vào (1) hoặc đầu ra (0)

TRISA5 = 1// ở đây đầu ra thứ 5 của cổng A được gán làm đầu vào

Nói chung, các chế độ hoạt động, bao gồm WDT (bộ đếm thời gian theo dõi), lựa chọn nguồn đồng hồ của vi điều khiển, v.v. được cấu hình bằng các thanh ghi đặc biệt - SFR, và bộ nhớ và dữ liệu được lưu trữ trong GFR - nói một cách đơn giản, đây là RAM tĩnh.

Trong Bảng dữ liệu chính thức, trên trang 18-21, bạn sẽ tìm thấy 4 ngân hàng bộ nhớ cho các thanh ghi mục đích đặc biệt SFR và các thanh ghi mục đích chung GFR. Kiến thức về các thanh ghi rất quan trọng, vì vậy hãy in và tìm hiểu các trang được chỉ định từ Bảng dữ liệu.

Để thuận tiện, các bảng này được trình bày dưới dạng hình ảnh bên dưới (việc đánh số các thanh ghi, giống như mọi thứ trong thiết bị điện tử kỹ thuật số, bắt đầu từ 0, vì vậy số thứ tư là 3).

So sánh các dòng vi điều khiển pic, avr, arm

So sánh các dòng vi điều khiển pic, avr, arm

So sánh các dòng vi điều khiển pic, avr, arm

So sánh các dòng vi điều khiển pic, avr, arm


Làm thế nào để kết nối và bằng ngôn ngữ nào để lập trình?

Để chạy vi điều khiển này, nó là đủ để áp dụng cộng với Vdd và trừ cho Vss. Nếu bạn cần một bộ cộng hưởng thạch anh, thì nó được kết nối với các chân 16 và 15 (OSC1 và OSC2) của vi điều khiển PIC16f628, cho các bộ điều khiển khác có số lượng chân lớn hơn hoặc nhỏ hơn - tìm trong bảng dữ liệu. Nhưng điểm này phải được chỉ định trong quá trình lập trình và phần sụn.

Nói về tính di động và sự trùng hợp của sơ đồ chân - trên 16f84A - nó tương tự, và trên nhiều thứ khác.

So sánh các dòng vi điều khiển pic, avr, arm

Một đoạn mạch có bộ cộng hưởng ngoài được kết nối với pic16f628a:

So sánh các dòng vi điều khiển pic, avr, arm

Có hai ngôn ngữ chính để lập trình vi điều khiển PIC - trình biên dịch và C, có những ngôn ngữ khác, ví dụ PICBasic, v.v. Bạn vẫn có thể làm nổi bật ngôn ngữ lập trình đơn giản hóa JAL (chỉ một ngôn ngữ khác).

Ví dụ, bên dưới là chương trình "đèn flash LED" - một loại "Hello World" cho vi điều khiển PIC trong C.

So sánh các dòng vi điều khiển pic, avr, arm

Trong dòng 1, thư viện vi điều khiển PIC được kết nối, sau đó thư viện chương trình trễ được kết nối.

Trong hàm main (void), các tham số ban đầu được đặt ở đầu, giống như chúng ta đã làm trong hàm Void setup () - trong các bài viết về arduino. Sau đó, trong các dòng 11-16, một vòng lặp while (1) vô hạn được khai báo, trong đó chương trình nhấp nháy LED LED được thực thi.

Trong ví dụ, trạng thái của cổng liên tục bị đảo ngược, tức là nếu nó ở mức "0" thì nó sẽ chuyển sang "1" và ngược lại. Trong C cho PIC có các lệnh quản lý lệnh sau:

PORTA = 0; // dịch tất cả các chân của cổng A xuống mức thấp (log. 0) PORTB = 0xff; // dịch tất cả các chân của cổng B lên mức cao (log. 1)

RB5 = 1; // Chân thứ năm của cổng B cao

Và cùng một chương trình giống như thế này, nhưng đã có ngôn ngữ JAL, tôi đã dịch sang tiếng Nga các ý kiến ​​từ các nhà phát triển các ví dụ tích hợp trong JALedit (môi trường phát triển).

So sánh các dòng vi điều khiển pic, avr, arm

Có một sự cám dỗ để chọn JAL, và nó có vẻ dễ dàng hơn với bạn. Tất nhiên, bất kỳ dự án nào cũng có thể được thực hiện trên nó, nhưng từ quan điểm lợi ích cho bạn như một chuyên gia, đó là một ngôn ngữ vô dụng. Bạn sẽ đạt được kết quả lớn hơn đáng kể bằng cách nghiên cứu cú pháp và nguyên tắc lập trình trong C (hầu hết các ngôn ngữ giống như C phổ biến hiện nay) hoặc Trình biên dịch là ngôn ngữ cấp thấp sẽ giúp bạn hiểu cách thiết bị hoạt động và những gì xảy ra trong chương trình tại bất kỳ thời điểm nào.


Cách làm việc

Nếu bạn nói khá khái quát để làm việc với bất kỳ bộ vi điều khiển nào bạn cần:

1. Trình soạn thảo văn bản.

2. Trình biên dịch.

3. Chương trình tải firmware xuống vi điều khiển.

Và tôi thậm chí đã đọc các sách giáo khoa cũ, nơi mà tác giả, làm việc từ DOS, đã viết mã, biên dịch và flash nó bằng nhiều phương tiện khác nhau. Giờ đây, đối với tất cả các hệ điều hành phổ biến, đều có môi trường phát triển, cả chuyên môn cao (dành cho một họ vi điều khiển cụ thể hoặc gia đình từ một nhà sản xuất) và phổ quát (có chứa tất cả các công cụ cần thiết hoặc chúng được kết nối dưới dạng trình cắm).

Ví dụ, trong một loạt các bài viết về Arduino, chúng tôi đã xem xét Arduino IDE, trong đó, chúng tôi đã viết mã và với sự giúp đỡ của nó, rót phần mềm vào phần mềm đá đá. Đối với vi điều khiển PIC có các chương trình như:

  • MPASM - được sử dụng để phát triển ngôn ngữ Trình biên dịch từ Microchip;

  • MPLAB cũng là IDE Microchip cho bộ điều khiển PIC. Nó bao gồm nhiều khối để kiểm tra, kiểm tra, làm việc với mã và biên dịch chương trình và tải xuống vi điều khiển. Ngoài ra còn có một phiên bản MPLAB X IDE - nó có chức năng tuyệt vời và được xây dựng trên nền tảng NetBeans;

  • MikroC là một môi trường phổ quát (không chỉ cho PIK) để phát triển. Đúng như tên gọi của nó, nó được mài giũa mạnh mẽ cho lập trình C và cũng có những chương trình như MikroBasic và MikroPascal cho các ngôn ngữ tương ứng;

  • JALedit - phù hợp với ngôn ngữ JAL mà chúng tôi đã đề cập ở trên;

  • Và một số những người ít được biết đến khác.

So sánh các dòng vi điều khiển pic, avr, arm


Làm thế nào để flash một vi điều khiển?

Có một số lập trình viên cho vi điều khiển PIC. Chính thức được coi là PICkit. 4 phiên bản của họ. Nhưng bạn có thể flash và phổ quát, ví dụ, TL866 (nó hỗ trợ hầu hết mọi thứ mà một người nghiệp dư vô tuyến mới có thể cần, trong khi nó rất rẻ).

So sánh các dòng vi điều khiển pic, avr, arm

Ngoài ra trên mạng còn có một số mạch lập trình khác nhau cho PIC, cả hai đều hoạt động thông qua cổng COM:

So sánh các dòng vi điều khiển pic, avr, arm

Vì vậy, nó là thông qua USB (trên thực tế, cũng là com, chỉ thông qua bộ chuyển đổi trên IC MAX 232).

So sánh các dòng vi điều khiển pic, avr, arm


Kết luận

Vi điều khiển PIC16 phù hợp cho các dự án đơn giản, như tự động hóa đơn giản, vôn kế, nhiệt kế và những thứ nhỏ khác. Nhưng điều này không có nghĩa là bạn không thể thực hiện các dự án phức tạp và lớn trong gia đình này, tôi đã đưa ra một ví dụ về lý do tại sao chúng thường được sử dụng nhất. Đối với một ý tưởng chung, tôi khuyên bạn nên xem một vài video:

Trong một bài viết, nó rất vô nghĩa khi xem xét các chủ đề về cách lập trình vi điều khiển, bất kể là gia đình nào. Vì đây là một lượng thông tin rất lớn.