Sie sind auf Seite 1von 25

lica Universidad Cato ora de la Asuncio n Nuestra Sen n Sede Regional Asuncio Facultad de Ciencias y Tecnolog a

Departamento de Ingenier a nica e Informa tica Electro nica Carrera de Ingenier a Electro

Microprocesadores I
lez PhD. Ing. Vicente Gonza

G omez, Alberto <delafuente986@gmail.com> Ram rez, Pedro <pedroramirez22@gmail.com>

Matriz de leds 1 0 c
2 de diciembre de 2011

ii

Indice general
1. Dise no del tablero de leds 1.1. Dise no del Hardware . . . . 1.2. Dise no L ogico . . . . . . . . 1.3. Funcionamiento de la matriz 1.4. Software controlador . . . . 1 1 1 3 4 7 7 7 7 10 11 13 13 13 14 14

. . . . . . . . . . . . de LEDs . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2. Manejo del Puerto Serie 2.1. Introducci on . . . . . . . . . . 2.2. Puerto serie y Linux . . . . . 2.2.1. Descripci on . . . . . . . 2.2.2. Explicaci on . . . . . . . 2.3. Codicaci on de la informaci on

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3. Manejo de la memoria EEPROM 3.1. Introducci on . . . . . . . . . . . 3.2. Programaci on de la EEPROM . 3.2.1. Lectura . . . . . . . . . . 3.3. Implementaci on . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

iii

iv

INDICE GENERAL

Indice de guras
1.1. Diagrama l ogico del registro de desplazamiento . . . . . . . . . . 1.2. Esquem atico del matriz de leds dise nado . . . . . . . . . . . . . . 2 3

vi

INDICE DE FIGURAS

Indice de cuadros
2.1. Dispositivos del puerto serie en Linux . . . . . . . . . . . . . . . 2.2. Matriz de un bloque de dibujo con valores binarios . . . . . . . . 3.1. Tiempos de programaci on de la memoria EEPROM . . . . . . . 7 11 14

vii

viii

INDICE DE CUADROS

Introducci on
El siguiente trabajo se trata sobre el desarrollo de una matriz de leds, m as conocido como Tablero Electr onico o Publik, existen varios m odulos del cual consta, primeramente el dise no del hardware, el cual b asicamente consiste en una matriz de p xeles similar a los de la pantalla de un ordenador, luego de esto se dise na el software que podr a manejar la matriz desde un ordenador, se ha desarrollado en GTK+, adem as se utiliza el puerto RS232 para la comunicaci on con el dispositivo microcontrolador utilizado el cual es el HCS12 de Motorola. Cabe destacar que el desarrollo del entorno gr aco y por ende el manejo del puerto serial con este se ha hecho en Linux por la simplicidad que presenta, ya que se maneja al puerto como un simple archivo, adem as GTK+ presenta varias funciones que ayudan a la portabilidad del software desarrollado.

ix

INDICE DE CUADROS

1
1.1 1.2

Dise no del tablero de leds

Dise no del Hardware

El hardware que se quiere construir es un cartel luminoso. Para el dise no inicial se utilizo una matriz de tal manera que se tendr a el control sobre 112 leds. El montaje nal queda por tanto con 16 columnas y 7 las. El control de los leds es multiplexado, de forma que cada elemento de la matriz(1 led) se controla por un comando de las y columnas.

Dise no L ogico

Teniendo en cuenta las restricciones anteriores se comienza el dise no l ogico del circuito de control. En primer lugar se debe escoger la forma en que se va a realizar el control sobre las matrices, teniendo en cuenta que se va a crear un display lineal. Lo ideal ser a poder controlar individualmente cada uno de los 112 leds, pero para ello ser an necesarias 23 se nales de control, una por cada columna (16) y uno por cada la (7). El n umero es excesivo(m as a un si se desease expandir la cantidad de columnas), as que se tendr a que plantear otro esquema de control. Se plantearon dos soluciones, codicar las columnas o las las, de forma que en un momento dado s olo por una columna o por una la pudiera pasar corriente, permitiendo as el control individual de los leds de la la o columna por la que pasar a corriente. Otro esquema est a en el multiplexado, esta t ecnica permite utilizar unos pocos pines de E/S del microcontrolador para manejar una serie de circuitos integrados que se encarguen de excitar los LEDs. Hay varias maneras, y muchos modelos diferentes de circuitos para hacer esto. Pueden usarse un tipo de integrado digital llamado LATCH. De esta manera, usando varios latches podr amos encender los LEDs por turnos, r apidamente para que no se note el parpadeo, y de esa manera formar una palabra en el cartel. Otra forma es utilizar un registro de desplazamiento. Y de hecho, es de esta forma c omo vamos a dise nar nuestro cartel. En un registro de desplazamiento tenemos 0 y 1, lo bueno es que para meter datos (0s y 1s) en el solo hacen falta tres pines del microcontrolador, independientemente de lo largo que sea. Estos pines se encargan de tres tareas: Uno de ellos, al que denominaremos 1

