Enhanced Mid-Range PIC MCU Architectural Overview

 Summary

Microchip 8-bit MCU Families

8bit-family.png

The PIC16F1xxx Enhanced Mid-Range 8-bit PIC®MCU Family spans a wide array of memory sizes and I/O pins.
This page presents the key architectural features of the PIC16F1xxx family of MCUs. Links are provided in this page to the technical details needed to implement applications on the enhanced mid-range PIC MCU family.

Harvard Architecture

Enhanced mid-range PIC® MCUs use a dual-bus Harvard Architecture.

harvard-architecure-1.png

Instruction Bus

Program instructions are fed into the ALU from FLASH program memory via the 14-bit instruction bus. On every instruction clock cycle one 14-bit program word is read into the ALU

Data Bus

An 8-bit data bus connects the ALU to the Data Memory space. During each instruction the ALU can read data from data memory location, modify the data, then write the data back to memory.

Instruction Pipelining

The enhanced mid-range PIC's dual-bus architecture provides for a two stage instruction pipeline. One each clock cycle two instruction phases execute:

  1. The next instruction is "fetched" from Program Memory
  2. The current instruction is "executed" and reads/modifies/writes data memory (if needed)
pipeline.png

Memory Mapped Peripherals

A closer look at the Data Memory section of the enhanced mid-range PIC®MCU shows the registers controlling the peripherals and I/O ports are accessed by reading or writing to specific data memory addresses. This mapping of peripherals to memory address greatly simplifies learning how to program the enhanced mid-range PIC.

harvard-2.png

The Data Memory Page of the enhanced mid-range tutorial offers a complete description along with program examples accessing the memory mapped peripherals

Orthogonal Instruction Set

Enhanced Mid-Range PIC® MCUs each have 49 instructions. Instructions directly accessing Data Memory addresses execute in one instruction cycle. Instructions which cause a change in the program counter BRA, GOTO, RETURN, CALL, ..etc) take two instruction cycles to execute.

By mapping the I/O and peripheral registers to memory addresses PIC MCUs do not need special instructions for I/O operations or to set peripheral registers. Writing to an I/O port or configuring a peripheral is a simple write to a memory location. Reading the value of an input pin, ADC result register, or timer is a simple read of a memory location. By using a small number of orthogonal instructions Enhanced Mid-Range PIC MCUs are easy to program, use less silicon to build, and consume less power.

Examples of Instruction Implementation

orthogonal-table.png

For a detailed list of the instruction set and a full discussion of instruction timing please consult the Instruction Set page of the Enhanced Mid-Range tutorial.

Flexible Clocking Options (Up to 32MHz)

Selected by the PIC® MCU's configuration bits the system clock has the following properties:

  • Optional source (internal oscillator or external circuitry)
  • Flexible speed options up to 32MHZ
  • Two speed start-up - allows system to run initialization software while external oscillator is stabilizing
  • Clock Switching - The system clock source can be switched between external and internal clock sources via software.
  • Fail-Safe Clock Monitor - switches to internal oscillator in the event of an external clock failure
harvard-3.png

For a detailed description of the oscillator configuration options please refer to the 8-bit Oscillator page in the Enhanced Mid-Range Tutorial.

Digital I/O

Almost every pin on the Enhance Mid-Range PIC MCU can be used as a digital input or output pin. Digital Pins share these attributes:

  • Monitor Digital Inputs
  • Control Digital Devices
  • Internal Weak Pull-ups
  • Multiplexed with Peripherals
  • High Drive capability (up to 25 mA sink/source on many I/O pins)
  • Direct single cycle bit manipulation
  • 4kV ESD protection diodes

At Reset:

  • Digital Pins revert to input (Hi-Z)
  • Analog Capable pins revert to analog

Typical Digital Pin Structure

Five registers control the operation of the a digital pin. These 8-bit registers control 8 pins of a PORT. Using the registers TRISX, PORTx, LATx, WPUx, and ANSEL the program can:

  • Configure the a pin as an input or output TRISx
  • Read an input pin (or all 8 PORT pins) PORTx
  • Output a 1 or 0 to a pin LATx
  • Enable or disable the internal Pull Up Resistor WPUx
  • Determine if analog capable pins operate in analog or digital Mode ANSEL
basic-digital-io.png

For a complete discussion of the enhanced mid-range PIC digital I/O including details on programming digital input and output operations refer to the Digital IO section of this enhanced mid-range tutorial

Multiplexed Pins

In addition to being configured as digital I/Os, pins on enhanced mid-range PIC MCUs can have several possible functions. The pin diagram on the datasheet shows the options for each pin. At start-up the program has the option of configuring the pins.

multiplexed.png

For comprehensive discussion of the enhanced mid-range PIC digital I/O including details on configuring the pins refer to the Peripheral Section of the enhanced mid-range tutorial

Advanced Peripherals

In addition to digital I/O enhanced mid-range PIC MCU family members have an assortment of advanced peripherals. These peripherals include peripherals for data conversion, communication, and signal conditioning.

peripherals.png

For a complete list of peripherals available please reference the Peripheral Section of the tutorial

Interrupts

Enhanced mid-range PIC MCUs utilize a single vector pre-emptive interrupt structure.

Each peripheral on the PIC is capable of generating an interrupt request. When an interrupt request occurs AND interrupts for the requesting device are enabled an interrupt will occur.

The enhanced mid-rage PIC uses a 16 level hardware stack to store the current content of the PC when an interrupt occurs. The program context is saved in shadow registers and control is passed to program memory address 0x04.

Interrupt Service Routine (ISR)

The user is responsible for writing the code to service the interrupt and placing the code at address 0x04. This Interrupt Service Routine (ISR) determines the source of the interrupt, then performs the necessary task to service the interrupting peripheral. An ISR's final instruction is the Return From Interrupt (RETFIE) instruction.

Automatic Context Saving

The following registers are saved to a single-level shadow register set in the event of an interrupt

  • W register
  • BSR
  • STATUS
  • FSR
  • PCLATH

When the ISR executes the RETFIE instruction, these registers are restored to the pre-interrupt value

Single Level Interrupt Pre-emption

When an interrupt occurs the Global Interrupt Enable bit (GIE) in the status register is disabled. This will prevent the an interrupt from being pre-empted by another interrupt.

Upon executing a RETFIE the state of the GIE control bit is restored to its pre-interrupt value.

For a complete description of the interrupt process and programming examples please refer to the Interrupt Section of the Enhanced Mid-range tutorial.

What happens at System Start-up (RESET)

There are several sources of a RESET on the enhanced mid-range PIC MCU. The RESET sources common to almost all applications are the Power On Reset (POR) and Brown Out Reset (BOR) due to a sagging power supply voltage (i.e. brown-out). There are several other methods for resetting the MCU including Watchdog timeout and directly accessing the MCLR pin.

Program Counter is set to 0x00.

After a RESET the instruction located at address 0 is the first instruction executed. The application developer is responsible for placing code into this address to 'boot up' the PIC. Microchip's MPLAB® XC8 compiler will insert the appropriate instructions to start-up the PIC and transfer control to main. Assembly level programmers will have to write the code to initialize the PIC and jump past the Interrupt Vector located at address 0x04.

All Special Function Registers are set to a Default Value

The datasheet for each enhanced mid-range PIC MCU shows the values which the registers will contain at RESET.

sample-register.png

The Programming Examples section of the enhanced mid-range tutorial provides programming examples of how to 'boot-up' the MCU.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.