[TH] PIC18F458 Ep.2 เจาะรายละเอียด

ในบทความก่อนหน้านี้ได้แนะนำบอร์ดที่ใช้ในแล็บวิชาสถาปัตยกรรมคอมพิวเตอร์และซอฟต์แวร์ที่ใช้ในการฝึกปฎิบัติไปแล้ว ครั้งนี้เป็นเนื้อหาเกี่ยวกับคุณสมบัติและผังการทำงานภายในชิพ PIC18F458 จากเอกสารของบริษัท Microchip เพื่อเป็นพื้นฐานในการเขียนโปรแกรมใช้งานความสามารถของไมโครคอนโทรลเลอร์ต่อไปในบทความถัดไป (ส่วนรายละเอียดของ PIC16F877 สามารถอ่านได้จากบทความนี้ครับ)

ภาพที่ 1 บอร์ดทดลองแล็บสถาปัตยกรรม

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

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

หน่วยประมวลผลแบบ RISC

  1. หน่วยความจำเก็บโปรแกรมสามารถมีขนาดสูงสุดได้ที่ 2 MB
  2. หน่วยความจำเก็บข้อมูลสามารถมีปริมาณสูงสุดได้ 4KB
  3. ทำงานได้สูงสุดที่ 10 MIPS หรือ 10 ล้านคำสั่งต่อวินาที
  4. รองรับสัญญาณนาฬิกาได้สูงสุดที่ 40MHz โดยใช้ตัวให้สัญญาณ 4MHz ถึง 10MHz เป็นสัญญาณนำเข้าผ่านตัววงจร PLL (Pulse Lock Loop)
  5. ชุดคำสั่งมีขนาด 16 บิต และอ้างอิงตำแหน่งข้อมูลได้ 8 บิต
  6. รองรับการขัดจังหวะ (Interrupt) ได้หลายระดับ แบบสามารถกำหนดลำดับความสำคัญได้
  7. มีวงจรการคูณข้อมูล 8 บิต คูณกับข้อมูล 8 บิตในวงรอบการทำงานเพียงครั้งเดียว

คุณสมบัติการเชื่อมต่ออุปกรณ์รอบข้าง

  1. ทำ Current Sink ได้ 25mA
  2. ทำ Current Source ได้ 25mA
  3. มีขาสำหรับรองรับการขัดจังหวะจากภายนอกได้ 3 ขา
  4. โมดูล Timer0 ทำงานเป็นตัวนับหรือตัวตั้งเวลาแบบ 8/16บิต พร้อมทั้งสามารถตั้งค่า prescaler ได้ที่ความละเอียด 8 บิต
  5. โมดูล Timer1 และ Timer3 ทำงานเป็นตัวนับหรือตัวตั้งเวลาแบบ 16 บิต
  6. โมดูล Timer2 ทำงานเป็นตัวตั้งเวลาหรือตัวนับแบบ 8 บิตด้วยเรจิสเตอร์ขนาด 8 บิต และใช้เป็นตัวหลักของการทำ PWM (Pulse Width Modulate)
  7. รองรับการใช้ตัวให้สัญญาณนาฬิกาที่ 2 สำหรับ Timer1 และ Timer3 แยกจากตัวสร้างสัญญาณยาฬิกาหลักที่ส่งให้กับไมโครคอนโทรลเลอร์
  8. มีโมดูล CCP (Capture/Compare/PWM) สำหรับจับสัญญาณ เปรียบเทียบสัญญาณ และส่งพัลซ์ที่กำหนดความกว้างได้
    1. การตรวจจับสัญญาณนำเข้าทำงานแบบ 16 บิต โดยใช้เวลา 6.25ns ในการทำงาน
    2. การเปรียบเทียบสามารถเปรียบเทียบสัญญาณแบบ 16 บิตด้วยความเร็ว 100ns
    3. การนำออกสัญญาณ PWM กำหนดให้มีค่าของความละเอียดตั้งแต่ 1 ถึง 10 บิต โดยที่ 8 บิตทำงานได้ได้ความถี่ 156kHz และ 10 บิตที่ความถี่ 39kHz โดยประมาณ
      1. รองรับการควบคุมมอเตอร์ด้วยการนำออกสัญญาณ PWM ในแบบ 1, 2 หรือ 4 ช่องสัญญาณในเวลาเดียวกัน
      2. กำหนดขั้ว (polarity) ของ PWM ได้
      3. ตั้งเวลาการสิ้นสุดการทำงานของ PWM ได้
  9. รองรับ SPI แบบ 3 สายสัญญาณ และ I2C ในโหมด Master และ Slave
  10. ใช้งาน USART ในแบบการขัดจังหวะได้