DEL TABLERO DE LEDS CAP ITULO 1. DISENO

DATOS es el encargado de decirle al registro de desplazamiento que lo que introduciremos es un 0 o un 1. El segundo se encarga de avisar al registro que el dato ya est a listo para ser ingresado, y lo llamaremos CLOCK. Y el ultimo, que no es indispensable, es el RESET, que se encarga de vaciar la la escribiendo 0s en todas las salidas del registro. Para desarrollar nuestro ejemplo utilizaremos el circuito integrado 74HC164N, que es un registro de desplazamiento de 8 bits. Para construir un cartel de 16 columnas, necesitar amos utilizar 2 de estos integrados, uno a continuaci on del otro. En la gura podemos ver la funci on de cada uno de los pines del 74HC164N y en la gura el dise no hacho y de que forma podemos conectar uno a continuaci on del otro para obtener un registro de desplazamiento de SN74LS164 cualquier longitud.
LOGIC DIAGRAM
1 2

A D B CD CD CD CD CD CD CD CD CP MR VCC = PIN 14 GND = PIN 7 = PIN NUMBERS Q0


3

Q1
4

Q2
5

Q3
6

Q4
10

Q5
11

Q6
12

Q7
13

FUNCTIONAL DESCRIPTION

Figura 1.1: Diagrama l ogico del registro de desplazamiento

Each LOW-to-HIGH transition on the Clock (CP) input The LS164 is an edge-triggered 8-bit shift register with shifts data one place to the right and enters into Q0 the logical serial data entry and an output from each of the eight stages. Bien, con el esquema los LEDs que queramos Data is entered serially through one of explicado two inputs (A orpodemos B); ANDencender of the two data inputs (AB) that existed before the either of these used as an active HIGH Enable rising clock de edge.desplazamiento A LOW level on the Master Reset (MR) de una lainputs de can 16be bits de largo. Si en el registro introducifor data entry through the other input. An unused input must input overrides all other inputs and clears the register mos 1111 .. 111, los 16 LEDs an encendidos. Si queremos uno be tied HIGH,.or both inputs connected together. estar asynchronously, forcing all Q outputsencender LOW.

por medio, escribiremos 10101. . .01. cuando lleguemos a la parte de la programaci on veremos c omo se MODE ingresan uno a uno los 0 y 1 en el registro. SELECT TRUTH TABLE Adem as se aprovecha un defecto del ojo humano, que mantiene la imagen INPUTS OUTPUTS OPERATING MODE MR A para B dibujar Q0 Q1Q7 una la a la vez, pero vista durante unos 20 o 30 milisegundos, Reset (Clear) L X parezca L L estar L muy r apidamente, de forma que todo el Xcartel encendido a la vez.
Shift H H H H I I h h I h I h L L L H q0 q6 q0 q6 q0 q6 q0 q6

L (l) = LOW Voltage Levels H (h) = HIGH Voltage Levels X = Dont Care qn = Lower case letters indicate the state of the referenced input or output one qn = set-up time prior to the LOW to HIGH clock transition.

http://onsemi.com
126

3
5 4 3 2 1

MATRIZ DE LED'S DE 7*16


ENTRADA SERIAL J2 CON3 DATA CLOCK RESET
D

1 2 3

ALIMENTACION

QA QB QC A QD QE B QF QG CLK QH

VCC J3 2 1 CON2

U1 74HC164

CLR

QA QB QC A QD QE B QF QG CLK QH R8 2.2k 3 4 5 6 10 11 12 13 R9 2.2k

CLR

9 74HC164 U2

VCC GND
0

R1 2.2k

R2 2.2k

R3 2.2k

R4 2.2k

R5 2.2k

R6 2.2k

3 4 5 6 10 11 12 13 R7 2.2k

R10 2.2k

R11 2.2k

R12 2.2k

R13 2.2k

R14 0 2.2k Q2N2222

R15 0 2.2k Q2N2222

R16 0 2.2k Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222

