TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: ASTROCAR en 22 de Diciembre de 2007, 00:56:56

Título: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 22 de Diciembre de 2007, 00:56:56
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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT 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:
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: navaismo 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.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: dogflu66 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.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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.

Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT 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...
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 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:
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR 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.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT 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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 29 de Diciembre de 2007, 09:04:17
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 problema es que dice que enviara 4 bit pero segun la lectura igual esta enviando los 8 bit porque la lectura para 8 bit si esta perfecta

saludos y me alegra que estemos atacando el tema
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
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 29 de Diciembre de 2007, 09:15:16
Me explico y actuemos por la logica lo primero es tener claro lo que realmente hace esto:
 
Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]

con todos sus detalles como por ejemplo este parte %1100\4 lo que veo no es mas que 12 en binario y cuadro el porque de ese 12 y segun un colega el 4 es que envia solo 4 bit. y tambien el comento que si no se coloca el 4 por defecto envia 8 bit bueno pero mientras no tenga claro eso no avanzare y por mas que busco el la ayuda de pbp no me ayuda mucho es decir no da detalles de eso la otra es saber el porque eso de las lecturas en las wicrowire de 8 bit y 16 bit ya ando como loco y no encuentro logica al tema pero algo debe te estar mal y con ayuda de ustedes y mi desempeño por aca lo lograremos.

buenos colegas los dejo y cualquier cosas les aviso.
saludos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT en 29 de Diciembre de 2007, 09:36:04
Hace muuucho tiempo usaba PBP... :D :D
Eso no quiere decir que sea viejo, ehhh!!! :mrgreen: :mrgreen:

Para la interfaz con el MCP3204 (conversor A/D de 12 bits, 4 canales), usaba esta rutina...

Código: FreeBasic
  1. low CS                  'pongo en bajo Chip Select del conversor
  2.         shiftout Din, CLK, MSBFIRST, [Config\5]
  3.         'envia configuracion al conversor A/D
  4.         shiftin Dout, CLK, MSBPOST,[DataIn\(BitsConv+1)]
  5.         'carga el resultado en Datain, hay un bit que no tiene validez
  6.         high CS              'pongo en alto Chip Select

En tu rutina de lectura usas esto otro:

Código: FreeBasic
  1. eeread:
  2.         addr = 09                            ' Loop 4 times
  3.         CS = 1                                          ' Enable serial EEPROM
  4.         Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]     ' Send read command and address
  5.         Shiftin DO, CLK, MSBPOST, [B0]                  ' LEE data
  6.         CS = 0                                          ' Disable
  7.         Pause 10                                        ' PAUSA 10ms

No deberias hacer que B0 sea una word y ademas escribirlo asi:

Código: FreeBasic
  1. eeread:
  2.         addr = 09                            ' Loop 4 times
  3.         CS = 1                                          ' Enable serial EEPROM
  4.         Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]     ' Send read command and address
  5.         Shiftin DO, CLK, MSBPOST, [B0\16]                  ' LEE data
  6.         CS = 0                                          ' Disable
  7.         Pause 10                                        ' PAUSA 10ms
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 29 de Diciembre de 2007, 09:47:15
ok pero puedes dar tu opinion analitica de que es realmente lo que hacer esas rutinas porque para mi no estar 100%
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT en 29 de Diciembre de 2007, 11:08:18
Eso.
Declara B0 como word, y prueba modificar la linea de shiftin como te la escribi, a ver como va... :mrgreen:
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 29 de Diciembre de 2007, 16:52:23
Pana mira hay que estar claro en algunas cosas hay algunas memorias que de la serie que indicaste que solo operan a 8 bits y otras que pueden trabajar en ambas.

Si tu tienes la que soporta a ambas entonces te paso a explicar con lujo de detalle lo que hace esta instruccion:

SHOut DI, CLK, msbfirst, [%10011\5, 0\7]

msbfirst: quiera decir que los datos se envian empesando por el bit mas significativo (M.S.B) por lo que si envias 10011 el primer bit que se enviara sera el 1 luego el 0 luego el 0 luego el 1 y por fin el ultimo 1  :mrgreen:

 %10011\5 la barra invertida con el 5 indica el numero de bits que vas a enviar, en este caso 5.
