lunes, 9 de octubre de 2017

¿Qué es un Bootloader?

Un bootloader es un pequeño código que permanece dentro del flash del PIC. Se utiliza como herramientas de programación, para cargar código de programa real en el MCU.   

El código de programa real puede pasar de la PC al gestor de arranque mediante una aplicación de PC específica ("mikroBootloader") a través de interfaces de comunicación específicas.

Micros usados.
Por ahora solo podemos usar micros con 8k de memoria flash ya que las direcciones estan definidas en ese rango, en este caso usaremos el PIC16F876A pero el original funciona para el PIC16F877A.

El codigo original del bootloader se encuentra ubicado en la carpeta:
C:\Users\Public\Documents\Mikroelektronika\mikroC PRO for PIC\Examples\Other\Bootloader\P16\P16F877A

Una vez copiado el archivo vamos a abrir el proyecto y vamos a modificar algunos parámetros como sigue a continuación:


Guardamos, y lo compilamos, se graba el archivo hex y procedemos a armar el siguiente esquema:


Como puedes ver este bootloader funciona por terminal serie, puedes usar cualquier adaptador USB serie como el PL2303 que provee la alimentacion de 5v y es muy economico:


haciendo click en la imagen descargas el driver


Ahora haremos un programa blink para probar el funcionamiento, ejemplo el siguiente:

void main() {
       trisb.b0=0;
       while(1){
       PORTB.B0=1;
       delay_ms(500);
       PORTB.B0=0;
       delay_ms(500);
       }

}


Recuerde las configuraciones deben ser las mismas del bootloader, ahora le damos cargar usando el programa que la ide incorpora para esto:




Recuerde, precionar el boton de reset antes de conectar, una ves cargado vuelva a presionar el reset y espere, el led encendera y apagara y ud se habra dado cuenta que ya esta funcionando.

domingo, 8 de octubre de 2017


sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
#include <built_in.h>
const char ASCCI[] = "0123456789ABCDEF";

void main() {
unsigned Temp;
char string[8];
adcon1 = 6;
       Lcd_Init();
       Lcd_Cmd(_LCD_CLEAR);
       Lcd_Cmd(_LCD_CURSOR_OFF);
       while(1){
           temp=ReadDs(0);
           DS18S20ToStr(temp,string);
           lcd_out(1,1,String);
           delay_ms(200);
     
       }
}
Lectura de ADC y visualización en display LCD 2X16



// Lcd pinout settings
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;

void main() {
unsigned t;
unsigned short h,l;
char txt[7];
   trisb=0;
   portb=0;
   trisa  = 0xff;
   ADC_Init();
   Lcd_Init();
   Lcd_Cmd(_LCD_CLEAR);               // Clear display
   Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
   Lcd_Out(1,1,"Start LCD");                 // Write text in first row

while(1){
     t=ADC_Read(0);
     wordtostr(t,txt);
     lcd_out(2,1,txt);
     delay_ms(100);
}

}

Esta es la configuracion apropiada para este proyecto




sábado, 5 de agosto de 2017

Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827
Ej #7
Esta ves damos uso al modulos EUSAR (Enhanced USART).
Por ahora no vamos a utilizar las caracteristicas de deteccion de velocidad que es capas de realizar estos micros, ya que es una caracteristica avanzada que nunca he utilizado, pero que mas adelante en ejercicios posteriores voy a tratar de probar.
Por ahora solo se enviara una cadena de datos, eso si al estilo strings de c, y usando rutinas tambien comunes a lenguajes de alto nivel, pero implementadas en ASM.
Tenemos rutinas como:
CONFIG_USART_9600
UART_WRITE
UART_WRITE_STRING
Esto se pone emocionante!!
ver codigo aca
https://pastebin.com/iCDduWzY
bajate todo el proyecto https://goo.gl/SabWj6


martes, 1 de agosto de 2017

50 ejercicios ensamblador MPLABx con el PIC16F1827 
Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827
Ej #6
Esta ves he realizado una nueva actualización de la librería ASM para manejo del LCD ahora se puede utilizar cualquier pin del microcontrolador y cualquier puerto con el fin de hacer mas personalizable la libreria, pero eso no es todo, ahora vamos a ver el TIMER1 en acción, pero eso no es nada he incorporado una librería que había creado hace muchos años para la conversión de datos binarios en BCD y para finalizar estamos usando el direccionamiento Indirecto con los registros INDF0 y FSR0 con el fin de enviar datos al lcd al estilo cadenas de c.
Codigo principal https://pastebin.com/1x5vs7Rf
https://goo.gl/vPcYH5







sábado, 29 de julio de 2017

50 ejercicios ensamblador MPLABx con el PIC16F1827 
Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827
Ej #5
Titulado: Manejo de display LCD con librería LCD propia.
Ver libreria https://pastebin.com/GF0fZp0z
archivos para descargar https://goo.gl/DUYpy9












miércoles, 26 de julio de 2017