Q2N2222 Q14 Q15 D15 D16 Q16

D1 VCC R24 220 R17 D17 2.2k VCC R25 220 R18 2.2k VCC R26 Q18 Q2N2222 Q17 Q2N2222

Q1

D2

Q2

D3

Q3

D4

Q4

D5

Q5

D6

Q6

D7

Q7

D8

Q8

D9

Q9

D10

Q10

D11

Q11

D12

Q12

D13

Q13

D14

LED

LED D18

LED D19

LED D20

LED D21

LED D22

LED D23

LED D24

LED D25

LED D26

LED D27

LED D28

LED D29

LED D30

LED D31

LED D32

LED D33

LED D34

LED D35

LED D36

LED D37

LED D38

LED D39

LED D40

LED D41

LED D42

LED D43

LED D44

LED D45

LED D46

LED D47

LED D48

SELECTOR FILAS

220 R19 2.2k VCC R27 7 6 5 4 3 2 1 220 R20 2.2k VCC R28 220 R21

Q19 Q2N2222

LED D49

LED D50

LED D51

LED D52

LED D53

LED D54

LED D55

LED D56

LED D57

LED D58

LED D59

LED D60

LED D61

LED D62

LED D63

LED D64

J1

Q20 Q2N2222

LED D65

LED D66

LED D67

LED D68

LED D69

LED D70

LED D71

LED D72

LED D73

LED D74

LED D75

LED D76

LED D77

LED D78

LED D79

LED D80

CON7

Q21 Q2N2222

LED D81

LED D82

LED D83

LED D84

LED D85

LED D86

LED D87

LED D88

LED D89

LED D90

LED D91

LED D92

LED D93

LED D94

LED D95

LED D96

2.2k VCC R29 220 R22 Q22 Q2N2222

LED D97

LED D98

LED D99

LED D100

LED D101

LED D102

LED D103

LED D104

LED D105

LED D106

LED D107

LED D108

LED D109

LED D110

LED D111

LED D112
B

2.2k VCC R30 220 R23 2.2k Q23 Q2N2222

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

Figura 1.2: Esquem atico del matriz de leds dise nado

1.3
5

Funcionamiento de la matriz de LEDs


4 3 2 1

Como dijimos antes, la pantalla est a formada por una serie de las y columnas. La intersecci on entre ambas contiene un LED. Para que este encienda, tiene que recibir simult aneamente un 1 en la la, y un 1 en la columna. Cuando se dan estas condiciones, la electr onica de la placa se encarga del encendido del LED en cuesti on. La forma de generar un mensaje sobre el display es relativamente sencilla, si nos atenemos al siguiente algoritmo: 1. Apagar todas las las. 2. Escribir los valores correspondientes a la primer la en el registro de desplazamiento, teniendo en cuenta que el primer digito binario colocado corresponde al primer LED de la la, y el ultimo en poner al de la u ltima columna. 3. Encenderla primer la, esperar un tiempo, y volver a apagarla. 4. Repetir los pasos 2 y 3 para las las restantes. El tiempo de la demora debe ser tal que permita una visualizaci on correcta, sin molestos parpadeos y con los LEDS brillantes. Ssi utilizamos tiempos

DEL TABLERO DE LEDS CAP ITULO 1. DISENO

mayores para el encendido de cada la, el brillo de los LEDS ser a mayor, pero tambi en aumentar a el parpadeo. Un punto tenido en cuenta es la intensidad del brillo que puede proporcionarnos el tipo de LED que utilizamos. En caso de un t pico cartel de 7 las como el dise nado, a pesar de que las veremos encendidas al mismo tiempo, cada LED solo estar a encendido la s eptima parte del tiempo, por lo que su brillo ser a siete veces inferior al normal, y nuestro cartel apenas ser a visible.

1.4

Software controlador

