Autor Tema: duda 24lc256  (Leído 1776 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
duda 24lc256
« en: 05 de Octubre de 2009, 17:27:14 »
Estimados. Necesitaria por favor que me aclaren algunas cosillas. En primer lugar
1- El 256 del 24lc256 , que me esta indicando KBit o Kbytes o bytes.
2- Cada dirección de cuantos bits consta.

Tengo esta rutina para escribir en memoria

     for (i=0x1000;i<=0x1fff;i++){
     value=read_adc();
     write_external_memory(i,value,2);
    delay_ms(1000);
       }

Como se interpretaria la rutina?  la (i,value,2); indica la escritura del dato leido en el 1 y 2 byte???

muchas gracias !!!!!!!!!!!
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: duda 24lc256
« Respuesta #1 en: 05 de Octubre de 2009, 18:09:06 »
Hola.

Si quieres escribir esa memoria, debes usar uno de los .h o .c que hay para ese tipo de memoria, ya que la que las funciones estas usando no son para eso.

Los 256 son KBit y cada registro es de 8 bits, así que en total la memoria seria de 32Kbytes.

La librería que debes anexar para trabajar con esa memoria creo que es la 24256.c que esta en la carpeta drivers.

Saludos
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: duda 24lc256
« Respuesta #2 en: 06 de Octubre de 2009, 12:38:55 »
Gracias MLO, se evacuo mi duda. de la capacidad de memoria.
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: duda 24lc256
« Respuesta #3 en: 06 de Octubre de 2009, 12:54:16 »
Hola.

El uso de las memorias como la que mencionas es a través del protocolo I2C.

Código: C
  1. ...
  2. #include <2416.c>
  3. ...
  4. int16 direccion=0;
  5. int8 valor=10;
  6.  
  7. void main (void)
  8. {
  9.  init_ext_eeprom();
  10.  write_ext_eeprom(direccion, valor);
  11.  delay_ms(6);
  12.  valor = read_ext_eeprom(direccion);
  13. }
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: duda 24lc256
« Respuesta #4 en: 09 de Octubre de 2009, 16:14:11 »
Gracias por el aporte.

estoy haciendo un programito que a traves de un menu me permita escribir y leer en memoria. estoy utilizando pra ello un swich case. El tema es el siguiente cuando elijo del menú tendría que saltar a la funcion ( por ejemplo) leer y realizar la lectura. una sola vez y mostrarlo por el hipetrrminal. Eso lo  lo hago con el while true e infinitas veces, no logro salir una vez hecha la lectura. intente con otro ciclos pero sin resultado alguno. he aqui el programita 

Muchas gracias por la ayuda.

 do{            //bucle...
   
     puts("                                   ");
      puts("Lectura/Escritura de EEPROM 24LC256");     
      puts("==============================================" );
      puts("Seleccione opcion:" );
      puts("-------------------------------------" );
      puts("   2->Lectura EEPROM" );
      puts("   3->Escritura EEPROM" );
         
      menu=1;                     //muestra menu solamente una vez
      while(menu==1){ }            //espera tecla pulsada por teclado(rs-232)

   } while(TRUE);   //...infinit

 case '2':  puts("opcion 2 ");
                    puts("Realizando Lectura..." );   //opcion que realiza la lectura modo hex
                   
                    While (true)
                                         {
                   int a=0;
                     int i;
                     int valor=0;
                     for(i=0;i<32;i++) {      //bucle para leer mensajes en eeprom externa y muestra por lcd
                    valor=read_ext_eeprom(i);
                     printf("%02d \n\r ",valor);
                     puts("lectura finalizada");
                     delay_ms(1000);                  //retraso para que se vea en pantalla los mensajes
                    }                   
                    };
                     break;
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado jhonastad

  • PIC10
  • *
  • Mensajes: 34
Re: duda 24lc256
« Respuesta #5 en: 09 de Octubre de 2009, 21:15:12 »
Aunque no entiendo muy bien tu código, creo que el problema que tienes es que utilizas el while(true), que es un bucle infinito por lo que no puedes romper el ciclo facilmente, te sugiero que en tu función main, coloques es bucle infinito solo para darle continuidad a tu programa y el resto debes hacerlo con funciones. Saludos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: duda 24lc256
« Respuesta #6 en: 09 de Octubre de 2009, 22:50:00 »
Hola.

El error esta en que nunca vas a salir del do{}while();.

La opcion case va dentro de switch().

Código: C
  1. switch(dataRS23)
  2. {
  3.  case '2':
  4.    //Codigo a realizar
  5.    break;
  6.  
  7.   default:
  8.      break;
  9. }
El papel lo aguanta todo


 

anything