Autor Tema: verficación  (Leído 2892 veces)

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

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
verficación
« en: 15 de Enero de 2010, 09:15:28 »
Tengo este programita de eescritura en eeprom
desearia saber si la sintaxis de escritura e incremento de la dirección estan correctos

En primer lugar definiria
 
long i=0;            // inicio de direccion de memoria
long value=0;     //  variable donde guardo la lectura del adc

//me meto en un bucle hasta llegar a la direccion 16384
while(i<=16384);
{
value = read_adc();             //leo el conversor
write_ext_eeprom (i,value);   //escribo en la direccion 00 la parte baja del adc
i=i++;                                  //  incremento la direccion para la parte alta
value= value>>8;                 // roto para guardar la parte alta
write_ext_eeprom (i,value); // guardo en la direccion siguiente la parte alta
i=i++                                // incremento memoria para que guarde otro dato
}

Bueno esto seria el tronco del programita, por supuesto tengo que configurar el adc, el pic etc......
Gracias por el aporte!!!!
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: verficación
« Respuesta #1 en: 15 de Enero de 2010, 09:22:05 »
En el bucle vas a guardar 16385 datos, es correcto? mmm...
Con respecto al incremento, se hace solo i++; no es necesario la asignación a la misma variable.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #2 en: 15 de Enero de 2010, 13:13:35 »
La idea es : "i" es el puntero de la direccion de memoria,  esta se va incrmentando para que se guarde un  dato  de 1 byte en la dirección de "i". y asi hasta llegar a la maxima dirección que es la 0x7ff  o sea la 32767 e decimal
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: verficación
« Respuesta #3 en: 15 de Enero de 2010, 13:21:01 »
Pero 0x7FF es 2047  :shock:

Si es 0x7FF seria:

Código: C
  1. i=0;
  2. while(i<0x800){
  3.     value = read_adc();            
  4.     write_ext_eeprom (i++,value);    // Aquí guarda en i y después incrementa en 1 (i+1)
  5.     write_ext_eeprom (i++,(value>>8));
  6. }


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #4 en: 15 de Enero de 2010, 18:56:17 »
Gracias por el aporte suky: de acuerdo a lo escrito sería 
write_ext_eeprom (i++,(value>>8));     En esta línea desplaza y guarda  en i incrementado ? e incrementa i nuevamente  ??
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: verficación
« Respuesta #5 en: 15 de Enero de 2010, 19:05:34 »
Gracias por el aporte suky: de acuerdo a lo escrito sería 
write_ext_eeprom (i++,(value>>8));     En esta línea desplaza y guarda  en i incrementado ? e incrementa i nuevamente  ??

utiliza i en el valor actual y luego le suma 1, segun tengo entendido si quieres que sume antes y luego la utilice es ++i  en todo caso siempre se incrementa i cuando pasa a la siguiente instrucción.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: verficación
« Respuesta #6 en: 15 de Enero de 2010, 19:19:03 »
Exactamente como dice fidodido18, en este caso tienes que usar i++, para que use el valor actual, y después incremente en 1 para el posterior almacenamiento.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #7 en: 15 de Enero de 2010, 20:20:29 »
Gracias por el aporte muchachos!!!
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #8 en: 16 de Enero de 2010, 23:52:05 »
Ahora como se haria para leer esas direcciones de memorias.??? :-/ :-/ :-/
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: verficación
« Respuesta #9 en: 17 de Enero de 2010, 15:08:42 »
Una opción puede ser:

Código: C
  1. ValorLeido=((long)read_ext_eeprom(i++)+((long)write_ext_eeprom(i++)<<8));

O separarlo en terminos para no confundirse.

Código: C
  1. ValorLow=read_ext_eeprom(i++);
  2. ValorHigh=read_ext_eeprom(i++);
  3. Valor=((long)ValorHigh<<8);  // o ((long)ValorHigh*0x100)  *
  4. Valor+=ValorLow; //    *

O usar

Código: C
  1. Valor=make16(ValorHigh,ValorLow);

en reemplazo de (*)


Saludos!
« Última modificación: 17 de Enero de 2010, 15:21:53 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #10 en: 17 de Enero de 2010, 22:50:10 »
Gracias suky!!! lo implementare y te cuento
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: verficación
« Respuesta #11 en: 18 de Enero de 2010, 03:02:49 »
Por si les interesa MikroC trae funciones que se utilizan para leer los bytes que componen los valores ya sean int ó long. estas son:

Lo(long number)        Regresa el byte más bajo del numero, bits 0..7
Hi(long number)         Regresa el byte siguiente al más bajo del numero, bits 8..15
Higher(long number)   Regresa el byte anterior al más alto del numero, bits 16..23
Highest(long number)  Regresa el byte más alto del numero, bits 24..32

y para ello hay que incluir la librería built_in.h

Supongo que CCS trae alguna librería similar, estas librerías hacen que el codigo sea más corto que si rotaramos los bits del numero. Sino las traen creo que sería posible adaptarlas o hacer algunas para CCS
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: verficación
« Respuesta #12 en: 18 de Enero de 2010, 03:13:20 »
En CCS también existen: make8, make16, make32

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: verficación
« Respuesta #13 en: 18 de Enero de 2010, 09:06:35 »
Exacto, que en si hace mas o menos lo mismo. El problema de usar estas funciones tan especificas es que uno se acostumbra y cuando le toca usar otro compilador no sabe como resolverlo!  :x


Saludos
No contesto mensajes privados, las consultas en el foro

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: verficación
« Respuesta #14 en: 22 de Enero de 2010, 16:13:34 »
Como podria mandar esos valores leidos a la pc, tengo este programita
{
      for(cnt=0;cnt<=8;cnt++)       //Lectura de los 7 primeros bytes de la eeprom
         {
         dat_serie[cnt]=read_ext_eeprom(cnt);
         }
      for(cnt=0;cnt<=8;cnt++)       //Visualiza los 7 primeros bytes de la eeprom
         {
         printf("BYTE %u=%3u \r",cnt,dat_serie[cnt]);
         }
   }

Pero solo funciona en el proteus. cuando lo llevo al y pc no camina. Que puede estar sucediendo
Si quieres trascender..., enseña humildemente  lo que sabes.