- Características generales PIC 18F452
- Oscilador modo XT
- Organización de la memoria
- Puertos
- Comunicación serie PC-PIC18F452
- Programa de prueba de transferencia de datos puerto serial PIC 18F452
- Referencias
Características generales PIC 18F452
Arquitectura RISC (Reduced Instruction Set Computer).
– Juego de instrucciones reducido para ejecución rápida.
– Oscilador hasta 40 MHz ?? 10 MIPs (Million Instructions Per second).
– Optimizado para compilación desde lenguaje C.
Código compatible con la familia 16 y 17 de los PIC
Reloj que puede por trabajar encima de10 MIPs.
Cristales de 4 Mhz a 10 Mhz utilizando un multiplicador de frecuencia PLL.
Instrucciones de 16 bits con bus de datos de 8 bits.
Prioridad de interrupciones
Multiplicador hardware de 8 x 8 que funciona en un solo ciclo de máquina.
Tres pines para manejo de interrupciones externas.
Manejo de corriente niveles de de 25 mA. en modo fuente y sumidero
Timer 1 de 16 bits, Timer 2 de 8 bits.
Timer 3, (no lo posee la gama media), de 16 bits (65535 conteos).
Dos módulos de Captura/Comparación/PWM.
Modulo de comunicación serial con soporte para RS-485 y RS-232
Oscilador modo XT
En este proyecto se utiliza el oscilador en modo XT como se muestra a continuación:
Una capacitancia elevada, incrementa la estabilidad del oscilador, pero también incrementa tiempos de inicio del oscilador los interno.
FUENTES DE RESET
EL PIC18F452 Posee los siguientes Fuentes de Reset:
Power-on Reset (POR)
MCLR Reset Durante el funcionamiento normal
MCLR Reset Durante el modo SLEEP
WDT Reset durante operación normal
Programmable Brown-out Reset (BOR)
Instrucción de RESET.
Reset debido al llenado del Stack.
Reset debido al vaciado del Stack.
Organización de la memoria
PIC18F452 posee 32 K Bytes de memoria FLASH de programa, agrupados de a 2 MBytes, con el fin de contener instrucciones complejas.
Por lo tanto este dispositivo puede almacenar 16mil instrucciones simples.
El vector de RESET se halla en la dirección 0000h y el de interrupciones en las posiciones 0008h y 0018h.
Puertos
Los puertos de los PIC 18f452 en general constan de 3 registros para su operación.
El registro TRIS, el cual controla la dirección de funcionamiento del puerto.
El registro PORT que lee los niveles de entrada en el puerto.
El registro LAT cual es el LATCH salida del puerto.
INTERRUPCIONES
Los microcontroladores de gama alta poseen niveles de interrupción.
El vector de alto nivel de interrupciones se halla en la posición 0x08h y el de baja prioridad en la posición 0x18h.
Una interrupción de alta prioridad, interrumpe la ejecución de una de baja prioridad.
MEMORIA EEPROM DE DATOS
La memoria EEPROM, no puede ser direccionada normalmente, para acceder a ella se hace a través de unos registros especiales
EECON1 (Registro de configuración)
EECON2 (Registro de configuración)
EEDATA (Registro de transferencia de datos)
EEADR (Registro de direccionamiento)
MODULO DE COMUNICACIÓN SERIAL USART
El módulo de comunicación serial puede ser configurado de la siguiente manera:
Sistema asíncrono full duplex.
Sistema sincrónico half-duplex (Maestro).
Sistema sincrónico half-duplex (Esclavo).
El módulo USART cuenta con dos registros de configuración.
El registro de control de transmisión TXSTA.
El registro de control de recepción RCSTA.
DIAGRAMA DE BLOQUES PIC18F452
Comunicación serie PC-PIC18F452
Para establecer una conexión directa entre el PC y el PIC, se tiene utilizar un max232 para adaptar los niveles de tensión entre el puerto serie del PC y el puerto serie del PIC. Dado que el PC maneja voltajes de 8 a -8v, por lo tanto no se puede conectar directamente a un PIC que maneja voltajes mas bajos.
El circuito básico para modulo conversor es el siguiente:
CIRCUITO BASICO DE PIC18F452, SENSORES Y PUERTO SERIAL
SEÑALES DE ENTRADA Y SALIDA DE PIC18F452
La siguiente tabla describe las señales de entrada y salida del PIC:
PIN | TIPO | NOMBRE | DESCRIPCION | ||||||
RB0 | ENT | ENTRADA 6 | Botón de Activar Alarma | ||||||
RB1 | ENT | ENTRADA 5 | Botón de Apagar Alarma | ||||||
RB2 | ENT | ENTRADA 4 | Sensor puerta Piloto | ||||||
RB3 | SAL | SALIDA 2 | Control de Encendido | ||||||
RB4 | SAL | SALIDA 1 | Activador de sirena y Bloque del auto | ||||||
RB5 | ENT | ENTRADA 3 | Sensor de Movimiento | ||||||
RB6 | ENT | ENTRADA 2 | Sensor puerta | ||||||
RB7 | ENT | ENTRADA 1 | Sensor puerta |
Programa de prueba de transferencia de datos puerto serial PIC 18F452
#include
rom char mensaje[] = "nHolanEste programa hace eco de "
"toda la información recibidan";
// Cadena de caracteres guardada en memoria de programa
void enviaCaracter (char caracter)
// Envio de un carácter por consulta
{
while (! PIR1bits. TXIF); // Espera mientras no podamos enviar otro carácter
TXREG = caracter; // Suministra el carácter para serializarlo
}
char recibeCaracter (void)
// Recepción de un carácter por consulta
{
while (! PIR1bits. RCIF); // Espera mientras no se na recibido nada
PIR1bits. RCIF = 0; // Este flag hay que ponerlo a cero en el programa
return RCREG; // Devuelve el carácter recibido
}
void inicializaCanalConsulta ()
// Inicializa el canal serie para recepción/transmisión por consulta
{
TRISCbits. TRISC6 = 0; // Línea de transmisión en RC6 como salida
TRISCbits. TRISC7 = 1; // Línea de recepción en RC7 como entrada
SPBRG = 25; // Con un reloj de 4 MHz fija una velocidad de 9600 baud
TXSTA = 0x24; // 8 bits y sin paridad, habilita transmisor
RCSTA = 0x90; // Habilita receptor
}
void enviaCadenaROM (rom char * cadena)
// Envía por el canal serie una cadena de caracteres almacenada en ROM
{
rom char * p;
p = cadena; // Apunta al primer carácter
while (* p) // Mientras no se haya llegado al final de la cadena …
{
enviaCaracter (* p); // Envía un carácter
p ++; // Para enviar luego el siguiente
}
}
void main (void)
{
char caracter;
inicializaCanalConsulta (); // Inicializa los parámetros del canal
//enviaCadenaROM (mensaje); // Envía ese mensaje
while (1) // Repite contínuamente …
{
}
}
COMANDOS AT PARA ENVIO DE MENSAJES
At+CPIN="0000"
Ok
At+CMGF= 1 // habiloita modo texto para mensajes
Ok
At+CLIP=1 // habilita el identificador de llamadas
Ok
At+CRC=1 // habilita llamada entrante RING ( aviso por pantalla )
Ok
At+CPAS // verificar errores
+CPAS:0 // indica que no hay errores
At+CREG?
+CREG: 0.10 // 0,3 0,4 o 0,5 indica fuera de cobertura
At+CNMI?
+CNMI: 3,0,0,0,0
At+CMGS="3112261857" // envio de mensaje al numero de celular 3112261857
? Insertar el mensaje aca ,,,, para terminar
+CMGS: 56 // esto lo envia el modulo para indicar que se ha enviado
at+cnmi=3,2,2,2,0
OK
+CMT: "3112261857",,"05/11/09,17:55:16+96",177,4,0,0,"+573103150030",145,15
3112261857:Test
at*ecam=1 // envios de estatus y saber qe contestaron el abonado B
CIRCUITO BASE MODEM GSM GR64
CIRCUITO BASE MODEM GSM GR64
Referencias
www.microchip.com/stellent/idcplgidcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en010296
www.datasheetcatalog.net/es/datasheets_pdf/P/I/C/1/PIC18F452-I_PT
www.datasheetcatalog.net/es/datasheets_pdf/P/I/C/1/PIC18F452-I_PT
www.neoteo.com/tag/pic+18f452+tutorial.neo
www.ing.puc.cl/~mtorrest/downloads/pic/
www.bricogeek.com/index/nid/957/
www.chilebot.cl/tutoriales/robot-basico.php
classes.engr.oregonstate.edu/eecs/fall2006/ece441/groups/g24/documents/reference/Protel%20DXP%20Tutorial.pdf
www.scribd.com/doc/47281/picmicro-interrupt
www.embeddedrelated.com/groups/piclist/show/6332.php
www.sunrom.com/c-149.html
www.microchip.com/
www.abcdatos.com/tutoriales/tutorial/l6112.html
www.frino.com.ar/mplab.htm
http://ww1.microchip.com/downloads/en/DeviceDoc/39564c.pdf
Autor¨
Pablo Turmero