Вы находитесь на странице: 1из 7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.

com Guayaquil Ecuador

PRACTICA #10 USO DE UNA MEMORIA EEPROM Y COMUNICACION UART-USB

OBJETIVOS Aprender a guardar datos en una memoria EEPROM por comunicacin I2C. Mostrar los datos y las direcciones mediante el protocolo de comunicacin UART en la PC.

DESCRIPCION:

El presente proyecto hace uso del S1, S2, FTPI y memoria EEPROM, por lo que vamos a tener tres estados posibles. 1. Al estar ambos botones sin presionar se realizara una operacin de LECTURA y se mostrara en la PC la direccin de la memoria y el dato que est leyendo. 2. Al presionar S1 se ejecuta la operacin BORRAR, en esta etapa se borraran todos los datos de cada direccin dejando los datos que vienen de fbrica. 3. Al presionar S2 se ejecuta la operacin ESCRIBIR, se escribir datos en cada direccin de la memoria EEPROM. Nota: El punto dos y tres puede tardar entre tres a cuatro minutos as que en el caso de ver demora no desesperar, para comprobar que se termin el proceso se puede verificar con los LED, ya que van a estar apagados

DESARROLLO:

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

1/7

Para realizar el prctica planteado es necesario ubicar algunos JUMPER de tal manera que permita el uso de los componentes necesarios para este prctica.

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

1. El mdulo Desarrollo PIC16F887 puede utilizar una de dos fuentes de alimentacin.

Fuente de alimentacin USB desde PC a travs del cable USB Fuente de alimentacin EXT desde un Jack DC.

2.

Para hacer uso de los pulsadores S1 y S2 tenemos que ubicar el JUMPER que esta alado de los botones en la posicin EN (Enable=Habilitado) para ambos pulsadores como se muestra en la figura.

3. Para realizar la comunicacin I2C es necesario dos resistencias pull-up conectadas a ambos buses de comunicacin, estas se habilitan ubicando ambos JUMPER en posicin EN como se muestra en la figura.

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

2/7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

4. INTERFAZ UART. Esta interfaz posee un selector UART el cual nos permite escoger el medio por el cual el PIC va a enviar datos seriales, ya sea a travs del puerto USB o modulo RF. En nuestro caso vamos a ubicar los JUMPERS en la posicin PIC-USB y RX-TX para hacer uso del USB.

5. Circuito Implementado

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

3/7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

PROGRAMACION:

'******************************************************************************* '******************* Ideas & Tecnologa ************************** '******************* Mdulo Desarrollo PIC16F887 I&T ************************** '******************* www.ideastechnology.com ************************** ' ' * Nombre proyecto: ' EEPROM_UART ' * Descripcin: ' Hacer el uso de una memoria externa eeprom por comunicacin i2c a travs ' del mdulo desarrollo PIC16F887 I&T en donde estn designado el chip select ' A0 = 0 ' A1 = 0 ' A2 = 0 ' el byte de control es 0xA0 ' * Configuraciones: ' Microcontrolador: PIC16F887 ' Oscillator: INT_RC_OSC_NOCLKOUT, 8MHz ' Compilador: mikrobasic 3.2 '******************************************************************************* program EEPROM_UART ' Declaracion de variables dim num_temp as byte dim i as word dim text as string[6] dim mem as byte ' Proceso que escribimos en la eeprom y necesita direccion alta y baja ' mas el dato a escribir sub procedure escribe_eeprom(dim direccion_h, direccion_l, dato as byte) I2C1_Start ' Empieza la comunicacin I2C1_Wr($A0) ' Control de formato de byte I2C1_Wr(direccion_h) ' Direccion en alta I2C1_Wr(direccion_l) ' Direccion en baja

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

4/7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

