ประเภท: วงจรไมโครคอนโทรลเลอร์
จำนวนการดู: 23111
ความเห็นเกี่ยวกับบทความ: 0

ไมโครคอนโทรลเลอร์ PIC สำหรับผู้เริ่มต้น

 

ในตลาดสมัยใหม่มีจำนวนตระกูลและชุดไมโครคอนโทรลเลอร์จำนวนมากจากผู้ผลิตที่แตกต่างกันในหมู่พวกเขา AVR, STM32 และ PIC สามารถโดดเด่นได้ แต่ละครอบครัวพบขอบเขตของตนเอง ในบทความนี้ฉันจะบอกผู้เริ่มต้นเกี่ยวกับไมโครคอนโทรลเลอร์ PIC นั่นคือมันคืออะไรและสิ่งที่คุณต้องรู้เพื่อเริ่มต้นกับพวกเขา

ไมโครคอนโทรลเลอร์ PIC สำหรับผู้เริ่มต้น

PIC คืออะไร

PIC เป็นชื่อของชุดไมโครคอนโทรลเลอร์ที่ผลิตโดย Microchip Technology Inc (USA) ชื่อ PIC มาจาก Peripheral Interface Controller

ไมโครคอนโทรลเลอร์ PIC มีสถาปัตยกรรม RISC RISC - ชุดคำสั่งย่อใช้ในโปรเซสเซอร์สำหรับอุปกรณ์พกพา มีจำนวนตัวอย่างของการใช้งาน: ARM, Atmel AVR และอื่น ๆ

ในปี 2559 ไมโครชิพซื้อ Atmel ผู้ผลิตคอนโทรลเลอร์ AVR ดังนั้นเว็บไซต์อย่างเป็นทางการจึงนำเสนอตัวควบคุมไมโครคอนโทรลเลอร์ของตระกูล PIC และ AVR

ไมโครคอนโทรลเลอร์ PIC16F1xxx

ครอบครัว