การทำงานกับสัญญาณแอนาล็อก

  1. มีวงจรแปลงสัญญาณแอนาล็อกเป็นดิจิทัลหรือ ADC (Analog-to-Digital) ที่มีความละเอียดของการแปลงค่าเป็น 10 บิต จำนวน 8 ช่องสัญญาณ พร้อมทั้งรองรับการแปลงค่าทั้งที่อยู่ในโหมดประหยัดพลังงาน และใช้พร้อมกันได้ทั้ง 8 ขา
  2. มีโมดูลเปรียบเทียบค่าแอนาล็อกที่โปรแกรมการทำงานแบบมัลติเพล็กได้
  3. มีโมดูลกำหนดแรงดันอ้างอิง
  4. มีโมดูลตรวจสอบแรงดันต่ำ (LVD หรือ Low-Voltage Detection) ในแบบการขัดจังหวะ
  5. สามารถสั่งให้ทำการรีเซ็ตตัวเองเมื่อเกิด LVD หรือเรียกว่าการทำ Brown-out Reset (BOR)

บัส CAN

  1. ทำงานกับมาตรฐาน ISO CAN
  2. อัตราการส่งข้อมูลอยู่ที่ 1Mbps
  3. เข้ากันได้กับ CAN รุ่น 2.0B

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

  1. รองรับการรีเซ็ตตัวเองเมื่อมีแรงดันไฟฟ้ากระแสตรงจ่ายเข้าชิพ หรือ POR (Power-on-Reset)
  2. รองรับการตั้งเวลาทำงานหลังเกิด POR หรือ BOR ที่เรียกว่าการทำ Power-up Timer (PWRT)
  3. รองรับการจับเวลาเริ่มต้นของตัวให้สัญญาณนาฬิกาเพื่อทำการรีเซ็ตตัวเองจนกว่าสัญญาณณาฬิกาจะทำงานเสถียรซึ่งเรียกว่าการทำ Oscillator Start-up Timer (OST)
  4. มี WDT (Watchdog timer) สำหรับเป็นตัวตั้งเวลาสำหรับรีเซ็ตตัวเองถ้าโปรแกรมที่เขียนไม่รายงานการทำงานกลับมาในระยะเวลาที่กำหนด เพื่อป้องกันการเกิดปัญหาเกี่ยวกับโปรแกรมทำงานผิดพลาดหรือแฮงค์ (Hang) อันอาจจะส่งผลไม่ดีต่อการทำงานของระบบ
  5. สามารถป้องกันโค้ดของโปรแกรมในชิพได้
  6. มีโหมดประหยัดพลังงาน
  7. รองรับการทำ PPL
  8. รองรับการใช้สัญญาณนาฬิกาแหล่งที่ 2 ที่เป็นความถี่ 32 kHz
  9. สามารถโปรแกรมได้ในตัวเองผ่านทาง ICSP (In-Circuit Serial Programming) ด้วยขา 2 ขา

เทคโนโลยีหน่วยความจำแฟลช

  1. ใช้หน่วยความจำแฟลชความเร็วสูงแบบประหยัดพลังงาน
  2. ทำงานที่แรงดัน 2.0-5.5V
  3. รองรับการทำงานในช่วงอุณหภูมิตามมาตรฐานอุตสาหกรรม

