Autor Tema: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a  (Leído 25566 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Hola buenas noches estoy tratando de leer byte a las eeprom microwire de la serie 93cx6 y no logro leerlas bien aca les subo el codigo que estoy usando que me lo sugirio un colega pero no me corre a la perfeccion.

include "modedefs.bas"

' Subroutine to read data from addr in serial EEPROM
eeread:
        addr = 09                            ' Loop 4 times
        CS = 1                                          ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]     ' Send read command and address
        Shiftin DO, CLK, MSBPOST, [B0]                  ' LEE data
        CS = 0                                          ' Disable
        Pause 10                                        ' PAUSA 10ms
' Subroutine to write data at addr in serial EEPROM
eewrite: CS = 1                         ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%1010\4, addr, B0] ' Send write command, address and data
        CS = 0                          ' Disable

eso me digo que aplica a las memorias 93c56 pero no me lee como deberia ya que compruebo lo leido en una lcd y no es lo mismo que esta en la eeprom externa haa tambien mando ese valor leido de la eeprom externa a la eeprom del pic16f877a que es el micro maestro que uso para establecer comunicacion con la eeprom externa y no coincide con el byte de la eeprom externa por tal razon digo que npo me lee bien la rutina expuesta arriba.

saludos y cualquier sugerencia bienvenida sea y si doy con la solucion tambien les planteo
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #1 en: 22 de Diciembre de 2007, 10:11:38 »
Disculpa, yo tengo que hacerlo con una 93c86, voy a hacerlo en CCS...

Lo que no entiendo es que hace esta instruccion:

Citar
Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]     ' Send read command and address

El comando Shiftout lo conozco, lo use alguna vez, la parte que no comprendo es:

Citar
[%1100\4, addr]

El %1100\4 no entiendo que hace.. :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #2 en: 22 de Diciembre de 2007, 11:42:50 »
ME DISCULPAS MI SINCERIDAD PERO AHI TAMBIEN ESTA  MI PROBLEMA QUE NO ENTIENDO ESA PARTE POR ESO NO AVANSO HAA OTRO DATO ES QUE CON 93C56 ME LEE PERO NO LO QUE DEVERIA PERO CON LAS 93C46 NO ME LEE NADA LO QUE ME HACE PENSAR QUE ESO COMO QUE DEFINE EL TIPO DE EEPROM ME EXPLICO.

SALUDOS Y TRABAJANDO EN ESTABLECER COMUNICACION CON EEPROM 93CX6
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #3 en: 22 de Diciembre de 2007, 13:25:13 »
Código: [Seleccionar]
Shiftout DI, CLK, MSBFIRST, [%1010\4, addr, B0]
Lo que hace el codigo es mandar el dato de manera "sincrona"?? Por el Pindata en este caso DI, el pind e clock en este caso CLK, enviando priemro el BYTE ALTO por lo de MSBFIRST y el clock estando en bajo, cuando pone %1010\4 significa que solo va enviar 4 bits porque si no se especifica \bits por default manda 8.

La verdad no se como se comunique la memoria con un PIC pero seria bueno leer el datasheet para ver como se direcciona y eso.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #4 en: 22 de Diciembre de 2007, 22:21:10 »
bueno creo que es lo mejor ubicar la data del eeprom y ver como se comunica y asi elaborar un codigo pero sigo con el lio nose ni que quiso decir bien eso es decir no estoy claro ese codigo me lee solo a las eeprom 93c56 y con error no lo que esta realmente en la memoria


Igual gracias por su interes y seguimos avanzando.
saludos

Código: [Seleccionar]
Shiftout DI, CLK, MSBFIRST, [%1010\4, addr, B0]
Lo que hace el codigo es mandar el dato de manera "sincrona"?? Por el Pindata en este caso DI, el pind e clock en este caso CLK, enviando priemro el BYTE ALTO por lo de MSBFIRST y el clock estando en bajo, cuando pone %1010\4 significa que solo va enviar 4 bits porque si no se especifica \bits por default manda 8.

La verdad no se como se comunique la memoria con un PIC pero seria bueno leer el datasheet para ver como se direcciona y eso.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #5 en: 23 de Diciembre de 2007, 01:45:52 »
ACA LE SUBO LA DATA DE MICROWIRE 93CX6 PARA QUE ENTRE TODOS DEMOS LA OPINION DEL ANALISIS DE PROTOCOLO DE COMUNICACION ENTRE EL PIC Y LA EEPROM.
SIN MAS QUE ADJUNTA POR AHORA ME DESPIDO
SALUDOS
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #6 en: 23 de Diciembre de 2007, 08:03:18 »
Hace unas semanas que adquiri unas memorias de este tipo
Cuando tenga algo definitivo lo paso por aqui.
Saludos desde Granada, España.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #7 en: 23 de Diciembre de 2007, 10:36:19 »
ok gracias por su interes igual yo estoy trabajando en eso de tener noticia le aviso.