0\7  indica que vas a enviar siete 0  (0000000)

de donde sale esto:  %10011\5, 0\7  si te lees el manual que esta aqui en la pajina 4  http://ww1.microchip.com/downloads/en/devicedoc/21794b.pdf

en la tabla para 8 bit la que ta abajo de la de 16  :D   tabla 1.4

donde dice WEN alli esta la linea que te escribi arriba, para adaptarla a lo que tu quieres utilizaria

SHOut DI, CLK, msbfirst, [%10011\5, 0\6]
espero que me hallas entendido  :D :-)

Saludos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 30 de Diciembre de 2007, 02:59:28
colegas a esta hora estoy un poco borracho y con hambre me disculpan mi sinceridad pero es asi, pero estoy tal perdiente que llego a esta hora y reviso jajajjajaj mañana sigo.

saludos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 30 de Diciembre de 2007, 15:24:02
No bebas tanto y reviza cuando puedas lo que te envie a ver si te sirve!

Feliz Navidad!!!!!
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 30 de Diciembre de 2007, 16:40:16
hermano listo ya tengo la idea claras solo me falta es como representar esos resultados de la data boy hacer un codigo que ya me leea y guardo en la misma eeprom del micro para poder comparar dame unos minutos y aviso.

gracias
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 30 de Diciembre de 2007, 18:40:26
ok pana!
Por aqui estaremos!

Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 30 de Diciembre de 2007, 20:54:59
BUENOS COLEGAS ESTO ES GRACIAS AL ESFUERZO DE TODOS USTEDES MIL GRACIAS Y ESTE CODIGO LO HICE PARA PIC16F877A OJO LUEGO HAGO LA PARTE DE ESCRITURA ES QUE ESTOY FULL CANSADO Y YA QUIERO JUGAR CON MIS HIJOS UN RATO.

Define   LOADER_USED   1

addr     var     byte       
CS       var     PORTB.2                 ' Chip select pin     
DI       var     PORTB.0                 ' Data in/dta pin
CLK      var     PORTB.1                 ' Clock pin
DO       var     PORTB.4                 ' Data out pin
B0       var     word
BBYTE1   var     word
BBYTE2   var     word
I        VAR     BYTE
Include "modedefs.bas"          ' Include serial modes


         Low CS   


loop:   
        I=0
        For addr = 0 To 127              ' Loop 16 times
                Gosub eeread            ' Read from SEEPROM
                Lcdout $fe,1,#addr,": ",#BBYTE1    ' Display
                Lcdout $fe,$c0,#addr+2,": ",#BBYTE2     ' Display
                WRITE I,BBYTE1
                WRITE I+1,BBYTE2
                I=I+2
                Pause 1000
        Next addr

        Goto loop

' Subroutine to read data from addr in serial EEPROM
eeread: CS = 1                          ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%1100\4, addr\7]     ' Send read command and address
        Shiftin DO, CLK, MSBPOST, [B0\16]  ' Read data
        BBYTE2=(B0 & $FF00)/256
        BBYTE1=B0 & $FF
        CS = 0                          ' Disable
        Return



        End

SALUDOS Y CUALQUIER COSA ESTOY A LA ORDEN
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 31 de Diciembre de 2007, 00:12:25
Ok me alegro que  hallas resuelto el problema que tenias!
Mira el define loader used 1 no es necesario a menos que vayas a usar el debuger del pic basic con el microcode studio.

Saludos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: ASTROCAR en 31 de Diciembre de 2007, 02:10:18
Ok me alegro que  hallas resuelto el problema que tenias!
Mira el define loader used 1 no es necesario a menos que vayas a usar el debuger del pic basic con el microcode studio.

Saludos

jajajaja que bueno contar con personas como tu que bueno eres, me sorprendes estas al pendiente de todo eso te hace diferente a los demas nuevamente gracias y si tienes razon no es necesario deja quitarlo..

haa lo otro es que no he terminado completo falta la parte de escritura pero no deberia tener problemas hoy mismo prueba y cerramos el tema de las microwire.