สรุปคุณสมบัติของ PIC18F458 ได้ดังนี้

  1. หน่วยความจำโปรแกรม (Program Memory)
    1. Flash : 32KB
    2. จำนวนคำสั่งที่เก็บได้ : 16384
  2. หน่วยความจำข้อมูล (Data memory)
    1. SRAM: 1536 ไบต์
    2. EEPROM : 256 ไบต์
  3. จำนวนขา I/O: 33 ขา
  4. จำนวนขาสัญญาณของ ADC : 8 ขา
  5. จำนวนขานำเข้าสำหรับทำงานของวงจรเปรียบเทียบสัญญาณ : 2 ขา
  6. CCP/ECPP (PWM): 1/1
  7. MSSP
    1. รองรับ SPI
    2. รองรับ I2C
  8. รองรับ USART
  9. Timer
    1. 8 บิต จำนวน 1 ตัว
    2. 16 บิต จำนวน 3 ตัว

การจัดวางขาของตัวถังแบบ PDIP ของไมโครคอนโทรลเลอร์ PIC18F458 ในภาพที่ 1 เป็นดังภาพที่ 2

ภาพที่ 2 การจัดวางขาของ PIC18F458
ที่มา : p.4 ของ PIC18F458 Datasheet

จากภาพที่ 2 และ 3 จะพบว่าไมโครคอนโทรลเลอร์ PIC18F458 มีขาของตัวถังจำนวน 40 ขา แบ่งเป็นขาสำหรับจ่ายไฟเข้า (VDD/VSS) ขาสัญญาณณาฬิกา (OSC1/OSC2) และขาสำหรับเชื่อมต่อกับพอร์ตซึ่งทำหน้าที่แตกต่างกันไป

การทำงานส่วนต่างๆ

ภายในไมโครคอนโทรลเลอร์มักเป็นการนำการทำงานหลากหลายอย่างมารวมกันภายใต้ชิพเพียงตัวเดียว เช่นเดียวกันกับตัวไมโครคอนโทรลเลอร์ PIC18F458 เองมีส่วนประกอบภายในตามภาพที่ 3

ภาพที่ 3 Block Diagram ของ PIC18F458
ที่มา: p.11, Figure 1-2: PIC18F448/458 Block Diagram

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

  1. Data Bus หรือบัสข้อมูลมีขนาด 8 บิตตามสถาปัยกรรมของชิพเชื่อโยงเข้ากันกับทุกโมดูลภายในชิพที่มีการรับ/ส่งข้อมูลระหว่างกัน
  2. ขนาดของ Address Bus หรือบัสอ้างอิงตำแหน่งจะมีขนาด 21 บิต
  3. ข้อมูลที่มีการรับส่งมีทั้งแบบ 8 บิตและ 16 บิต (ดูจาก Data Latch)
  4. พอร์ตใช้งานมีดังนี้
    1. PORTA มีขา RA0, RA1, RA2, RA3, RA4, RA5, OSC2
    2. PORTB มีขา RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7
    3. PORTC มีขา RC0, RC1, RC2, RC3, RC4, RC5, RC6, RC7
    4. PORTD มีขา RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7
    5. PORTE มีขา RE0, RE1, RE2
  5. การประมวลผลของหน่วย ALU กระทำแบบ 8 บิต และมีภาคคำนวณข้อมูล 8×8 หรือ 8 บิต คูณ กับ 8 บิตในการทำงานครั้งเดียว

ในภาคของการต่อ OSC หรือสัญญาณนาฬิกาให้กับไมโครคอนโทรลเลอร์จะต้องต่อคริสตัลและตัวเก็บประจุตามวงจรในภาพที่ 4 และตารางในภาพที่ 5 และ 6

ภาพที่ 4 วงจร OSC
ที่มา p.19, Figure 2-1 Crystal/Ceramic Resonator Operation (HS, XT, LP or LP OSC Configuration)
ภาพที่ 5 ตารางค่าความถี่สัญญาณนาฬิกาในโหมด XT/HS
ที่มา p.19, Table 2-1: Ceramic Resonators
ภาพที่ 6 ตารางค่าตัวเก็บประจุสำหรับโหมด LP/XT/HS
ที่มา p.20, Table 2-2: Capacitor Selection for Crystal Oscillatow