ในบรรดาไมโครคอนโทรลเลอร์ PIC 8 บิตนั้นประกอบด้วย 3 ตระกูลที่แตกต่างกันในสถาปัตยกรรม (ความลึกบิตและชุดคำสั่ง)

  • พื้นฐาน (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • ช่วงกลาง (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • การปรับปรุงช่วงกลาง (PIC12F1xxx, PIC16F1xxx);

  • ระดับไฮเอนด์หรือ PIC18 (18Fxxxx, 18FxxJxx และ 18FxxKxx)

เปรียบเทียบตระกูลไมโครคอนโทรลเลอร์

คุณสมบัติที่ได้รับในตารางด้านล่าง

คุณสมบัติของไมโครคอนโทรลเลอร์ PIC

นอกเหนือจากไมโครคอนโทรลเลอร์ 8 บิตแล้วไมโครชิพยังผลิต 16 บิต:

  • PIC24F;

  • DsPIC30 / 33F สำหรับการประมวลผลสัญญาณ

ตัวแทนของตระกูล 16 บิตทำงานด้วยความเร็วตั้งแต่ 16 ถึง 100 MIPS (เสร็จสิ้นคำสั่งนับล้านต่อวินาที) มันเป็นที่น่าสังเกตและคุณสมบัติ:

  • รอบเครื่อง - 2 รอบ

  • ความละเอียด ADC - 16 บิต

  • รองรับโปรโตคอลการสื่อสารจำนวนมาก (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN และ SENT), PWM และอื่น ๆ

นอกจากนี้ยังมีตระกูลไมโครคอนโทรลเลอร์ขนาด 32 บิต - PIC32MX ซึ่งเป็นคุณสมบัติหลัก:

  • ทำงานที่ความถี่สูงถึง 120 MHz;

  • ดำเนินการได้ถึง 150 MIPS

  • ADC: 10 บิต, 1 Msps (ควอนตัมความเร็ว), สูงสุด 48 ช่อง



PIC อะไรที่ต้องเริ่มด้วย

ผู้เริ่มต้นควรเริ่มต้นการควบคุมไมโครคอนโทรลเลอร์ PIC จากสาย 8 บิต โดยทั่วไปผู้ผลิตอ้างว่าคุณสมบัติของทั้งครอบครัวนั้นเป็นความสะดวกในการพกพาของโปรแกรมจากตระกูลหนึ่งไปยังอีกตระกูลหนึ่งและมี pinout ของรุ่นต่างๆจำนวนหนึ่ง

หนึ่งในไมโครคอนโทรลเลอร์ที่ได้รับความนิยมสูงสุดในสภาพแวดล้อมวิทยุสมัครเล่นคือ PIC16f628A ลักษณะทางเทคนิคของมันมีดังนี้:

  • มีเครื่องกำเนิดสัญญาณนาฬิกาในตัว คุณสามารถปรับแต่งให้ทำงานกับความถี่ 4 หรือ 8 MHz;

  • 18 พินซึ่ง 16- อินพุท / เอาท์พุทและ 2 - พลังงาน;

  • ในการทำงานที่ความถี่สูงถึง 20 MHz คุณสามารถเชื่อมต่อ resonator ควอตซ์ได้ แต่ในกรณีนี้ไม่มี 16 แต่เหลือ 14 ขาสำหรับอินพุต / เอาต์พุต;

  • มีตัวอักษร F อยู่ในเครื่องหมายซึ่งหมายความว่าใช้หน่วยความจำแฟลชที่มีความจุ 2048 คำ;

  • คำแนะนำ 14 บิต 35 ชิ้น;

  • 2 ตัวเปรียบเทียบ

  • 4 อินพุตแบบอะนาล็อก

  • อินพุต PORTB มีตัวต้านทานแบบดึงขึ้น

  • ตัวจับเวลา 8 บิตสองตัวและหนึ่งตัว 16 บิต

  • เครื่องรอบ - 4 รอบของแร่ควอตซ์หรือออสซิลเลเตอร์ภายใน);

  • RAM 224 ไบต์;

  • EEPROM ขนาด 128 ไบต์;

  • USART - พอร์ตอนุกรม

  • การอ้างอิงแรงดันภายใน

  • ขับเคลื่อนโดย 3.3 ถึง 5 V.

เหตุผลของความนิยมคือราคาต่ำและความสามารถในการนาฬิกาจากเครื่องกำเนิดไฟฟ้าภายใน

ข้อผิดพลาดใดของ 16f628 ที่แสดงด้านล่าง:

Pinout ที่ 16f628

บล็อกวงจรภายในของไมโครคอนโทรลเลอร์นี้แสดงไว้ด้านล่าง

โครงสร้างไมโครคอนโทรลเลอร์ 16f628

ฉันควรใส่ใจกับสิ่งใดในโครงการนี้เป็นอันดับแรก

ไมโครคอนโทรลเลอร์นี้มีสองพอร์ต PORTA และ PORTB พินแต่ละตัวแต่ละตัวสามารถใช้เป็นอินพุทและเอาท์พุทเช่นเดียวกับการเชื่อมต่ออุปกรณ์ต่อพ่วงหรือเปิดใช้งานโมดูลไมโครคอนโทรลเลอร์อื่น ๆ

พิจารณาส่วนนี้ของโครงการโดยละเอียด

พอร์ต MK

ตัวอย่างเช่นพอร์ต RB0-RB3 - สามารถทำหน้าที่เป็นอะนาล็อก หากจำเป็นต้องเชื่อมต่อแหล่งสัญญาณนาฬิกากับ RA6, RA7 (แร่ควอตซ์) เอาต์พุตของไมโครคอนโทรลเลอร์นั้นถูกกำหนดค่าในโหมดอินพุต / เอาต์พุตโดยใช้รีจิสเตอร์ TRIS

มีคำสั่งสำหรับประเภทนี้:

TRISA = 0; // พินของพอร์ต A ทั้งหมดถูกตั้งค่าเป็นเอาท์พุท
TRISB = 0xff; // พินของพอร์ต B ทั้งหมดถูกกำหนดให้เป็นอินพุต
TRISA0 = 1; // ดังนั้นพินแยกถูกกำหนดเป็นอินพุต (1) หรือเอาท์พุท (0)
TRISA5 = 1// ที่นี่เอาต์พุตที่ 5 ของพอร์ต A ถูกกำหนดเป็นอินพุต

โดยทั่วไปโหมดการทำงานการรวม WDT (ตัวจับเวลาจ้องจับผิด) ตัวเลือกแหล่งสัญญาณนาฬิกาของไมโครคอนโทรลเลอร์และอื่น ๆ ได้รับการกำหนดค่าโดยใช้การลงทะเบียนเพื่อวัตถุประสงค์พิเศษ - SFR และหน่วยความจำและข้อมูลจะถูกเก็บไว้ใน GFR

ในแผ่นข้อมูลอย่างเป็นทางการในหน้า 18-21 คุณจะพบธนาคารหน่วยความจำ 4 แห่งสำหรับวัตถุประสงค์พิเศษลงทะเบียน SFR และวัตถุประสงค์ทั่วไปลงทะเบียน GFR ความรู้เกี่ยวกับการลงทะเบียนเป็นสิ่งสำคัญดังนั้นให้พิมพ์และเรียนรู้หน้าที่ระบุไว้ แผ่นข้อมูล.

เพื่อความสะดวกตารางเหล่านี้จะถูกนำเสนอในรูปของภาพด้านล่าง (หมายเลขของรีจิสเตอร์เช่นทุกอย่างในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลเริ่มจาก 0 ดังนั้นตัวเลขที่สี่คือ 3)

ลงทะเบียนวัตถุประสงค์พิเศษ
ลงทะเบียนวัตถุประสงค์พิเศษ
ลงทะเบียนวัตถุประสงค์พิเศษ
ลงทะเบียนวัตถุประสงค์พิเศษ

วิธีเชื่อมต่อและตั้งโปรแกรมเป็นภาษาใด?

ในการเรียกใช้ไมโครคอนโทรลเลอร์ตัวนี้ก็เพียงพอแล้วที่จะใช้กับ Vdd และลบกับ Vss หากคุณต้องการ resonator แบบควอทซ์จากนั้นจะเชื่อมต่อกับพิน 16 และ 15 (OSC1 และ OSC2) ของไมโครคอนโทรลเลอร์ PIC16f628 สำหรับคอนโทรลเลอร์อื่นที่มีพินมากขึ้นหรือน้อยลง - ดูในแผ่นข้อมูล. แต่จะต้องระบุจุดนี้ในระหว่างการเขียนโปรแกรมและเฟิร์มแวร์

การพูดถึงการพกพาและความบังเอิญของ pinout - บน 16f84A - มันคล้ายกันและในอีกหลาย ๆ

การเชื่อมต่อของแร่ควอตซ์

ส่วนของวงจรที่มี resonator ภายนอกเชื่อมต่อกับ pic16f628a:

ชิ้นส่วนวงจรที่มีตัวเชื่อมต่อภายนอกที่เชื่อมต่อกับ pic16f628a

มีสองภาษาหลักสำหรับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ PIC - แอสเซมเบลอร์และ C, มีภาษาอื่นเช่น PICBasic, เป็นต้น คุณยังคงสามารถเน้นภาษาการเขียนโปรแกรมแบบง่าย JAL (ภาษาอื่น)

ตัวอย่างเช่นด้านล่างเป็นโปรแกรมสำหรับ“ LED กะพริบ” - ชนิด“ Hello World” สำหรับไมโครคอนโทรลเลอร์ PIC ในซี

ตัวอย่างของโปรแกรมไมโครคอนโทรลเลอร์ PIC ใน C

ในบรรทัดที่ 1 ไลบรารีไมโครคอนโทรลเลอร์ PIC เชื่อมต่อแล้วเชื่อมต่อไลบรารีโปรแกรมล่าช้า

ในฟังก์ชั่น main (void) พารามิเตอร์เริ่มต้นถูกตั้งค่าไว้ที่จุดเริ่มต้นเช่นเดียวกับที่เราทำในฟังก์ชั่น Void setup () - ในบทความเกี่ยวกับ arduino. จากนั้นในบรรทัดที่ 11-16 จะมีการประกาศลูปแบบไม่สิ้นสุดขณะที่ (1) ซึ่งจะมีการดำเนินการโปรแกรม "LED กะพริบ"

ในตัวอย่างสถานะของพอร์ตนั้นกลับด้านเสมอเช่น ถ้าอยู่ที่ "0" มันจะไปที่ "1" และในทางกลับกัน ใน C สำหรับ PIC มีคำสั่งการจัดการคำสั่งต่อไปนี้:

PORTA = 0; // แปลหมุดของพอร์ต A ทั้งหมดให้อยู่ในระดับต่ำ (บันทึก 0)
PORTB = 0xff; // แปลหมุดทั้งหมดของพอร์ต B เป็นระดับสูง (บันทึก 1)
RB5 = 1; // ขาที่ห้าของพอร์ต B นั้นสูง

และดูเหมือนว่าโปรแกรมเดียวกัน แต่ในภาษา JAL ฉันได้แปลความคิดเห็นของรัสเซียจากผู้พัฒนาตัวอย่างในตัวใน JALedit (สภาพแวดล้อมการพัฒนา)

ตัวอย่างโปรแกรม JAL

มีการล่อลวงให้เลือก JAL และอาจทำให้คุณดูง่ายขึ้น แน่นอนว่าคุณสามารถดำเนินการโครงการใด ๆ ในนั้น แต่จากมุมมองของผลประโยชน์สำหรับคุณในฐานะผู้เชี่ยวชาญมันเป็นภาษาที่ไร้ประโยชน์ คุณจะได้ผลลัพธ์ที่ดีขึ้นอย่างมีนัยสำคัญโดยการศึกษาไวยากรณ์และหลักการของการเขียนโปรแกรมใน C (ภาษาส่วนใหญ่ที่นิยมในปัจจุบันคือ C-like) หรือใน Assembler - นี่เป็นภาษาระดับต่ำที่จะทำให้คุณเข้าใจหลักการของอุปกรณ์และสิ่งที่เกิดขึ้นในโปรแกรม


วิธีการทำงาน

ถ้าคุณพูดว่าเป็นเรื่องธรรมดาที่จะทำงานกับไมโครคอนโทรลเลอร์ที่คุณต้องการ:

1. โปรแกรมแก้ไขข้อความ

2. คอมไพเลอร์

3. โปรแกรมสำหรับดาวน์โหลดเฟิร์มแวร์ไปยังไมโครคอนโทรลเลอร์

และฉันยังอ่านหนังสือเก่า ๆ ที่ซึ่งผู้เขียนทำงานจากภายใต้ DOS เขียนโค้ดรวบรวมและประกายโดยใช้วิธีการต่างๆ ตอนนี้สำหรับระบบปฏิบัติการที่ได้รับความนิยมทั้งหมดมีสภาพแวดล้อมการพัฒนาทั้งความเชี่ยวชาญสูง (สำหรับตระกูลไมโครคอนโทรลเลอร์ที่เฉพาะเจาะจงหรือตระกูลจากผู้ผลิตรายเดียว) และเป็นสากล (มีทั้งเครื่องมือที่จำเป็นทั้งหมดหรือเชื่อมต่อเป็นปลั๊กอิน)

ตัวอย่างเช่นในบทความเกี่ยวกับ Arduino เราได้ดู Arduino IDE ในนั้นเราเขียนรหัสและด้วยความช่วยเหลือในการ "เท" เฟิร์มแวร์ลงใน "หิน" สำหรับไมโครคอนโทรลเลอร์ PIC มีโปรแกรมเช่น:

  • MPASM - ใช้สำหรับการพัฒนาในภาษา Assembler จาก Microchip;

  • MPLAB ยังเป็น Microchip IDE สำหรับคอนโทรลเลอร์ PIC ประกอบด้วยบล็อกจำนวนมากสำหรับการทดสอบการตรวจสอบการทำงานกับโค้ดและโปรแกรมการคอมไพล์ นอกจากนี้ยังมี MPLAB X IDE เวอร์ชั่น - มันมีฟังก์ชั่นที่ยอดเยี่ยมและสร้างขึ้นบนพื้นฐานของแพลตฟอร์ม NetBeans;

  • MikroC เป็นสภาพแวดล้อมสากล (ไม่เพียง แต่สำหรับ PIKs) เพื่อการพัฒนา ชื่อมีความหมายว่า“ มีความคมชัด” สำหรับการเขียนโปรแกรม C และยังมีโปรแกรมเช่น MikroBasic และ MikroPascal สำหรับภาษาที่เกี่ยวข้อง;

  • JALedit - เหมาะสำหรับภาษา JAL ที่เรากล่าวถึงข้างต้น;

  • และคนอื่น ๆ ที่ไม่ค่อยมีคนรู้จัก

IDE MPLAB

จะแฟลชไมโครคอนโทรลเลอร์ได้อย่างไร

มีโปรแกรมเมอร์จำนวนหนึ่งสำหรับ PIC micronotrollers พิจารณาอย่างเป็นทางการ PICkit 4 รุ่นของพวกเขา แต่คุณสามารถกระพริบและเป็นสากลตัวอย่างเช่น TL866 (รองรับเกือบทุกอย่างที่มือสมัครเล่นวิทยุมือใหม่อาจต้องการในขณะที่มันราคาถูกมาก)

โปรแกรมเมอร์สำหรับ PIC Micronotrollers

นอกจากนี้บนเครือข่ายยังมีวงจรโปรแกรมเมอร์ที่แตกต่างกันจำนวนหนึ่งสำหรับ PICs ทั้งสำหรับการทำงานผ่านพอร์ต COM:

วงจรโปรแกรมเมอร์

ดังนั้นมันจึงผ่าน USB (อันที่จริงแล้วยังเป็น com เพียงผ่านตัวแปลงบน IC MAX232)

วงจรโปรแกรมเมอร์

ข้อสรุป

ไมโครคอนโทรลเลอร์ PIC16 เหมาะสำหรับโครงการที่เรียบง่ายเช่นระบบอัตโนมัติอย่างง่ายโวลต์มิเตอร์เครื่องวัดอุณหภูมิและสิ่งเล็ก ๆ อื่น ๆ แต่นี่ไม่ได้หมายความว่าคุณไม่สามารถทำโครงการที่ซับซ้อนและมีขนาดใหญ่ในตระกูลนี้ได้ฉันยกตัวอย่างว่าทำไมพวกเขาถึงใช้บ่อยที่สุด สำหรับแนวคิดทั่วไปฉันขอแนะนำให้ดูวิดีโอบางส่วน:

ในบทความหนึ่งไม่มีประโยชน์ที่จะต้องพิจารณาหัวข้อเกี่ยวกับวิธีการเขียนโปรแกรมไมโครคอนโทรลเลอร์ไม่ว่าจะเป็นครอบครัวใด เนื่องจากนี่เป็นข้อมูลจำนวนมาก

ดูได้ที่ bgv.electricianexp.com:

  • ประเภทและการจัดเรียงของไมโครคอนโทรลเลอร์ AVR
  • การเขียนโปรแกรมไมโครคอนโทรลเลอร์สำหรับผู้เริ่มต้น
  • ไมโครคอนโทรลเลอร์คืออะไร - วัตถุประสงค์อุปกรณ์ซอฟต์แวร์
  • ไมโครคอนโทรลเลอร์ที่สามารถตั้งโปรแกรมได้ใน JavaScript: ตัวเลือกใดตัวหนึ่ง ...
  • วิธีการสำหรับการอ่านและการจัดการพอร์ต Arduino I / O

  •