Blog

April 26, 2015

Cargador de arranque HID para PIC18F25K50 en las tarjetas CEX

(Nota:  Post en construcción…)

El aprendizaje de microcontroladores y desarrollo de proyectos prácticos es una actividad que hoy en día requiere una inversión de dinero muy modesta, comparada con lo que ello implicaba en los  años 90.

En aquel entonces se requerían por lo menos los siguientes elementos para desarrollar aplicaciones con microcontroladores:

– Un programador de MCU (para cada fabricante con costo cercano a los U$200 dólares, o universal, hasta cinco veces más costoso).  Eran programadores de memoria EPROM o ROM generalmente.

– Chips especiales para pruebas (hasta 100 reprogramaciones únicamente), de encapsulado cerámico con ventana de cristal con memoria EPROM (como por ejemplo PIC16C57JW cuyo costo era del orden de U$40 dólares, en contraste con el valor del chip de producción cuyo costo era del orden de U$3.85 dólares pero que era no reprogramable- One Time Programmable -OTP): CPU RISC de 8 bits, 20MHz máximo, 2K instrucciones ROM, menos de 60 bytes de RAM, sin EEPROM, un timer/counter, sin interrupciones, sin UART, sin I2C, sin SPI, sin PWM …

– Lampara UV para borrar memorias EPROM (costaba cerca de U$90 dólares).

Actualmente, las tarjetas de desarrollo con microcontroladores de 8 bits como por ejemplo la CEX board, de hardware abierto tipo Arduino, o la CEX nano (que nos recuerda las BASICSTAMP), cuestan 10 veces menos de lo requerido en los 90’s y ofrecen muchos más recursos al programador, como los disponibles para 18F25K50 de Microchip (2012):

 (tomado de sitio Web de Microchip, Abril 2015)

 

Features 18F25K50
  • High performance PIC18 core with 8×8 Hardware Multiply
  • Flash Program Memory with self read/write capability
  • 256 Bytes of integrated EEPROM
  • Internal 48MHz Oscillator with USB Accuracy -Via Active Clock Tuning from USB Host
  • Universal Serial Bus 2.0 Module
  • Enhanced Capture Compare PWM (ECCP) Module with up to 4 outputs
  • Integrated Temperature Indicator Module
  • Up to 25 Channel 10-bit ADC with Voltage Reference
  • 2 Analog Comparators
  • 5-bit Digital to Analog Converter (DAC)
  • MI2C / SPI Module (MSSP)
  • Enhanced Addressable USART Module
  • Charge Time Measurement Unit (CTMU) for measurement applications
  • 25mA Source/Sink current I/O
  • 2x 8-bit Timers
  • 2x 16-bit Timers
  • Extended Watchdog Timer (WDT)
  • Enhanced Power-On/Off-Reset
  • Low-Power Brown-Out Reset (LPBOR)
  • Programmable Brown-Out Reset (BOR)
  • In Circuit Serial Programming and Debug (ICSP/ICD)
  • PIC18LF2xK50 (1.8V – 3.6V) with nanoWatt XLP (eXtreme Low Power)
  • PIC18F2xK50 (1.8V – 5.5V)
 Parameter Name  Value
Program Memory Type Flash
Program Memory (KB) 32
CPU Speed (MIPS) 12
RAM Bytes 2,048
Data EEPROM (bytes) 256
Digital Communication Peripherals 1-UART, 1-A/E/USART, 1-SPI, 1-I2C1-MSSP(SPI/I2C)
Capture/Compare/PWM Peripherals 1 CCP, 1 ECCP
Timers 2 x 8-bit, 2 x 16-bit
ADC 14 ch, 10-bit
Comparators 2
USB (ch, speed, compliance) 1, FS Device, USB 2.0
Temperature Range (C) -40 to 125
Operating Voltage Range (V) 1.8 to 5.5
Pin Count 28
XLP Yes
Cap Touch Channels 14
Gracias a que desde comienzos de este siglo la mayoría de fabricantes han implementado en sus MCU los procedimientos para que la memoria de programa pueda ser modificada en tiempo de ejecución, y que la duración (endurance) de las memorias FLASH supera los 100.000 ciclos de lectura/escritura, hoy en día se dispone de la opción de reprogramar los microcontroladores sin necesidad de hardware especializado, mediante el cargador de arranque (bootloader: parte en MCU y parte en PC).  La MCU recibe desde un computador PC a través de puerto COM o USB el archivo  con el programa del usuario (*.HEX)  y se encarga de programarlo en su propia FLASH.  Posteriormente reiniciando la alimentación del micro, mediante la activación de algún interruptor especial durante el arranque o RESET, o mediante la verificación de una secuencia particular de datos en la EEPROM que indica que el programa fue transferido exitosamente por el cargador de arranque, se sale del modo bootloader y se transfiere el control a la aplicación descargada por el usuario.
Para muchas MCU actualmente también es posible realizar depuración serial (debugging) a través de alguna interfaz serial (USB, UART, JTAG o propietaria).   En este caso se adiciona código adicional  al código de usuario para debugging y se transfiere a la MCU eventualmente empleando un puerto serial especial para dicha operación.
 Todas las versiones de las board CEX basadas en 18F25K50 vienen preprogramadas con un cargador de arranque USB HID que ocupa el boot block de la MCU (los primeros 2KB de la memoria FLASH).  Para emplear el cargador de arranque se debe cargar en el PC la aplicación USB HID bootloader y al aplicar energía a la board (por micro USB) mientras se presiona el botón SW3 (o el indicado en el manual de usuario) la MCU entra en modo cargador de arranque.    Luego en la aplicación bootloader de PC se selecciona el archivo *.HEX a transferir y se hace clic en el botón programar.  Una vez programada la MCU se da clic en botón RESET de la aplicación PC o se presiona el botón RESET (_MCLR) de la board o se desconecta y reconecta el cable micro USB (manipular con cuidado para evitar daños en la board por uso reiterado) para empezar a ejecutar la aplicación del usuario.
Bootloader USB HID Microchip, V 2.91  (PC, Windows) Descargar
Bootloader USB HID MCU PIC18F25K50, código fuente en assembler  (proyecto para MPLAB IDE 8.9x, MPASM 5.x) Descargar (Basado en bootloader por SAKA)
Si usted desea programar en Assembler (MPASM), puede tomar como referencia un proyecto que contiene los archivos e instrucciones necesarias para reubicar los vectores de Reset e Interrupciones ( high and low priority) empleando un archivo con scripts para el linker (MPLINK).  Descargar
También se encuentra disponible un proyecto de referencia, a manera de plantilla, para programar los 18F25K50 en lenguaje C (para compilador MPLAB C 18 V 3.47). Descargar .  Se ha escogido este compilador debido a que la versión gratuita del nuevo compilador  XC8 de Microchip, a nuestro criterio, actualmente ( Abril, 2015) ofrece menos ventajas (restricciones de optimización) que el MCC18, a pesar de que este último ha sido descontinuado (2013).

 

Aprende, CEX
About Francisco Zamora

Leave a Reply

Your email address will not be published. Required fields are marked *