Descargar

Módulo Micro Pic18f452

Enviado por Pablo Turmero


  1. Características generales PIC 18F452
  2. Oscilador modo XT
  3. Organización de la memoria
  4. Puertos
  5. Comunicación serie PC-PIC18F452
  6. Programa de prueba de transferencia de datos puerto serial PIC 18F452
  7. 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

edu.red

Oscilador modo XT

En este proyecto se utiliza el oscilador en modo XT como se muestra a continuación:

edu.red

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.

edu.red

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.

edu.red

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

edu.red

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:

edu.red

CIRCUITO BASICO DE PIC18F452, SENSORES Y PUERTO SERIAL

edu.red

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

edu.red

CIRCUITO BASE MODEM GSM GR64

edu.red

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