Ahora nos toca abordar la programaci on del hardware propuesto. El cartel del LEDs que estamos construyendo puede adoptar diferentes tama nos de acuerdo a las especicaciones del trabajo. Debemos pensar en un programa que nos permita mostrar p xeles individuales representados sobre la pantalla de nuestro cartel. Sigamos con el ejemplo del cartel de 16 columnas y 7 las de altura, recordando que todo lo que expliquemos puede ser adecuado para carteles de otro tama no. Lo primero que necesitamos saber es que el barrido del cartel debe hacerse por las. Es decir, mostraremos el contenido de la primera la, esperamos un tiempo determinado (unos pocos milisegundos), mostramos el de la segunda la, esperamos nuevamente, y as hasta llegar a la u ltima la, tal como se expresa en el algoritmo visto mas arriba. El motivo de no emplear las columnas para realizar el barrido es que como son m as numerosas, el tiempo total que se necesita para escribir por las es mucho menor que el necesario para escribir por columnas, y en la pr actica eso signica que el brillo de nuestro cartel ser a mucho mayor si lo hacemos por las, ya que cada LED permanecer a encendido 1/7 del tiempo. Si lo hici esemos por columnas, cada LED estar a encendido solo 1/16 del tiempo, por lo que su brillo seria unas 2 veces menor. Ahora bien, el primer problema a resolver es C omo escribo los datos de una la del cartel? Esto tiene una soluci on m as que simple: solo debemos introducir en el registro de desplazamiento los 0 y 1 necesarios para que los LEDs que queremos est en encendidos en esa la tengan +V en sus anodos. Por supuesto, mientras hacemos esto todos los pines del microcontrolador que controlan las las deber an estar apagadas, para que no se perciba una d ebil luminosidad en todos los LEDs de la la que estamos escribiendo a medida que pasan los datos a trav es del registro. El primer valor que se debe meter en el registro de desplazamiento es el que corresponder a a la u ltima columna. A medida que vamos ingresando los siguientes, se van desplazando hacia el nal del cartel. Cuando hayamos introducido el valor n umero 80 (que corresponder a a la primera columna) el primer valor que metimos habr a llegado a su posici on. En ese momento tenemos todo el registro escrito, y ya podemos activar la sal-

5 ida del microcontrolador(pin) que corresponde a esa la en particular. El tiempo que debe estar encendida la la se puede determinar emp ricamente, pero por lo generan unos 10 milisegundos es suciente. Si tenemos 7 las, 10 milisegundos de demora permitir an escribir todo el cartel en unos 70 milisegundos.

DEL TABLERO DE LEDS CAP ITULO 1. DISENO

2
2.1 2.2

Manejo del Puerto Serie

Introducci on

Este es un breve tutorial sobre c omo manejar el puerto serie desde Linux sacado de la siguiente p agina WEB. Esto se utiliza para comunicarse con microcontroladores externos como es el caso de nuestro trabajo.

Puerto serie y Linux

Los nombres que se dan en Linux a los dispositivos serie son: Nombre del dispositivo /dev/ttyS0 /dev/ttyS1 /dev/ttySnn Descripci on Primer puerto serie nativo. (Equivalente a COM1) Segundo puerto serie nativo. (Equivalente a COM2) n- esimo puerto serie nativo

Cuadro 2.1: Dispositivos del puerto serie en Linux La forma de acceder al puerto serie es la misma que para trabajar con cualquier otro chero. Se usan las llamadas read() y write() para leer y escribir respectivamente. Pero a diferencia de los archivos normales, antes de usar el puerto serie es necesario congurarlo, estableciendo la velocidad de trabajo y su modo de funcionamiento.

2.2.1.

Descripci on

Se congura el modo de funcionamiento serie a 8N1(8 bits de datos, 1 bit de stop y sin paridad). La velocidad es la indicada por el usuario en el par ametro baud, es una constante que puede valer: B9600, B19200, etc. Se puede encontrar m as informaci on sobre todos los valores posibles en la p agina de manual de termios (man termios).

CAP ITULO 2. MANEJO DEL PUERTO SERIE

Esta funci on devuelve el descriptor del puerto serie (0 -1 si ha ocurrido un error), que ser a necesario para realizar las lecturas y escrituras. int serial_open(char *serial_name, speed_t baud) { struct termios newtermios; int fd; fd = open(serial_name,O_RDWR | O_NOCTTY); newtermios.c_cflag= CBAUD | CS8 | CLOCAL | CREAD; newtermios.c_iflag=IGNPAR; newtermios.c_oflag=0; newtermios.c_lflag=0; newtermios.c_cc[VMIN]=1; newtermios.c_cc[VTIME]=0; cfsetospeed(&newtermios,baud); cfsetispeed(&newtermios,baud); if (tcflush(fd,TCIFLUSH)==-1) return -1; if (tcflush(fd,TCOFLUSH)==-1) return -1; if (tcsetattr(fd,TCSANOW,&newtermios)==-1) return -1; return fd; } a una cadena de bytes por el puerto serie. Lo La funci on serial send() env u nico que hace es invocar la llamada al sistema write(). Como par ametros se pasa el descriptor serie del puerto serie (serial fd), devuelto por la funci on serial open(), el array con los datos a enviar (data) y su tama no (size). void serial_send(int serial_fd, char *data, int size) { write(serial_fd, data, size); } La funci on serial read() se usa para leer datos del puerto serie. Se le pasan como par ametros el descriptor del puerto serie (serial fd), el array donde almacenar los datos recibidos (data), el tama no m aximo de bytes a recibir (size, para no desbordar el array) y el tiempo m aximo para recibir los datos (timeout usec). Si transcurre un tiempo igual a timeout usec y no se han recibido datos, la funci on retornar a y devolver a el control a la que la invoc o. Para realizar las lecturas no bloqueantes, se usa la llamada al sistema select(). En este caso devuelve 1 si hay datos esperando a ser le dos y 0 si ha ocurrido un timeout. A continuaci on se invoca a read() para leer estos datos. El proceso se repite para garantizar que es posible recibir datos de tama no size. Se devuelve el n umero de bytes le dos ( 0 si ha ocurrido un timeout).

