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

PIC คืออะไร
PIC เป็นชื่อของชุดไมโครคอนโทรลเลอร์ที่ผลิตโดย Microchip Technology Inc (USA) ชื่อ PIC มาจาก Peripheral Interface Controller
ไมโครคอนโทรลเลอร์ PIC มีสถาปัตยกรรม RISC RISC - ชุดคำสั่งย่อใช้ในโปรเซสเซอร์สำหรับอุปกรณ์พกพา มีจำนวนตัวอย่างของการใช้งาน: ARM, Atmel AVR และอื่น ๆ
ในปี 2559 ไมโครชิพซื้อ Atmel ผู้ผลิตคอนโทรลเลอร์ AVR ดังนั้นเว็บไซต์อย่างเป็นทางการจึงนำเสนอตัวควบคุมไมโครคอนโทรลเลอร์ของตระกูล PIC และ AVR

ครอบครัว
ในบรรดาไมโครคอนโทรลเลอร์ PIC 8 บิตนั้นประกอบด้วย 3 ตระกูลที่แตกต่างกันในสถาปัตยกรรม (ความลึกบิตและชุดคำสั่ง)
-
พื้นฐาน (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);
-
ช่วงกลาง (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);
-
การปรับปรุงช่วงกลาง (PIC12F1xxx, PIC16F1xxx);
-
ระดับไฮเอนด์หรือ PIC18 (18Fxxxx, 18FxxJxx และ 18FxxKxx)

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

นอกเหนือจากไมโครคอนโทรลเลอร์ 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 ที่แสดงด้านล่าง:

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

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

ตัวอย่างเช่นพอร์ต 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:

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

ในบรรทัดที่ 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 และอาจทำให้คุณดูง่ายขึ้น แน่นอนว่าคุณสามารถดำเนินการโครงการใด ๆ ในนั้น แต่จากมุมมองของผลประโยชน์สำหรับคุณในฐานะผู้เชี่ยวชาญมันเป็นภาษาที่ไร้ประโยชน์ คุณจะได้ผลลัพธ์ที่ดีขึ้นอย่างมีนัยสำคัญโดยการศึกษาไวยากรณ์และหลักการของการเขียนโปรแกรมใน 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 ที่เรากล่าวถึงข้างต้น;
-
และคนอื่น ๆ ที่ไม่ค่อยมีคนรู้จัก

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

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

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

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