En los últimos años, hemos visto proyectos y productos pasar lentamente de microcontroladores de 8 bits a microcontroladores ARM más potentes. La razón de esto es simple: si quieres hacer más cosas, como una tostadora con coneccion a Internet, necesitas más bits, más Flash y más poder de procesamiento. Sin embargo, esto no significa que los PIC de 8 bits estén muertos. Los pic de Ocho bit siguen dando batalla, y recientemente Microchip anunció su última familia de microcontroladores de 8 bits.

La familia de microcontroladores PIC16F15386  es la última incorporación de Microchip a su cartera de micros de 8 bits. Esta familia de microcontroladores de Microchip 'incluye todos los juguetes' . Otras familias de PICs han incluido características tales como un generador de forma de onda complementario, oscilador de control numérico, un controlador lógico configurable, ahorro de energía y extra bajo consumo, pero nunca antes tanto en un solo chip.


Esta incluye algunos nuevos modulos internos no visto antes en las ofertas anteriores de Microchip. Cabe destacar las características de administración de energía (modos IDLE y DOZE) y un área de información del dispositivo en el chip que contiene datos calibrados en fábrica (calibración de voltaje ADC y una referencia de voltaje fijo) y un ID exclusivo para cada chip individual.

Como es de esperar de una nueva familia de PIC, el PIC16F15386 es compatible con el MPLAB Xpress  IDE y el MPLAB Code Configurator , un entorno de programación gráfica. Los productos de la familia van desde paquetes de 8 pines(incluyendo DIP!) Con 3.5kB de Flash de programa a 48 pines QFPs con 28kB de memoria Flash de programa. El objetivo de Microchip es ofrecer una amplia oferta, lo que permite a los diseñadores ampliar sus creaciones sin tener que cambiar las familias de los microcontroladores.





martes, 25 de julio de 2017

Cambios: Se cambiaron las resistencias de 1/8w por resistencias de 1/4w mas comerciales.
Cuenta con doble alimentación, USB-BUS y Externa, Sense PIn, Led Power, Led User, BUS ICSP y Reset. A esta placa se le puede colocar diversos bootloaders y trabajar con diferentes entornos, MIKROC, CCS, Pinguino, XC8.




Conexión con el PICKIT3

Acá vemos como esta conformado el bus icsp de Microchip en el PICKIT3





Conectar el PICKIT3 a la tarjeta POWER2550

Diseño del circuito impreso

Pruebas terminadas, conectividad en todos los aspectos funcionando
descargar aca el archivo eagle:

Descargar el diseño en eagle  <<--- click aqui









viernes, 21 de julio de 2017

Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827

Titulado: Contador decimal con display led con tabla de datos








copiar codigo fuente aca

Descargar los archivos aca








Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827

Titulado: Contador decimal con display led





Codigo fuente disponible aqui

descarga archivos aca




Continuamos con esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827

Titulado Barra de leds




   Codigo fuente en pastebin


Descargar los archivos del proyecto




Iniciamos esta serie de ejercicios básicos de programación en ensamblador usando el PIC16F1827

La familia PIC16F1826/1827 de microcontroladores se basa en el núcleo de arquitectura media mejorada de Microchip con una pila de hardware de 16 niveles de profundidad y 49 instrucciones. Estas MCU proporcionan hasta 8 MIPS, hasta 7 Kbytes de memoria de programa con RAM de hasta 384 bytes y EEPROM de datos de 256 bytes. Posee un oscilador configurable con una precisión de ±1%.

Características del microcontrolador
Velocidad de CPU máx. de 32 MHz
49 instrucciones
Pila de hardware de 16 niveles
Oscilador interno de 32 MHz – Rango de frecuencia seleccionable de 32 MHz a 31 kHz
16 contactos de E/S
Tecnología nanoWatt XLP
Reset de encendido (POR)
Temporizador de arranque (PWRT)
Temporizador de arranque de oscilador (OST)
Reset de caída de tensión (BOR)
Temporizador Watchdog ampliado (WDT)
Programación de baja tensión mejorada (LVP)
Programación serie en circuito (ICSP)
Depuración en circuito (ICD)
Periféricos
Convertidor analógico a digital (ADC) de 12 canales y 10 bits
Módulo de sensor capacitivo mTouchTM de 12 canales
Dos módulos de captura/comparación/PWM (CCP) – PIC16F1827 solo
Módulos de captura/comparación/PWM mejorados (ECCP) – PIC16F1826 x 1, PIC16F1827 x 2
Dos comparadores
Temporizadores de 8 bits – PIC16F1826 x 2, PIC16F1827 x 4
Un temporizador de 16 bits
Puerto serie síncrono maestro (MSSP) con SPI e I2C – PIC16F1826 x 1, PIC16F1827 x 2
Transmisores receptores síncronos-asíncronos universales mejorados (EUSART)
Referencia de tensión fija (FVR)
Módulo de modulador de señal de datos


Datasheet:   https://goo.gl/NjKVP6

Iniciamos un led blinnk


Vista del proyecto en mplabx 3.65





Set de instrucciones basicas de estos microcontroladores



Descarga el MPLABx desde aca  <<--