1 Escuela Politécnica Superior Universidad Autónoma de Madrid Juan González PIC 16F87X Curso de microcontroladores PIC. Semana del 25-29 Mayo 2009. Andrés.

Slides:



Advertisements
Presentaciones similares
Tema #10. FICHEROS.
Advertisements

Procesador El sistema computador se centra en un procesador Aparece la Entrada /Salida Pero un procesador es una piedra si no se comunica con el exterior.
FICHEROS.
Programación, Algoritmos y Estructuras de Datos
INFORMATICA I Arreglos 2 CLASE 18.
INFORMATICA I Funciones CLASE 13.
Tablas y Cadenas CONTENIDO Tablas
Ejercicios de Arreglos y Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Archivos Programación.
Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
INTERRUPCIONES Y TEMPORIZADORES Programación en C para electrónica.
Archivos Binarios Lenguaje C Prof. Gonzalo Pastor.
Archivos.
* Pepe Sagitrón Jornadas MMIV / 4-FLASH / 1 © 2002 Microchip Technology Incorporated. All Rights Reserved. de 24.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Módulo LCD Controlador HD44780.
Sistemas de E/S, Programada por Interrupciones su Gestión
Clase 14: Memoria EEPROM.
Teoría de Sistemas Operativos Sistema de I/O. 2 Introducción Una de las funciones principales del sistema operativo es el control de todos los dispositivos.
Estructuras Una estructura es una colección de datos de diferente tipo. Se construye en dos pasos: 1- Creación del esqueleto de la estructura 2.- Colocación.
LENGUAJE “C” Programación.
Ejemplos: float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; int N[] = {1, 2, 3, 6}; int M[][3] = {
PICmicro GAMA MEDIA: PIC16F84 [I]
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Javier Mauricio Galvis Moreno
Programación de microcontroladores PIC16f877a en linux
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
Introducción al cálculo lambda Programación lógica funcional.
FUNDAMENTOS DE MICROCONTROLADORES PIC 16F887 EXPONENTES: NOLBERTO LUNA GARCÍA JOSÉ GUADALUPE GARCÍA MACHADO.
1 Escuela Politécnica Superior Universidad Autónoma de Madrid Juan González PIC 16F87X Curso de microcontroladores PIC. Semana del Mayo Andrés.
1 Escuela Politécnica Superior Universidad Autónoma de Madrid Juan González PIC 16F87X Curso de microcontroladores PIC. Semana del Mayo Andrés.
1 Escuela Politécnica Superior Universidad Autónoma de Madrid Juan González PIC 16F87X Curso de microcontroladores PIC. Semana del Mayo Andrés.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
Programación utilizando operadores a nivel de bits Unidad III – Conceptos Avanzados de Programación Programación I
PIC 16F87X Agradecimientos: Jesús Ernesto Zavala Ana Cecilia Ruiz
PIC 16F87X Agradecimientos: Jesús Ernesto Zavala Ana Cecilia Ruiz
Control, adquisición y monitoreo con Arduino y Visual Basic .net
PIC 16F87X Agradecimientos: Jesús Ernesto Zavala Ana Cecilia Ruiz
Programación en C - manejo de Archivos
SISTEMAS DE AUTOMATIZACIÓN Y CONTROL ORIENTADO AL CONOCIMIENTO Y APLICACIÓN DE LOS SISTEMAS EMBEBIDOS SESION 04 José Luis Albites Sanabria MSc. Biomedical.
Programación de PLCs: conversión normalizada y control del programa
Programación en C - manejo de Archivos
El procesador Diseño del control.
PROYECTO CON EL MICROCONTROLADOR PIC 16F84A
TIPOS DE DATOS Cadenas y caracteres PARCIAL III.
Datapath para las instrucciones de carga y almacenamiento (load/store)
UNIVERSIDAD AUTONOMA METROPOLITANA Programación Estructurada
Arquitectura 2013 Explicación 3 - continuación.
Explicación 3 Periféricos.
Manejador de interrupción (subrutina)
Entrada Salida Rina Arauz.
MC Beatriz Beltrán Martínez Primavera 2016
PICOBLAZE RESUMEN.
Explicación 2 Interrupciones.
PANTALLA LCD.
Organización de la memoria
INNOVACION TECNOLOGICA ELECTRONICA ESTUDIANTIL EN CIENCIAS
* Rango de entrada * Numero de bits. * Resolución.
Memoria flash y su uso en el microcontrolador MSP430F149
Empecemos por el principio
30/11/
MC Beatriz Beltrán Martínez Otoño 2017
SENTENCIAS CONTROL DE FLUJO EN C I.E. Mario Jiménez.
El procesador Datapath y control.
Control De Interrupción En El Sistema Operativo Alumno: Juan Gómez v Ángel Dávila v-xxxxxxxx Profesor República Bolivariana de Venezuela Ministerio.
EUPs que imprima la tabla de multiplicar de 2 al 10
ARQUITECTURA DE UN MICROPROCESADOR. ESTRUCTURA BÁSICA DE UN SISTEMA MICROPROGRAMABLE A. Hardware CPU (chip microprocesador): es un circuito integrado.
Transcripción de la presentación:

1 Escuela Politécnica Superior Universidad Autónoma de Madrid Juan González PIC 16F87X Curso de microcontroladores PIC. Semana del Mayo Andrés Prieto-Moreno Ricardo Gómez Flir Networked Systems

2 PIC 16F87X MÓDULO 7: Memoria EEPROM

3 Memoria EEPROM

4 Introducción ● Memoria EEPROM de 256 bytes ● No está mapeada directamente en el espacio de memoria ● El acceso es indirecto, a través de unos registros especiales ● Interrupción para indicar el final de una escritura

5 Registros (I)

6 Registros (II)

7 Escritura en la eeprom Para escribir en la eeprom hay que realizar las siguientes operaciones ● Establecer la dirección donde escribir (registro EEADR); ● Establecer el dato (registro EEDATA) ● Configurar acceso a la EEPROM (Bit EEPGD a cero) ● Habilitar la escritura (activar WREN) ● Escribir el valor 0x55 en registro EECON2 ● Escribir el valor 0xAA en el registro EECON2 ● Comenzar la escritura activando el bit WR ● Cuando la escritura finaliza se activa el flag EEIF

8 Escritura en la eeprom: Ejemplo #include void eeprom_write(unsigned char dir, unsigned char dato) { EEADR=dir; EEDATA=dato; EEPGD=0; WREN=1; EECON2=0x55; EECON2=0xAA; WR=1; while (EEIF==0); EEIF=0; } void main(void) { TRISB1=0; eeprom_write(0, 0x55); RB1=1; while(1); } Establecer dirección Función para escribir un dato en la eeprom en la dirección indicada Establecer dato Selecionar la memoria EEPROM Habilitar la escritura Escribir los valores en EECON2 Comenzar la escritura Esperar a que la escritura termine Limpiar flag de la eeprom Configurar led Escribir el valor 0x55 en la dirección 0 de la EEPROM Encender led para indicar fin de la escritura eeprom-write-byte.c

9 Lectura de la eeprom Para leer de la eeprom hay que realizar las siguientes operaciones: ● Establecer la dirección de donde leer (registro EEADR); ● Configurar acceso a la EEPROM (Bit EEPGD a cero) ● Comenzar la lectura activando el bit RD ● En el siguiente ciclo ya está disponible el dato en el registro EEDATA

10 Lectura de la eeprom: Ejemplo #include unsigned char eeprom_read(unsigned char dir) { EEADR=dir; EEPGD=0; RD=1; return EEDATA; } void main(void) { TRISB=0; PORTB=eeprom_read(0x00); while(1); } Función para leer un dato de la dirección de la EEPROM indicada eeprom-read-byte.c Establecer dirección Establecer dato Selecionar la memoria EEPROM Devolver el dato leído Configurar puerto B para salida Leer el dato que está en la dirección 0 de la EEPROM y sacarlo por los leds

11 Ejemplo: Escribir una tira de bytes #include unsigned char tabla[]={'H','O','L','A','!'}; unsigned char size = sizeof(tabla)/sizeof(unsigned char); void main(void) { unsigned int i; TRISB1=0; for (i=0; i<size; i++) { eeprom_write(i, tabla[i]); } for (i=size; i<255; i++) { eeprom_write(i,'.'); } RB1=1; while(1); } eeprom-write.c Tabla con los bytes a escribir en la eeprom Tamaño de la tabla Recorrer la tabla escribiendo los bytes en la eeprom, comenzando por la dirección 0 Usamos la función empleada en el ejemplo de escritura Rellenar el resto de la memoria con el carácter. Encender el led para indicar que la operación ha terminado

12 Ejemplo: Volcado de la eeprom #include #include "sci.h" void main(void) { unsigned char i; unsigned char valor; sci_conf(); TRISB=0; for (i=0; i<255; i++) { valor=eeprom_read(i); PORTB=valor; sci_write(valor); } while(1); } eeprom-dump-sci.c Configurar puerto serie Configurar puerto B para salida Recorrer toda la eeprom Leer la posición i Sacarla por los leds Enviarla por el puerto serie Recorrer la memoria eeprom enviando todos los bytes por el puerto serie

13 Interrupciones

14 Interrupciones: Ejemplo #include unsigned char tabla[]={'P','O','D','E','M','O', 'S','!','!'}; unsigned char size = sizeof(tabla)/sizeof(unsigned char); unsigned char i=0; void isr() interrupt 0 { EEIF=0; i++; if (i==size) { RB1=1; return; } EEADR=i; EEDATA=tabla[i]; EEPGD=0; WREN=1; EECON2=0x55; EECON2=0xAA; WR=1; } eeprom-write-int.c (parte I) Tabla con los bytes a escribir en la EEPROM Tamaño de la tabla Limpiar flag de interrucion Incrementar indice del dato a escribir Si es el último dato encender el led y terminar Establecer direccion Establecer el dato a grabar en la eeprom Realizar la grabacion. Cuando finalice se volverá a llamar a la rutina de atención a la interrupción

15 Interrupciones: Ejemplo (II) void main(void) { TRISB1=0; EEIF=0; EEIE=1; PEIE=1; GIE=1; EEADR=0; EEDATA=tabla[0]; EEPGD=0; WREN=1; EECON2=0x55; EECON2=0xAA; WR=1; while(1); } eeprom-write-int.c (parte II) Configurar led para salida Limpiar flag de la eeprom Activar las interrupciones Seguir el protocolo para grabar el primer dato de la table en la dirección 0. El resto de bytes se graban mediante interrupciones Este ejemplo escribe una cadena en la eeprom, mediante interrupciones

16 Ejercicio: ● Escribir en el LCD la cadena que esté grabada a partir de la dirección 0 de la EEPROM