Microcontroller (PIC + Example)
Microprocessor = a CPU in a microcomputer High speed, high performance Big, expensive Microcontroller = a microcomputer in a chip Low speed, low performance Cost effective, Low energy Small, cheap
Microcomputer
Microcontroller
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ การประยุกต์ใช้งานในรถยนต์ ควบคุมการทำงานของเครื่องยนต์เพื่อประหยัดน้ำมัน และลดการปล่อย ก๊าซพิษ ควบคุมการทำงานภายในรถยนต์เพื่อเพิ่มความปลอดภัยและความ สะดวกสบายให้แก่ผู้ขับและผู้โดยสาร
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ การประยุกต์ใช้ในการสื่อสารแบบแบบไร้สาย เช่นการสื่อสารแบบ Bluetooth หรือ Zigbee เพื่อเพิ่มความสะดวกในการรับส่งข้อมูลระหว่างอุปกรณ์อิเล็กทรอนิกส์ เครื่องใช้ไฟฟ้า และเซนเซอร์ต่างๆ เช่นโทรทัศน์ เครื่องวัดอุณหภูมิ เป็นต้น
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมเครื่องใช้ไฟฟ้าภายในบ้าน ควบคุมการทำงานของเครื่องปรับอากาศ เพื่อให้เครื่องปรับอากาศ สามารถทำงานได้อย่างมีประสิทธิภาพและประหยัดค่าไฟ ควบคุมการทำงานของเครื่องซักผ้า หรือกาต้มกาแฟ เพื่อให้ใช้งานได้ สะดวกและเพิ่มฟังก์ชันการทำงาน ควบคุมการทำงานของเครื่องตรวจจับควัน เพื่อเพิ่มประสิทธิภาพในการ ตรวจจับควันไฟ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมการทำงานของเครื่องจักรที่อุณหภูมิสูง ทำให้เครื่องจักรทำงานได้อย่างมีประสิทธิภาพและมีความเชื่อถือสูง
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมอุปกรณ์ที่ใช้ติดต่อกับมนุษย์ ปัจจุบันอุปกรณ์อิเล็กทรอนิกส์สามารถทำงานหลายอย่างแต่มีขนาดเล็ก ลง เช่นโทรศัพท์มือถือที่มีขนาดเล็กลงแต่ทำงานได้มากขึ้น อย่างใช้เล่น เกมส์ หรือใช้ต่ออินเตอร์เน็ต หรือโทรทัศน์รุ่นใหม่ที่สามารถดูหนัง 3 มิติ และใช้ต่ออินเตอร์เน็ตได้ ดังนั้นอุปกรณ์เหล่านี้จึงต้องการเครื่องมือที่ใช้ติดต่อกับมนุษย์ที่ดี กว่าเดิมเช่นจอสัมผัส หรือ Wii Remote เป็นต้น
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมแหล่งจ่ายกำลังงานแบบฉลาด ปัจจุบันแหล่งจ่ายกำลังงานไฟฟ้าต้องการการควบคุมที่มีความซับซ้อน เช่น เปิด/ปิดเครื่องได้อัตโนมัติเมื่อเกิดเหตุฉุกเฉิน สามารถควบคุมแรงดัน จำกัดแรงดัน จำกัดกระแส หรือจำกัดอุณหภูมิได้แบบ อัตโนมัติ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมระบบแสงสว่าง ควบคุมการปิดเปิดไฟแบบอัตโนมัติ เช่นปิดเปิดตามเวลาที่ตั้งไว้ หรือปิด เปิดเมื่อมีคนเดินเข้ามาในห้อง ใช้ตรวจสอบการปิดเปิดไฟ แบบทางไกลผ่านระบบอินเตอร์เน็ต หรือ โทรศัพท์มือถือ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมเครื่องจักรในโรงงานอุตสาหกรรม ควบคุมการปิดเปิด หรือความเร็วของเซอร์โวมอเตอร์ ตรวจสอบสัญญาณจากเซนเซอร์ต่างๆ
ตัวอย่างการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมเครื่องมือทางการแพทย์ ใช้ควบคุมการทำงานของเครื่องมือทางการแพทย์ต่างๆเช่น เครื่องวัด สัญญาณหัวใจ เครื่องวัดความดัน เครื่องวัดปริมาณน้ำตาลในเลือด
สถาปัตยกรรมและการออกแบบ PIC Harvard Architecture Reduce Instruction Set Computing (RISC) Single Word Instruction Pipeline
Harvard Architecture สถาปัตยกรรมแบบวอนนอยแมน เป็น การออกแบบไมโครโปรเซสเซอร์ที่มี Bus และหน่วยความจำสำหรับ โปรแกรมและข้อมูลร่วมกัน ทำให้ไม่ สามารถเฟทช์คำสั่งและข้อมูลพร้อม กันได้ สถาปัตยกรรมแบบฮาร์วาร์ด เป็นการ ออกแบบไมโครโปรเซสเซอร์ที่มี Bus และหน่วยความจำสำหรับโปรแกรม และข้อมูลแยกออกจากกัน ทำให้อ่าน คำสั่งและข้อมูลพร้อมกันทำให้ทำงาน ได้เร็วขึ้น
Single Word Instruction คำสั่งทุกคำสั่งของ PIC มีขนาด 2 byte (Single Word) ตัวอย่างเช่น PIC ที่มี Program Memory ขนาด 65536 byte (64 kByte) จะเก็บคำสั่งได้ทั้งหมด 32768 คำสั่ง คำสั่งแต่ละคำสั่งจะใช้เวลาในการทำงาน 4 สัญญาณนาฬิกา หรือเรียกว่า รอบคำสั่ง (Instruction Cycle) ถ้าป้อนสัญญาณนาฬิกาความถี่ 4 MHz ดังนั้นใน 1 วินาที PIC จะ ทำงานได้ทั้งหมด 1 ล้านคำสั่ง
Instruction Cycle 1 รอบคำสั่ง (Instruction Cycle) ประกอบด้วย 4 สัญญาณ นาฬิกา (Q1,Q2,Q3,Q4) ค่า Address ของ PC จะเพิ่มขึ้นตอน Q1 คำสั่งจะถูก Fetch จาก Program Memory และเก็บไว้ใน Instruction Register ตอน Q4
Instruction Cycle จากนั้นคำสั่งจะถูก Decode และ Execute ตอน Q1-Q4 ของ รอบคำสั่งรอบต่อไป PIC มีการทำงานแบบ Pipeline นั่นคือในขณะที่ PIC ทำการ Decode และ Execute คำสั่งแรก ก็จะทำการ Fetch คำสั่งถัดไป มาเก็บไว้ใน Instruction Register
One- or Two-Cycle Instruction คำสั่งส่วนใหญ่ของ PIC ใช้เวลาในการทำงาน 1 รอบคำสั่ง (One- Cycle Instruction) หรือ 4 สัญญาณนาฬิกา แต่มีบางคำสั่งที่ต้องใช้เวลา 2 รอบคำสั่ง (Two-Cycle Instruction)
ขนาดล้อ 66 cm ความเร็วเฉลี่ย 40km/Hr 16.84 รอบต่อวินาที 1 รอบทำงานได้ 59400 คำสั่ง 200 สเต็ปต่อ 1 รอบ 297 คำสั่งต่อ 1 สเต็ป
PIC18F8722 Family
PIN Diagram
Program Memory Mode PIC18F8722 มีวิธีติดต่อ Program Memory อยู่ 4 วิธีคือ Microprocessor Mode อนุญาตให้ติดต่อกับ Program Memory ที่อยู่ภายนอก PIC เท่านั้น เนื่องจาก Program Counter มีขนาด 21 บิท ทำให้สามารถติดต่อกับ Program Memory ได้ถึง 2 MByte Microprocessor with Boot Block Mode โปรแกรมส่วนหนึ่ง ถูกแบ่งเก็บใน Program Memory ภายใน PIC เรียกว่า Boot Block ซึ่งสามารถกำหนดให้มีขนาด 1, 2 หรือ 4 kByte และโปรแกรม ส่วนที่อยู่เก็บใน Address ที่อยู่เหนือ Boot Block จะต้องเก็บไว้ใน Program Memory ภายนอก PIC ซึ่งสามารถมีขนาดได้ไม่เกิน 2 MByte
Program Memory Mode Microcontroller Mode อนุญาตให้ติดต่อกับ Program Memory ภายใน PIC เท่านั้น Extended Microcontroller Mode โปรแกรมสามารถเก็บ ไว้ใน Program Memory ทั้งภายในและภายนอก PIC โดย สามารถติดต่อกับ Program Memory ภายใน PIC ได้ทั้งหมด
การบริหารจัดการ Data Memory Data Memory ภายใน PIC (ถูกมองว่าเป็น Register ของ CPU) เป็นหน่วยความจำ แบบ SRAM มี Address Bus ขนาด 12 บิททำให้สามารถติดต่อหน่วยความจำได้ ทั้งหมด 4096 Byte การอ่านหรือเขียนหน่วยความจำขนาด 40966 Byte จำเป็นต้องใช้คำสั่งที่สามารถอ้าง Address ขนาด 12 บิท ดังนั้นคำสั่งเหล่านี้จำเป็นต้องมีขนาด Double Word และใช้ เวลาในการทำงาน 2 รอบคำสั่ง เป็นการสิ้นเปลืองเวลาทำงาน เพื่อลดขนาดของ Address ของคำสั่งและลดเวลาในการทำงานจำเป็นต้องแบ่งหน่วยความจำ ออกเป็นพื้นที่ขนาดเล็กหรือ Bank Data Memory ถูกแบ่งออกเป็น 16 Bank โดยที่แต่ละ Bank มีขนาด 256 Byte ดังนั้นการอ้างตำแหน่งที่ใช้เก็บข้อมูลภายใน Bank จึงใช้ Address ขนาด 8 บิท Bank Select Register เป็น Register ที่ใช้ในการเลือก Bank ที่ต้องการติดต่อด้วย
การบริหารจัดการ Data Memory Register ที่อยู่ใน Data Memory แบ่งออกเป็น General Propose Register (GPR) Register ใช้งานทั่วไป เช่นใช้เป็นที่เก็บข้อมูลชั่วคราวในระหว่างการคำนวณ ทำให้โปรแกรม สามารถทำงานได้เร็วขึ้น Special Function Register (SFR) Register ใช้งานเฉพาะ เช่นใช้ในการควบคุมหรือเก็บสถานะการทำงานของ Controller หรือ อุปกรณ์ต่อพ่วง พื้นที่เก็บ SFR มีขนาด 160 Byte อยู่ที่ Bank ที่ 15 ของ Data Memory
Data Memory Map
SFR
External Memory Bus PIC18F8527/8622/8627/8722 มี External Memory Bus เพื่อให้สามารถติดต่อกับ Program Memory หรือ Data Memory ภายนอกเช่น Flash, EPROM, SRAM สามารถกำหนด Data Bus ให้มีขนาด 8 หรือ 16 บิท และสามารถกำหนด Address Bus ได้ถึง 4 แบบตั้งแต่ 8 บิท ถึง 20 บิท Address Bus, Data Bus และ Control Bus ใช้ขาสัญญาณทั้งหมด 28 ขา โดยสลับกับ I/O Port
External Memory Bus Control การใช้งานของ PORT เป็น Memory BUS จะสามารถกำหนดการทำงาน ได้จาก MEMCON register Bit EBDIS ใน MEMCON<7> จะกำหนดหน้าที่การทำงานเป็น I/O PORT ของขาสัญญาณที่ใช้เป็น BUS นี้ เมื่อกำหนดให้ EBDIS = 0 จะเป็นการปิดการทำงานในหน้าที่ของ I/O PORT และฟังก์ชันใดๆ ที่ใช้ขาสัญญาณร่วมกัน เมื่อกำหนดให้ EBDIS = 1 จะเป็นการเปิดใช้ฟังก์ชันของ I/O PORT ของ ขาสัญญาณ แต่เมื่อใดก็ตามที่มีการใช้งานของ External BUS (เช่นเกิดการอ่าน ข้อมูลจากภายนอก) ขาสัญญาณของ PORT นั้นๆ จะสลับหน้าที่การทำงานเป็น ระบบ BUS ทันที (ต้องระวังในการใช้งานแบบนี้)
ค่าเริ่มต้นที่ถูกกำหนดคือ ADDRBW=ADDR20BIT และ DATABW=DATA16BIT ในการใช้งาน External Memory BUS ของ PIC18F8722 จะสามารถกำหนดขนาด ของ Address Bus และ Data Bus ตามต้องการได้ โดยกำหนดใน CONFIG3L register หรือถ้าเป็นการเขียนใน ภาษา C ก็สามารถทำได้โดยใช้คำสั่ง #pragma config ADDRBW = ADDR16BIT #pragma config DATABW = DATA16BIT ค่าเริ่มต้นที่ถูกกำหนดคือ ADDRBW=ADDR20BIT และ DATABW=DATA16BIT การกำหนดค่าที่น้อยกว่านี้ จะทำให้มี I/O PORT เหลือใช้งานได้มากขึ้นเช่นการกำหนดใช้ ADDRBW =ADDR16BIT ก็จะทำให้ PORTH ซึ่งทำหน้าที่เป็น A17-A19 นั้น สามารถใช้งานเป็น I/O PORT ได้ปกติ การจะกำหนดADDRBW เป็นเท่าใดนั้นก็ขึ้นกับจำนวนของตำแหน่งข้อมูลภายนอกที่ต้องการ (แต่จะต้องมากกว่า DATABW ไม่เช่นนั้น DATA BUS จะทำงานไม่ครบ
ตารางแสดง PORT ที่ใช้งานในระบบ BUS
Address & Data Multiplex สิ่งสำคัญอีกอย่างในระบบ BUS ของ PIC18F8722 คือ การใช้งานของ ขาสัญญาณ Address BUS และ Data BUS ร่วมกัน การใช้งานแบบนี้ จะมีใช้ใน Microprocessor/Microcontroller หลายตัว ด้วยกัน เช่น MCS-51 8086 … ด้วยว่าจะเป็นการ ประหยัด ขา ของตัว IC หลักการทำงานคือ ในช่วงเวลาแรก ขาของ Microcontroller จะทำงานเป็น Address BUS โดยส่งค่าของ Address ที่ต้องการออกไป หลังจากนั้นแล้ว มันจะทำหน้าที่เป็น Data BUS ในการรับส่งข้อมูล ALE = Address Latch Enable
แต่ในการทำงานของอุปกรณ์ใน BUS นั้นต้องการค่าของ Address ตลอดเวลา ดังนั้นแล้วเพื่อให้สามารถทำงานได้ จะต้องมีวงจรที่ทำหน้าที่เก็บค่า ของ Address ที่ถูกส่งออกมาในช่วงแรกนี้ใว้ การเก็บค่า Address ของวงจรภายนอก จะถูกควบคุมด้วยสัญญาณ ALE ที่มา จาก Microprocessor/controller ใช้ IC LATCH (Flip Flop) 74HC373
16 Bit Data Mode ในการใช้งาน 16-bit Data mode นั้น เราจะสามารถเชื่อมต่อ External memory ได้สามลักษณะคือ 16-bit Byte Write 16-bit Word Write 16-bit Byte Select การกำหนดว่าจะเป็นการเชื่อมต่อแบบใด ทำได้จาก Bit WM1:WM0 ใน MEMCON register การเลือกใช้การเชื่อมต่อแบบต่างๆ นั้นก็เพื่อความสะดวกในการใช้งานหน่วยความจำ แบบ 8 bit ที่มีทั่วไปให้สามารถทำงานกับ Data BUS แบบ 16 bit ได้นั่นเอง หรือ จะเป็นการใช้งานของหน่วยความจำแบบ 16 bit โดยตรงก็ได้
16-Bit Byte Write Mode เป็นการใช้ IC หน่วยความจำแบบ 8 bit สองตัวทำงานร่วมกัน โดยใช้ตัวที่หนึ่ง เก็บข้อมูลส่วน High byte และอีก ตัวเก็บข้อมูล Low byte ในการอ่านข้อมูล จะใช้สัญญาณ /OE และจะเป็นการอ่านข้อมูลพร้อมกัน แต่การเขียนข้อมูลจะทำแยกกัน โดย /WRH เป็นสัญญาณสำหรับเขียน High byte และ /WRL สำหรับ เขียน Low byte
16-Bit Word Write Mode เป็นการใช้หน่วยความจำขนาด 16 bit หรือ 8 bit สองตัว การอ่าน และเขียนข้อมูลจะทำทีละ 16 bit ในการเขียนข้อมูล ที่เป็น Address คู่ TBLPTR<0>=0 จะไม่มีการเขียนข้อมูลจริงๆ แต่ข้อมูลนั้น จะถูกเก็บใน Buffer ก่อน จากนั้น เมื่อมีการเขียนข้อมูลที่เป็น Address คี่ TBLPTR<0>=1 ถัดมา จึงจะเกิดการเขียน ข้อมูลจริงๆ ทั้ง 16 bit พร้อมกัน วิธีการนี้ มีข้อจำกัดคือ ในการเขียนโปรแกรม จะต้องเขียนให้ทำการเก็บข้อมูลทีละ 16 bit ที่ Address ต่อเนื่องกันตามลาดับ ไม่อย่างนั้น การ ทำงานจะไม่ถูกต้อง
จากที่กล่าวไปแล้ว ในจังหวะแรก AD<15:0> จะทำหน้าที่เป็น Address BUS จากนั้นจะทำหน้าที่เป็น Data BUS ในการรับข้อมูลกลับสู่ PIC18F8722 มีข้อสังเกตที่สำคัญคือ ค่า Address ที่ปรากฏใน Address BUS คือ 0CCF33h แต่คำอธิบายแสดงว่าเป็นการอ่านข้อมูลที่ 199E67h ทั้งนี้เนื่องจากว่า Byte ที่ 199E67h นั้นเป็น High byte คี่ ที่อยู่ใน WORD address ที่ 0CCF33h นั้นเอง
8-Bit Data Width Mode ใช้ IC หน่วยความจำแบบ 8 bit เพียงตัวเดียว ในการเก็บข้อมูล หรือ จะเป็นการใช้งานของ I/O ภายนอกในแบบ Memory Map I/O เนื่องจาก Address BUS ของ PIC18F8722 จะเป็นค่า ตำแหน่งแบบ WORD ดังนั้นจึงมี สัญญาณ BA0 สำหรับการชี้ ตำแหน่งของ BYTE
21-BIT Addressing ในการใช้งาน Address BUS แบบ 20- BIT นั้น จะอ้างตำแหน่งได้เพียง 2^20 = 1,048,576 ตำแหน่งเท่านั้น แต่ เนื่องจากแต่ละตำแหน่งนั้นคือข้อมูล 16-BIT ดังนั้นจึงได้เป็นข้อมูล 2 MByte นั่นเอง ในการใช้งานถ้าต้องการตำแหน่งข้อมูลในแบบของ Byte จึงต้องมี สัญญาณใน Address BUS เพิ่มอีก 1 เส้น ซึ่งก็คือ Bus Address bit 0 (BA0) นั้นเอง เพื่อทำหน้าที่เป็น LSb ใน Address BUS แบบ 21-BIT หรือเป็น A0 นั่นเอง
Timing ในการใช้งาน Data BUS แบบ 8 bit นั้น IC หน่วยความจำ จะต้องทำหน้าที่ เก็บข้อมูลทั้ง High และ Low byte สลับกันไป ในการใช้งานแบบนี้ มีข้อสำคัญในการออกแบบคือ ถ้าต้องการใช้งานเป็น Program memory ซึ่งสำหรับ PIC18F8722 คำสั่งแต่ละอันนั้น จะมี ขนาด 16 bit ดังนั้นแล้ว เมื่อใช้งานเป็น Program memory จึงจะมีการ อ่านข้อมูล สองครั้ง ใน 1 รอบการทำงาน ( 1 TCY) ซึ่งต้องใช้หน่วยความจำที่มี ความเร็วสูงมาก (เวลาการทำงานน้อยกว่า 1 Clock) แต่ถ้าเป็นการอ่านข้อมูล จะมีเวลาในการทำงานได้ถึง 1 TCY ดังแสดงในรูป
การพิจารณา Timing
ตัวอย่างจากการต่อวงจร หน่วยความจำดังรูป ซึ่งจากการ ทำงานของหน่วยความจำเอง ที่ ต้องการเวลาในการทำงาน
ซึ่งถ้าหน่วยความจำ EPROM 2716 – 45 ที่ใช้มีคุณสมบัติ ทางเวลาดังนี้ หมายถึงต้องใช้ เวลา 450 ns ในการอ่านข้อมูล
ถ้า PIC18F8722 ทำงานที่ 10 MHz จะได้ ว่า 1 TCY = 400 ns ดังนั้นแล้ว Tacc = 0.75 TCY – 25 = 275 ns จากข้อมูลข้างต้นจะเห็นได้ว่า หน่วยความจำที่ใช้ในวงจร จะไม่สามารถใช้ งานได้ เนื่องจากมีเวลาในการทำงานที่ไม่ทัน ซึ่งถ้าใช้งานในการเก็บข้อมูลแล้ว PIC18F8722 มีวิธีการที่จะทำให้ สามารถใช้งานหน่วยความจำนี้ได้โดยการสร้าง Wait state ขึ้น (การ หน่วงเวลาการทำงานของ BUS)
Wait State เนื่องจากอุปกรณ์หน่วยความจำภายนอกอาจจะทำงานได้ช้ากว่าไมโครคอนโทรลเลอร์ ดังนั้นจะต้องทำให้ BUS ทำงานช้าลง แทนการลดความถี่ของสัญญาณนาฬิกา Wait State จะถูกกำหนดขึ้น เมื่อมีการอ่าน หรือเขียนข้อมูลให้กับอุปกรณ์ภายนอกเหล่านั้น ระบบ จะทำการรอเป็นเวลาที่กำหนดไว้ เพื่อให้อุปกรณ์ภายนอกมีเวลาในการทำงานได้นานขึ้น การใช้งานของ Wait State ทำโดยการเปิดใช้งานใน WAIT ใน Configuration register (CONFIG3L) และเวลาที่ใช้ในการรอ สามารถกำหนดได้จาก WAIT1 : WAIT0 bit (MEMCON <5:4>) ซึ่งสามารถกำหนดได้เป็นจำนวนของ TCY ค่าเริ่มต้น ที่กำหนดสาหรับ Wait State คือ ปิดการใช้งาน หรือเมื่อเปิด จะเป็น 3 TCY Wait state จะไม่ใช้งานเมื่อเป็นการอ่านโปรแกรม
ตัวอย่างของลำดับ สัญญาณ เมื่อกำหนด Wait state เท่ากับ 1 Tcy
Reset PIC18F8722 จะมีขบวนการ reset ได้หลายแบบ คือ Power-on Reset (POR) MCLR Reset during normal operation MCLR Reset during power-managed modes Watchdog Timer (WDT) Reset (during execution) Programmable Brown-out Reset (BOR) RESET Instruction Stack Full Reset Stack Underflow Reset นอกจากนี้แล้ว ใน PIC18F8722 ยังมี RCON register ที่จะบันทึกสถานะของการ RESET ว่าเกิดจากแหล่งใด ซึ่งสามารถตรวจสอบได้โดยโปรแกรม
Master Clear (MCLR) เป็นขาสัญญาณ ที่จะทำการ Reset การทำงานของ PIC18F8722 ให้ กลับสู่สภาวะเริ่มต้น ขาสัญญาณ /MCLR เป็นการทำงานแบบ Active LOW คือต้องให้ เป็น ‘0’ เป็นระยะเวลาหนึ่ง เนื่องจากจะมีวงจรป้องกันสัญญาณรบกวนด้วย ขาสัญญาณ /MCLR นี้อยู่ใน PORTE เป็น I/O ด้วย ซึ่งในส่วนนี้ถ้า ต้องการใช้เป็น I/O ก็จะสามารถยกเลิกการทำงานของ /MCLR ใน Configuration register ได้
Power-On Reset (POR) เป็นขบวนการ Reset ที่ต้องกระทำทุกครั้งเมื่อ เริ่มการทำงานของ Microprocessor/controller ด้วยว่า จะเป็นการกำหนดค่าเริ่มต้นให้กับ Register ต่างๆ ทำให้เริ่มการทางานได้อย่างถูกต้อง Register ที่สำคัญเช่น Program Counter (PC) จะถูกกำหนดค่าเริ่มต้นเป็น 0000h สำหรับ PIC18F8722 จะมีวงจรที่ทำหน้าที่ กำเนิดสัญญาณ POR นี้ภายในแล้ว หรืออาจต่อวงจรภายนอกเพิ่มเติมได้ดังรูป
Brown-Out Reset (BOR) เป็นการ Reset ที่เกิดขึ้นเมื่อระดับของแรงดันไฟเลี้ยงวงจร ต่ำกว่าระดับที่ กำหนด ทั้งนี้เพื่อป้องกันการทำงานที่อาจไม่ถูกต้องเมื่อมีไฟกระชากใน วงจรได้
Watchdog Timer (WDT) reset สำหรับ PIC18F8722 การทำงานของ WDT จะนับเวลาโดยใช้ INTRC source เมื่อเปิดใช้งาน WDT INTRC source ก็จะทำงานด้วย ซึ่งจะมีคาบเวลาที่ 4 ms คาบเวลา 4 ms จะถูกนับด้วย 16-bit postscaler และเมื่อนับครบเวลาที่กำหนดแล้ว จะสามารถ กำหนดได้ว่า จะให้เกิดอะไรขึ้น ระหว่าง การ Reset กับการออกจาก Sleep Mode จากฐานเวลาที่ 4 ms เราจะสามารถตั้งเวลาของ WDT ได้ถึง 131.072 seconds (2.18 minutes) WDT และ postscaler จะถูก clear ได้จาก การเข้า SLEEP Mode การทำคำสั่ง CLRWDT instruction ดังนั้นแล้วถ้าไม่ต้องการให้เกิดการ Reset จะต้องทาการ Clear WDT ก่อนที่ Postscaler จะนับ ครบเวลา