9 int serial_read(int serial_fd, char *data, int size, int timeout_usec) { fd_set fds; struct timeval timeout; int count=0; int ret; int n; do { FD_ZERO(&fds); FD_SET (serial_fd, &fds); timeout.tv_sec = 0; timeout.tv_usec = timeout_usec; ret=select (FD_SETSIZE,&fds, NULL, NULL,&timeout); if (ret==1) { n=read (serial_fd, &data[count], size-count); count+=n; data[count]=0; } } while (count<size && ret==1); return count; } La u ltima funci on es serial close(), que simplemente invoca a close() para cerrar el puerto serie. void serial_close(int fd) { close(fd); }

10

CAP ITULO 2. MANEJO DEL PUERTO SERIE

2.2.2.

Explicaci on

S olo se explicar an algunos fragmentos del c odigo. Primero se abre el puerto serie, a la velocidad de 9600 baudios invocando la funci on serial open(). Se pasa como argumento el nombre del dispositivo serie obtenido de la l nea de comandos. Se indica si ha ocurrido un error al abrirlo (por ejemplo si se especica un dispositivo serie incorrecto): serial_fd=serial_open(argv[1],B9600); if (serial_fd==-1) { printf ("Error opening the serial device: %s\n",argv[1]); perror("OPEN"); exit(0); } Luego se env a la cadena denida en la constante CMD y se espera recibir la misma serial_send(serial_fd, CMD, CMD_LEN); printf ("String sent------> %s\n",CMD); n=serial_read(serial_fd,data,CMD_LEN,TIMEOUT); La variable n contiene el n umero de bytes recibidos. Si n es 0 es porque habr a ocurrido un timeout. En caso contrario se imprimen en pantalla la cadena recibida. Por u ltimo se cierra el puerto serie: serial_close(serial_fd);

11

2.3

Codicaci on de la informaci on

En esta secci on se describe brevemente la forma de codicar cada caracter a ser enviado por el puerto serie, es decir los datos que van a ser desplegados luego en la matriz de LEDs, b asicamente cada caracter introducido por el usuario es transformado en una matriz de 7 las * 8 columnas, a esto se le llamamos un bloque de dibujo, en el cual cada la corresponde a un char (8 bits), si el valor introducido equivalente es visto desde el punto de vista de la numeraci on binaria los 1 corresponder an a los LEDs que ser an encendidos, y los 0 a los que estar an apagados, la matriz completa es enviada en forma serial de la primera a la septima la en forma secuencial ordenada, un ejemplo de ello para la letra a ser a: 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0

Cuadro 2.2: Matriz de un bloque de dibujo con valores binarios Ahora si todos los 1 son pintados para ver el efecto que ser a lo mismo en la matriz de LEDs, dando la ilusi on de una palabra, se pueden hacer innitas conguraciones de cuadro de dibujos, s olo basta un poco de imaginaci on. 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0

As , para enviar una cadena solo basta tener una funci on que transforme para cada caracter una codicaci on y ponerlo en el puerto serial para su transferencia al MCU, de esta manera se tiene una gran efectividad en el uso de la capacidad de memoria del microcontrolador, porque el algoritmo aqu s olo se dedica a colocar en memoria no vol atil el dato recibido para luego dedicarse exclusivamente a desplegar una secuencia de bits puros encendiendo o apagando los LEDs en sus correspondientes lugares(secuencia de 1 y 0), el cual fue codicado y tiene un signicado(palabras, emoticones, caracteres especiales, numeraci on, etc.), el cual en su conjunto da signicado a la secuencia.