I2C1_Wr(dato) ' Dato a escribir en la eeprom I2C1_Stop ' Detenemos la comunicacicon Delay_ms(8) end sub ' Proceso de leer en la eeprom y necesita direccion alta y baja sub function leer_eeprom(dim direccion_h, direccion_l as byte) as byte I2C1_Start ' Empieza la comunicacion I2C1_Wr($A0) ' Control de formato de byte I2C1_Wr(direccion_h) ' Direccion en alta I2C1_Wr(direccion_l) ' Direccion en baja I2C1_Repeated_Start ' Re-iniciamos la comunicaion I2C1_Wr($A1) ' Control de formato de byte + bit = 1 de lectura result = I2C1_Rd(0) ' Obtenemos en dato de la direccion de memoria I2C1_Stop ' Detenemos la comunicacion Delay_ms(8) end sub main: ' Registro Oscilador de control OSCCON = 0X75 ' Oscilador interno de 8mhz ' Registro Puerta B TRISB = 0X01 ' Portb.0 como entrada PORTB = 0X00 ' Registro Puerta E TRISE = 0X04 ' Porte.2 como entrada PORTE = 0X00 ' Registro Puerta D TRISD = 0X00 ' Portd como salida PORTD = 0X00 ' Seleccion de registro analogico. 1 analogico, 0 digitales ANSEL = 0X00 ' AN<7:0> ANSELH = 0X00 ' AN<13:8>

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

5/7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

delay_ms(250) I2C1_Init(100000) ' Inicializamos la comunicacion i2c a 100khz UART1_Init(9600) ' Inicializamos la comunicacion uart a 9600bps ' Enviamos un primer texto UART1_Write_Text("ideastechnology.com") UART1_Write(0x0D) ' Ascci del enter num_temp = 0 ' valor que vamos a guardar en la memoria while true i=0 while Button(PORTE, 2, 1, 1) and Button(PORTB, 0, 1, 1) UART1_Write_Text("memoria ") ' Enviamos el texto memoria WordToStr( i, text) UART1_Write_Text(text) ' Enviamos la localidad de memoria UART1_Write_Text(" valor ") ' Enviamos el texto valor WordToStr( leer_eeprom(hi(i), lo(i)), text) UART1_Write_Text(text) ' Enviamos el valor de la localidad de memoria UART1_Write(0x0D) ' Ascci del enter delay_ms(100) inc(i) if i=0x8000 then ' Recorremos hasta que el valor de la direccion de i=0 ' de memoria no supere los 0x8000 end if wend '' ESCRIBIR EN LA EEPROM if Button(PORTE, 2, 1, 0) then for i=0 to 0x7FFF ' Recorremos todas las direcciones de memoria escribe_eeprom(hi(i), lo(i), num_temp) inc(num_temp) ' Incrementamos el valor a guardar en la memoria PORTD = 0XFF ' Encendemos los leds indicando el trabajo next i PORTD = 0X00 ' Apagamos los leds indicando el terminado end if '' BORRAR LA EEPROM if Button(PORTB, 0, 1, 0) then for i=0 to 0x7FFF ' Recorremos todas las direcciones de memoria

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

6/7

Mobile: 0-82659680 0-90552583 Office: 0-45102623 Mail: info@ideastechnology.com Guayaquil Ecuador

' por defecto el valor de la eeprom es 0xFF escribe_eeprom(hi(i), lo(i), 0xFF) PORTD = 0XFF ' Encendemos los leds indicando el trabajo next i PORTD = 0X00 ' Apagamos los leds indicando el terminado end if wend end. '******************************************************************************* '******************* Ideas & Tecnologa ************************** '******************* Mdulo Desarrollo PIC16F887 I&T ************************** '******************* www.ideastechnology.com ************************** '*******************************************************************************

NOTA: Para un mejor entendimiento del funcionamiento de la prctica se recomienda leer todos los comentarios puestos durante la programacin, ah se explica de manera detallada todo el proceso.

Contctenos: : youtube.com/ideastecnology

: ideastecnology@gmail.com

: facebook.com/ideastechnology

: twitter.com/ideastechnology

:www.ideastechnology.com

:Facebook.com/ideastechnology

:twitter.com/ideastechnology

: youtube.com/ideastecnology

Pgina

7/7

Вам также может понравиться