saludos y buenas noches a todos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT en 31 de Diciembre de 2007, 07:17:32
Felicidades !!! :-/ :-/
Me alegra que lo hayas logrado !!! :mrgreen: :mrgreen:
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 31 de Diciembre de 2007, 11:50:34
De nada mi pana!
Para eso estamos aqui, para ayudarnos entre todos.
Le debo muchisimo a las personas que conforman este foro, son lo maximo!!

Si quieres aprender a programar pic entre otras cosas  :mrgreen:  quedate aqui.

Desde Valencia, Venezuela que tengan una Feliz Navidad a todos mis estimados amigos!  :mrgreen:
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 31 de Diciembre de 2007, 13:00:41
Hola buenos dias y espero que ya todos esten preparado para recibir este nuevo año que demas esta decir que se estila a ser provecho y mas en el mundo de las tecnologias. Bueno ahora al grano estuve realizando el codigo para escritura y por fortuna si me escribe pero con un pequeño detalle me escribe los 16 bit invertidos es decir si mando a escribir "$0068" me escribe "$6800"; quise explicar esto antes de colocar el codigo para ver si ya le paso a alquien aunque el tema de escribir a 16bit a muchos ni le parece pero reto es reto asi que hasta que no termine no me quedo quieto.

yo tengo mi idea de como resolver invirtiendo antes los 16bit que quiero escribir pero me parece que tengo que hacer nuevas rutina como separa eso 16 bit que no son mas de 2 byte en byte por separado y luego le aplico su union pero al contrario y luego asi si lo envio a escritura, ojo es una solucion pero veo raro que me escriba a la inversa seguro tengo algo malo y no lo he nota luego subo el codigo dejenme revisar bien.

saludos y nuevamente con detalles pero ya mas claro y se como atacar el dema de los microwire y eso era mi idea dominar el tema.
bye


Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: ASTROCAR en 31 de Diciembre de 2007, 13:06:13
De nada mi pana!
Para eso estamos aqui, para ayudarnos entre todos.
Le debo muchisimo a las personas que conforman este foro, son lo maximo!!

Si quieres aprender a programar pic entre otras cosas  :mrgreen:  quedate aqui.

Desde Valencia, Venezuela que tengan una Feliz Navidad a todos mis estimados amigos!  :mrgreen:

oye eres venezolano que bueno somos paisano, mira seria bueno que tengamos contacto mas directo ya que aca me siento como solo ya que en mi estado nadie trabaja con pic y son muy contados los venezolanos que se aplicar al tema y si tu lo haces me gustaria estar mas unido como colega  ojo mosca que no se mal interprete jajajajaja .

buenos hermano aca le dejo mis contacto y cualquier cosa estamos a la orden:
e-mail: serviciotecnico5@hotmail.com
nombre: Alexander Santana
Celular: 0414-8244577.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 31 de Diciembre de 2007, 19:41:57
Listo colegas ya esta 100% la lectura y escritura de microwirw 93c56 y lo mejor que claro para PODER HACERLO PARA CUALQUIER MODELO DE ESTE PROTOCOLO MICROWIRE.
ACA LES VA EL CODIGO COMPLETO:

addr     var     byte       
CS       var     PORTB.2                 ' Chip select pin     
DI       var     PORTB.0                 ' Data in/dta pin
CLK      var     PORTB.1                 ' Clock pin
DO       var     PORTB.4                 ' Data out pin
B0       var     word
BBYTE1   var     word
BBYTE2   var     word
I        VAR     BYTE
Include "modedefs.bas"          ' Include serial modes


         Low CS   


   
        Gosub eewriteen                 ' Enable SEEPROM writes
       
        For addr = 0 To 127            ' Loop 16 times
                B0 = addr + 100         ' B0 is data for SEEPROM
                gosub ERAL
                Gosub eewrite           ' Write to SEEPROM
                Pause 10                ' Delay 10ms after each write
        Next addr