saludos.

Hace unas semanas que adquiri unas memorias de este tipo
Cuando tenga algo definitivo lo paso por aqui.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #8 en: 28 de Diciembre de 2007, 09:29:20 »
Hola buenos dias revisando mas al detallado el codigo y haciendo pruebas las lecturas si la hace pero mi problema creo que es ya conceptual porque esta leyendo pero a 8bit por eso no me muestra la data leida como yo esperaba porque siempre he visto las datas de las eeprom microwire a 16 bits he ahi mi problema por eso digo que es conceptual y por mas que investigo no logro hacer que me lea la data de la eeprom a 16 bits como realmente la quiero.

Saludos y cualquier novedad les aviso de todas maneras le mostro la data leida a 16 bits cuando la leo con un programador al pc y cuando la leo con el pic para que noten el porque del problema, ojo cuando con el programador de eeprom que uso con el pc seleccion 8 bits las datas sin son iguales tanto las leidas con el pc como las ledida con el pic.

« Última modificación: 28 de Diciembre de 2007, 09:49:07 por ASTROCAR »
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #9 en: 28 de Diciembre de 2007, 10:50:28 »
Como tienes conectado el pin ORG ??

Mira esto:

Citar
MEMORY ORGANIZATION
The M93Cx6 is organised in either bytes (x8) or words (x16). If the ORG input is left unconnected (or connected to VCC) the x16 organization is selected; when ORG is connected to Ground (VSS) the x8 organization is selected.

Seguramente tu programador maneja este pin segun como quieras leer la memoria, pero en el circuito del PIC debe estar a GND...
« Última modificación: 28 de Diciembre de 2007, 10:53:32 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
« Respuesta #10 en: 28 de Diciembre de 2007, 16:19:28 »
Que tal amigos aqui hay un ejemplo en pic basic pro para una memoria 93lc56a que de seguro te puede servir  :mrgreen:

http://www.microengineeringlabs.com/resources/samples/x1/pbp/mwx.bas

Cualquier duda al respecto posteala, a ver en que te podemos ayudar  :P

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #11 en: 28 de Diciembre de 2007, 18:20:34 »
colega muchas gracias pero ese mismo codigo es el que estoy usando y es el que no me anda solo me funciona a 8 bits.

si tienes otro o una sugerencia bienvenida sea
saludos
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
« Respuesta #12 en: 28 de Diciembre de 2007, 23:09:10 »
Que tal!
Mira el ejemplo que te pase es el mismo que tengo en proton tambien, por lo que deberia funcionar.

Prueba enviando esta instruccion primero para poder habilitar la escritura de datos que en tu codigo no la veo.

eewriteen:
      CS = 1                                   ' Enable serial EEPROM
        SHOut DI, CLK, msbfirst, [%10011\5, 0\7]    ' Send write enable command and dummy clocks
        CS = 0                                   ' Disable
        Return

After power-up, the device is automatically in the
EWDS mode. Therefore, an EWEN instruction must be
performed before the initial ERASE or WRITE instruction
can be executed

Esta instruccion debe enviarse primero para poder habilitar la escritura de la eeprom y me cuentas que paso   :mrgreen:

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #13 en: 29 de Diciembre de 2007, 07:19:36 »
ok como me explico esa rutinas tambien estan en mi codigo y nada hermano y comente que si me lee pero no a 16bit ese es mi ? como hacer leer que me lea pero a 16 bit, para ser mas explisito mejor pongo las datas leidas tanto con la pc como con el pikc y asi se nota toda la diferencia.

saludos y nuevamente gracias.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #14 en: 29 de Diciembre de 2007, 08:58:50 »
Código: [Seleccionar]
Shiftout DI, CLK, MSBFIRST, [%1010\4, addr, B0]
Lo que hace el codigo es mandar el dato de manera "sincrona"?? Por el Pindata en este caso DI, el pind e clock en este caso CLK, enviando priemro el BYTE ALTO por lo de MSBFIRST y el clock estando en bajo, cuando pone %1010\4 significa que solo va enviar 4 bits porque si no se especifica \bits por default manda 8.

La verdad no se como se comunique la memoria con un PIC pero seria bueno leer el datasheet para ver como se direcciona y eso.

Creo que en la explicacion de Navaismo sobre ShifOut explica el problema que tienes, alli dice que el maximo es 8 bits!!
Ademas hay que ver que tipo de variable es la que recibe tu dato (byte o word), deberia ser una word. :mrgreen: :mrgreen:

Se me encendió la ultima lamparita del año 2007, je..je.. :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.