IC จะใช้สัญญาณนาฬิกา โดยมองเป็นลักษณะของ วงรอบ (Cycle) ซึ่งระบุเอาไว้ว่า 1 คำสั่งนั้นจะประกอบไปด้วย 1-2 วงรอบ โดยแต่ละวงรอบนั้นจะแบ่งเป็น 4 ส่วน คือ Q1, Q2, Q3 และ Q4 ด้วยเหตุนี้ ความเร็วโดยรวมของ PIC จึงเท่ากับ ค่าความถี่ของสัญญาณนาฬิกา หาร ด้วย 4 แต่ในรุ่น PIC18F458 มีวงจร PLL ทำให้สามารถเร่งความเร็วสัญญาณนาฬิาสูงสุดที่ 4 เท่า ทำให้ใช้คริวตัลความถี่เดียวกับไมโครคอนโทรลเลอร์ PIC รุ่นที่ต่ำกว่าแต่สามารถเร่งการทำงานได้เร็วกว่าได้สูงสุด 4 เท่า หรือในทางกลับกัน หมายความว่า ชิพในตระกูลนี้ทำงาน 1 วงรอบการทำงานภายใน 1 สัญญาณนาฬิกา (ยกเว้นคำสั่งกระโดดและการเปรียบเทียบแล้วกระโดด)

การต่อใช้งานขอใช้ภาพเดิมจาก PIC16F877 ที่เคยใช้งานดังภาพที่ 7 นั่นหมายความว่า ด้วยไมโครคอนโทรลเลอร์ 1 ตัว แหล่งจ่ายไฟ คริสตัล ตัวต้านทาน ตัวเก้บประจุ และสวิตช์ดังภาพที่ 7 ก็ทำให้สามารถใช้งานชิพตัวนี้ได้

ภาพที่ 7 การต่อวงจรเพื่อใช้งาน
ที่มา บทความ : Guide to PIC16F877 ] ตอนที่ 2 … สถาปัตยกรรมของ PIC16F877 และ 16F84 ….

สรุป

จากบทความนี้ผู้อ่านได้เรียนรู้เรื่องรายละเอียดของส่วนต่าง ๆ ของไมโครคอนโทรลเลอร์ PIC18F458 แบบละเอียดขึ้น พร้อมทั้งจะพบว่าการทำงานของชิพตระกูลนี้มีความเร็วในระดับ 1 คำสั่งต่อ 1 สัญญาณนาฬิกาซึ่งเป้นความเร็วที่สูง นอกจากนี้ยังมีโมดูล ADC ที่ละเอียดระดับ 10 บิต และ PWM ที่ตั้งค่าให้ทำงานได้พร้อมกันแบบ 2 หรือ 4 ขาทำให้สามารถสั่งในมอเตอร์หมุนทำงานได้พร้อม ๆ กันทั้ง 2 และ 4 ตัวเลยทีเดียวอันทำให้ลดความหน่วงเวลาของการสั่งเปิดสั่งงานทีละขาจึงทำให้การทำงานมีความแม่นยำยิ่งขึ้น และที่สำคัญ พวกเราหวังว่าความเข้าใจต่อส่วนต่าง ๆ หรือการรู้จักส่วนต่าง ๆ ทำหน้าที่อะไรจากบทความนี้จะเป็นพื้นฐานสำหรับการเขียนโปรแกรมสั่งงานในภาคส่วนต่าง ๆ ของไมโครคอนโทรลเลอร์ตัวนี้ต่อไปในบทความถัด ๆ ไป สุดท้าย ขอให้สนุกกับการเขียนโปรแกรมครับ

(C) 2022, โดย อ.อนุชาติ บุญมาก, อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ

ปรับปรุงเมื่อ 2022-01-24, 2022-02-28