1 / 19

Electronics Design Lab TUTORIAL PIC Microcontrollers

Electronics Design Lab TUTORIAL PIC Microcontrollers Francesco Tenore 2/10/2006 The Microchip ® PIC ucontrollers http://www.microchip.com Characteristics types; speeds; I/O pins; Analog to Digital Converters; Capture/Compare modules Programming (MPLab) Instruction set

bernad
Download Presentation

Electronics Design Lab TUTORIAL PIC Microcontrollers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Electronics Design LabTUTORIALPIC Microcontrollers Francesco Tenore 2/10/2006

  2. The Microchip ® PIC ucontrollers • http://www.microchip.com • Characteristics • types; speeds; I/O pins; Analog to Digital Converters; Capture/Compare modules • Programming (MPLab) • Instruction set • Implementations and Examples

  3. Characteristics • RISC CPUs • 8-bit • 16-bit • Number of I/O pins: 4-70 • Memory types and sizes: • Flash; OTP; ROM • 0.5k – 256k

  4. Speeds • All PICs require oscillators to execute instructions: • Internal* (low speeds, up to 8 MHz) • External (high speeds, up to 40 MHz) • Instructions are executed at least at ¼ oscillator speed (4 clocks/instruction) (*Note: not all PICs have internal oscillators)

  5. A/D converters and C/C modules • All PICs have between 0 and 16 A/D converters with 8/10-bit resolution • 8-16 bit Timers/Counters • Comparator Modules (0-2)

  6. Example: PIC16F877A 5/6 Programming pins 8 A/D channels 2 Oscillator Inputs 2 RS-232 inputs 33 I/O ports

  7. Programming – MPLab and Assembly

  8. MPLab • Download @ http://microchip.com • Assembly compiler for programming PICs • Based on specific PIC instruction set • To upload the program: • Compile: ProjectBuild All (Ctrl+F10) • Erase the device: Programmer Erase Flash Device • Program: Programmer Program

  9. Instruction Set • 35 single word instructions • Byte oriented file register operations • Bit oriented file register operations • Literal and control operations

  10. Example 1 Using the PIC12F683 as a 2-state switch

  11. Giving memory to a pushbutton

  12. Giving memory to a pushbutton • In this example we: • Store the state of the LED and • Turn off if on and • Turn on if off

  13. Example 2 Using the PICs A/D converters for Pulse Width Modulation

  14. Pulse Width Modulation (PWM) • 1-2 ms pulse used to control servomotors • In this example, we: • ACQUIRE an analog 0-5V signal • CONVERT it into a 1-2 ms pulse that depends on the analog voltage and output the result on an output pin • REPEAT

  15. Steps for Analog-to-Digital Conversion 1. Configure the A/D module: • Configure analog pins/voltage reference and digital I/O (ADCON1) • Select A/D input channel (ADCON0) • Select A/D conversion clock (ADCON0) • Turn on A/D module (ADCON0) 2. Configure A/D interrupt (if desired): • Clear ADIF bit • Set ADIE bit • Set PEIE bit • Set GIE bit 3. Wait the required acquisition time. 4. Start conversion: • Set GO/DONE bit (ADCON0) 5. Wait for A/D conversion to complete, by either: • Polling for the GO/DONE bit to be cleared (with interrupts enabled); OR • Waiting for the A/D interrupt 6. Read A/D result register pair (ADRESH:ADRESL), clear bit ADIF if required. 7. For the next conversion, go to step 1 or step 2, as required. The A/D conversion time per bit is defined as TAD. A minimum wait of 2TAD is required before the next acquisition starts.

  16. ADC on PIC 16F877 • Configuration: • ADCON0, ADCON1 • Result • ADRESH, ADRESL (See handout)

  17. Samples • The microchip website: www.microchip.com offers samples of PICs (maximum 5) that are sent to you for free. Please e-mail me at fra@jhu.edu if you have any questions.

  18. ; EDL_test1.asm: blinks an LED when pushbutton is pressed. #INCLUDE "P12F683.INC" ORG 0x000000 bsf STATUS,RP0 ;Bank 1 movlw b'01110010' ; 0x00 movwf OSCCON ; 0x01 goto START ; 0x02 ORG 0x000020 START: COUNTER EQU 0x21 TEMP EQU 0x22 BCF STATUS,RP0 ;Bank 0 CLRF GPIO ;Init GPIO MOVLW 07h ;Set GP<2:0> to MOVWF CMCON0 ;digital I/O BSF STATUS,RP0 ;Bank 1 CLRF ANSEL ;digital I/O MOVLW 28h ;Set GP<5> and GP<3> as inputs MOVWF TRISIO ;and set GP<4,2:0> as outputs BCF STATUS,RP0 ;Bank 0 BSF GPIO,0 LOOP: BTFSS GPIO,5 ; skip if button NOT pressed GOTO CLEAR_ROUTINE ; otherwise GOTO LOOP CLEAR_ROUTINE: INCF COUNTER,1 ; increment the counter MOVLW 0x01 ; w=1 ANDWF COUNTER,0 ; counter AND w => ; w = 0x01 MOVWF TEMP ; TEMP = 0x01 BTFSC TEMP,0 ; skip if TEMP is 0 BCF GPIO,0 ; otherwise, clear GPIO<0> BTFSS TEMP,0 BSF GPIO,0 ; if it's 1, then set it. LOOP2: BTFSC GPIO,5 GOTO LOOP GOTO LOOP2 END

More Related