12

CAP ITULO 2. MANEJO DEL PUERTO SERIE

3
3.1

Manejo de la memoria EEPROM

Introducci on

En el microcontrolador utilizado se encuentra un recurso interno bastante u til a la hora de buscar un sistema aut onomo barato y sencillo. La memoria EEPROM, con lo cual se ahorra la expansi on externa de memoria. Esto que suena tan bien tiene el inconveniente de la limitada capacidad de la EEPROM. Oscila entre 2kbytes y 128kbytes seg un el modelo, para nuestro caso tenemos a nuestra disposici on 32kbytes . La EEPROM es una memoria que mantiene los datos a un desconectando la alimentaci on del sistema (memoria no vol atil). Su ciclo de lectura es equivalente al de la ROM interna pero en escritura es m as lenta. Es como una EPROM con la salvedad de que se borra el ectricamente; de esta forma se facilita su uso.

3.2

Programaci on de la EEPROM

La programaci on de la EEPROM se realiza por medio del registro PPROG. Antes de ver las rutinas de control hay que estudiar el funcionamiento de la EEPROM, aunque s olo de manera supercial, lo m nimo para que se entiendan luego las rutinas de control. En una EEPROM el estado de un byte borrado o en su caso no programado tiene un valor de $FF, es decir sus bits a nivel alto. La programaci on permite pasar a 0 ( nivel bajo) los bits que est an a 1 (nivel alto), pero no al rev es, si se quiere poner un bit a uno (estando previamente a cero) hay que borrar todo el byte primero. Si por el contrario se quiere pasar de 1 a 0 no hace falta borrar todo el byte primero. En resumen, siempre que hay que grabar un 1 en una celda EEPROM que previamente estaba a 0 hay que borrarla primero. La programaci on requiere una sobrecarga de tensi on, aunque no hay que preocuparse de esto puesto que la proporciona el microcontrolador de forma transparente al usuario. Lo que si que hay que tener en cuenta es que la velocidad de programaci on es m as lenta que la velocidad de lectura, por lo tanto entre programaci on y programaci on hay que introducir unos retardos. Estos retardos son variables y dependen de la velocidad de reloj E. 13

14

CAP ITULO 3. MANEJO DE LA MEMORIA EEPROM

Cuanto menor sea el valor de E ( frecuencia de reloj ) la efectividad de la sobrecarga disminuye 1 . Por esa raz on el micro incorpora un peque no oscilador RC interno que puede generar los tiempos de programaci on necesarios independientemente del reloj externo (E). Motorola recomienda que cuando se trabaje con E < 1MHz activar el oscilador RC para programar la EEPROM. Para activar ese oscilador hay que actuar sobre el bit CSEL del registro OPTION2 . En la siguiente tabla se presenta un esquema sobre los tiempos de programaci on. E = 2M Hz 1M Hz < E < 2M Hz E < 1M Hz Tiempo de escritura / borrado de 10ms Tiempo de escritura / borrado entre (10ms 20ms) Activar oscilador interno y mantener tiempo de 20ms

Cuadro 3.1: Tiempos de programaci on de la memoria EEPROM

3.2.1.

Lectura

Para leer la EEPROM el bit EELAT del registro PPROG debe estar a cero. Cuando este bit est a a cero el resto de bits del registro dejan de tener signicado o efecto. La lectura de la EEPROM se realiza como la de una memoria ROM normal. Al realizar un RESET sobre el microcontrolador el estado de este bit es cero, la EEPROM queda congurada para lectura.

3.3

Implementaci on

Para la implementaci on se llevaron a cabo varias pruebas la mayor a sin exito alguno, en este proceso se ha encontrado una application note hecho por freescale para el uso en un hcs12, llevando a cabo algunas modicaciones, se pudo realizar este m odulo, el manual de ayuda se puede encontrar el siguiente LINK, donde explica detalladamente los registros a ser congurados y funciones que lo realizan; con lo le do anteriormente se puede entender c omo se hace el proceso de programaci on de la EEPROM.
1 La eciencia de la sobrecarga disminuye con el incremento de tiempo necesario para borrar y grabar la posici on de eeprom. 2 Cuando se activa el bit CSEL hay que esperar 10ms hasta que se estabilice el circuito. Una vez que haya pasado ese tiempo podemos realizar operaciones sobre la EEPROM.

15

(AlienSong.mp4)

Slow Normal Fast Play/Pause Stop

Das könnte Ihnen auch gefallen