loop:       
        I=0
        For addr = 0 To 127              ' Loop 16 times
                Gosub eeread            ' Read from SEEPROM
                Lcdout $fe,1,#addr,": ",#BBYTE1    ' Display
                Lcdout $fe,$c0,#addr+2,": ",#BBYTE2     ' Display
                WRITE I,BBYTE1
                WRITE I+1,BBYTE2
                I=I+2
                Pause 1000
        Next addr

        Goto loop

' Subroutine to read data from addr in serial EEPROM
eeread: CS = 1                          ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%1100\4, addr\7]     ' Send read command and address
        Shiftin DO, CLK, MSBPOST, [B0\16]  ' Read data
        BBYTE2=(B0 & $FF00)/256
        BBYTE1=B0 & $FF
        CS = 0                          ' Disable
        Return

' Subroutine to enable writes to serial EEPROM
eewriteen: CS = 1                       ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%10011\5, 0\6]     ' Send write enable command and dummy clocks
        CS = 0                          ' Disable
        Return

' Subroutine to write data at addr in serial EEPROM
eewrite: CS = 1                         ' Enable serial EEPROM
        Shiftout DI, CLK, MSBFIRST, [%1010\4, addr\7, B0.byte0,B0.byte1] ' Send write command, address and data
        CS = 0                          ' Disable
        Return
       
ERAL: 
        high CS ' Erase EEProm - $FF in all locations
        shiftout DI,CLK,MSBFIRST,[1110\4,addr\7] '
        low CS
        return


        End

HAA LES EXPLICO UN POCO DE COMO RESOLVI LO DE QUE ME ESCRIBIA AL CONTRARI LO RESOLVI USANDO SEPARACION DE BYTE PERO DE ESTA MANERA NO SABIA QUE PICBASIC TENIA ESTA OPCION B0.BYTE0, ESTE ES EL BYTE MENOS SIGNIFICATIVO Y B0.BYTE1 EL BYTE MAS SIGNIFICATIVO DE LOS 16 BITS ESO TAMBIEN LO USE EN LA PARTE DE LECTURA Y NADIE ME PREGUNTO EL PORQUE PERO IGUAL ME SIRVI PARA RECORDAR LOS VIEJOS TIEMPO DE LA UNIVERSIDAD CUANDO USABA ALGEBRA BOLEANA.

EN FIN MIL GRACIA Y A OTRO PROYECTO.

BYE . FELIZ AÑOS COLEGAS
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: MGLSOFT en 01 de Enero de 2008, 21:15:47
Felicitaciones por resolverlo y tambien por poner el codigo aqui!! :-/ :-/
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
Publicado por: RALF2 en 11 de Enero de 2008, 12:31:52
Felicidades astrocar!
Que bueno que resolviste el problema. voy a ver si consigo unas de esas memorias para probarlas tambien!.

Saludos
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 14 de Enero de 2008, 12:45:40
ok, Gracias colegas y animate RALF y prueba nunca esta demas experimentar protocolos hoy mismo me inicio con el protocolo spi.

saludos y mil gracias por su ayuda.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 17 de Enero de 2008, 10:08:23
Buenos dias, colegas me surgio una nueva idea con lo de las eeprom microwire, quiero establecer comunicacion con mi palmone tungsten t5 para asi expresar lo leido en la palm y asi ahorro tando lcd como teclado matricial ya que lo puedo aprovechar de la palm pero uno de los obstaculos que note es que la palm no tien comunicacion serial y la idea es comunical el pic con la palm.

En fin laidea es tener un programador lo mas pequeño posible y me gustaria que pudiera ver toda la data en una palm, logico que tendria que estudiar un poco como programar en las palm pero se que con empeño y un poco de dedicacion lo puedo lograr asi que manos a la obra empesare por definir todo lo de la palm y ver el modo de comunicacion entre el pic y la palm y luego ver que soft uno para creas aplicaciones a palm o podria ser poker pc la idea es como ya lo dije antes expresar el codigo de la eeprom en una pantalla mas comoda que la lcd 2x16 que es la que actualmente uno en mi aplicacion que ya culmine y quiero ampliarla y por eso tomo como opcion las palm.


