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

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

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #15 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
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 #16 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
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 #17 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
« Última modificación: 29 de Diciembre de 2007, 09:38:56 por MGLSOFT »
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 #18 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%
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 #19 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:
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 #20 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

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #21 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
« Última modificación: 31 de Enero de 2008, 11:43:08 por ASTROCAR »
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 #22 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!!!!!

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #23 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
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 #24 en: 30 de Diciembre de 2007, 18:40:26 »
ok pana!
Por aqui estaremos!


Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f877a
« Respuesta #25 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
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 #26 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

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Leer y escribir eeprom externa de la sere microwire (93cx6) usando el pic16f
« Respuesta #27 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
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 #28 en: 31 de Diciembre de 2007, 07:17:32 »
Felicidades !!! :-/ :-/
Me alegra que lo hayas logrado !!! :mrgreen: :mrgreen:
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 #29 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:
« Última modificación: 31 de Diciembre de 2007, 12:31:20 por RALF2 »


 

anything