saludos y si alguien tiene conocimiento de una palm o poker pc que soporte puedo serial seria buenisimo ya que la que tengo usa es COMUNICACIONES
Puerto infrarrojos (IrDA): Sí
Conexión con el PC: USB
Wireless integrado: Bluetooth 1.0
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: navaismo en 17 de Enero de 2008, 17:07:19
Citar
Me explico y actuemos por la logica lo primero es tener claro lo que realmente hace esto:
 
Shiftout DI, CLK, MSBFIRST, [%1100\4, addr]

Es que es muy claro no? Lo que dice la ayuda del PBP.

Citar
SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...]

Synchronously shift out Var on ClockPin and DataPin. ClockPin and DataPin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0). \Bits optionally specifies the number of bits to be shifted out. If it is not specified, 8 bits are shifted out, independent of the variable type. The Mode names (e.g. LSBFIRST) are defined in the file MODEDEFS.BAS.

Segun Yo la linea que no acabas de entender lo que hace es:

Shiftout: Le dices que vas a mandar de manera "sincrona" un dato por el Pin de CLK y DATA

DI, CLK:  Pines de DATA y CLOCK que hayas configurado.

MSBFIRST: ahi le estas diciendo que vas a mandar el MOST SIGNIFICANT BIT primero

[%1100\4, addr]: Aqui mandas la Variable y la cantidad de BITS en tu caso mandas el 12 y solo los 4 BITS, porque hagas eso Yo lo desconozco. Pero asi esta en tu codigo. Imagino que si no aclaras que son los 4 Bits ademas del 12 mandara 4 ceros mas.

Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 19 de Enero de 2008, 23:59:53
hola buenas noches y muchas gracias por su explicacuion pero ya el caso esta resuelto el tema mio ahora es llegar todo mi proyecto a usarlo con una palm es decir usar la interface de la palm para asi no tener que usar lcd y teclado matricial ya que las prestaciones de la palm nos ofrece pantalla tactil y con eso puedo usarlo mas facil y asi tambien estroy reduciendo tamaño que era realmente lo que queria.

Saludos y mil gracias por su apoyo.
bye.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 28 de Septiembre de 2008, 11:25:21
Hola dias, retomando el tema de las eeprom microwire que en su momento se concluyo muy satisfactoriamente ahora quiero aplicarlo pero usando el hardware del pic ojo el hard es protocolo spi pero se puede ajustar para hacerlo funcionar como microwire manejando los registros bien adecuados. El otro asunto es que si alguien ha logrado simular este protocolo microwire en proteus u otro simulador ya que yo pude con la ayuda de RALF2 hacerlo pero con el protocolo SPI pero en proteus no veo las eeprom Micorwire.

Saludos y cualquier comentario sera bien recibido.
Atten.
Alexander Santana.
Barcelona-Venezuela
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 19 de Octubre de 2008, 22:56:02
Hola buenas noches tomando en el post anterios comente en simular el protocolo microwire en proteus y por mas que investigue no logre que proteus agregara las eeprom microwire pero por comentarios de otro colega me sugirio el multisim que al parecer tiene las eeprom microwire.

Quien de usted tendra el multisim para afirmar que si dispone de estas eeprom microwire y asi poder simular aplicaciones con ese tipo de protocolo.

Saludos y espero comentarios de las personas que usan esta aplicac ion de multisim aunque seria bueno colocar este post en la seccion de simuladores de circuitos pero no lo hice para seguir el orden del tema abierto de las eeprom microwire.

Atten:
Alexander Santana.
barcelona-Venezuela.
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: yonderstw en 30 de Marzo de 2018, 20:46:56
buen dia amigo amigo me podras ayudar con el codigo en c para las eprom 93c56 tengo parte del codigo pero estoy confundido has pdodio simular esa memoria en algun software
Título: Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
Publicado por: ASTROCAR en 14 de Mayo de 2020, 13:52:01
buen dia amigo amigo me podras ayudar con el codigo en c para las eprom 93c56 tengo parte del codigo pero estoy confundido has pdodio simular esa memoria en algun software
lo hice pero enproton hace mucho tiempo y para la simulacion proteus no soporta microwire