Autor Tema: Libreria: SAA1064 (CCS)  (Leído 12291 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Libreria: SAA1064 (CCS)
« Respuesta #15 en: 04 de Octubre de 2007, 23:49:56 »
no te cansas de tener razon?  :D
he hecho la modificacion que me propones y ahora funciona... bueno, en realidad estuve estudiando la libreria unas cuantas horas, porque tal cual me comentas no funcionaba, pero hice algunos pequeños arreglos y ahora esta todo bien. y lo mas importante... ahora entiendo como funciona toda la libreria! jeje
asi que ademas de implementar el punto la he comentado y ordenado un poquito mas...
si a alguien le interesa la dejo para descargar.
recuerdo que en mis comienzos RedPic me dijo algo asi:

Esto es lo que me gusta del foro, que es una cosa compartida, que entre todos hacemos que crezca día a día.  :)

me encanta este foro!

y por cierto...
efectivamente, hay que enviar los 4 digitos al saa1064, porque sino se monta un follon y muestra cualquier verdura.
yo lo tengo implementado EXITOSAMENTE en un voltimetro digital, que tiene una resolucion de 0 a 23v. el programa muestra correctamente valores de voltaje de 10.00v o mayores... ya que se usan los 4 digitos, pero si el valor a mostrar es menor (=<9.99v) pues, otra vez se muestran verduras  :?
probe con %04.2f, %4.2f, %4f, %2.2f... pero con todos salen valores anomalos por el display  :(
la verdad que no tengo idea como solucionarlo... quizas separando la parte entera de la decimal y asegurarme que la parte entera sean dos digitos incluyendo un cero a la izquierda cuando se necesite... pero debe haber algo mas simple
alguna idea?
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria: SAA1064 (CCS)
« Respuesta #16 en: 05 de Octubre de 2007, 01:42:22 »
¿Y así?
%02.2f

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Libreria: SAA1064 (CCS)
« Respuesta #17 en: 05 de Octubre de 2007, 07:00:21 »
pues... tampoco  :(
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria: SAA1064 (CCS)
« Respuesta #18 en: 05 de Octubre de 2007, 08:22:57 »
Raro, ese "0" delante debería obligar a completar con 0 por la izquierda

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Libreria: SAA1064 (CCS)
« Respuesta #19 en: 05 de Octubre de 2007, 10:03:03 »
No se deberia de poner:

%02.5f

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria: SAA1064 (CCS)
« Respuesta #20 en: 05 de Octubre de 2007, 12:05:07 »
Creo que ya sé porqué no va esto: %02.2f

El punto decimal habría que contarlo también como carácter, aunque luego se imprima junto a un número en el 7-seg. Por tanto prueba así: %03.2f

Si no va, prueba esta otra opción:

printf("%*03.2f", 5, variable)

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Libreria: SAA1064 (CCS)
« Respuesta #21 en: 05 de Octubre de 2007, 12:27:02 »
Si no va, prueba esta otra opción:

printf("%*03.2f", 5, variable)

efectivamente, hay que tener en cuenta el punto, que cuenta como caracter, pero %03.2f no funiona... y "%*03.2f", 5, variable... el compilador no lo agarra... tal vez en leguaje c para ordenadores el * signifique algo, pero mirando la ayuda del ccs, no es ningun parametro valido...

igualmente ya lo solucione...
Código: C
  1. if(Voltaje < 10)
  2.       printf (saa1064, " %3.2f", Voltaje);
  3.    else
  4.       printf (saa1064, "%4.2f", Voltaje);

si el voltaje es menor a 10 le agrego un espacio en blanco a la izquierda y santo remedio!
estoy seguro qu no es la solucion mas directa, y deberia haber un formato valido para darle con el printf... pero asi funciona y me vale  :mrgreen:
gracias por vuestra ayuda!
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Libreria: SAA1064 (CCS)
« Respuesta #22 en: 05 de Octubre de 2007, 14:12:03 »
Haber, según el manual, el primer número indica el número de caracteres a sacar (incluido el punto decimal) en nuestro caso para 2 dígitos enteros y 2 decimales el valor es 5. El segundo número indica el número de decimales, para este caso es 2. Luego la cadena de control es:

%05.2f

Disculpas por el post anterior, que indique los valores al revés.

Un saludo
« Última modificación: 06 de Octubre de 2007, 08:01:56 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Libreria: SAA1064 (CCS)
« Respuesta #23 en: 05 de Octubre de 2007, 21:06:04 »
ajajaaa, pues vaya tonteria!  :D
sin quitarle merito a lo que dices, que tienes toda la razon, como no me di cuenta antes de eso?!
efectivamente, esa es la menera correcta de presentar los valores en el printf. asi que ya funciona bien sin tener que usar un if ni cosas raras. por cierto, yo lo use "%5.2f" sin el cero delante del 5, de esta manera dejara displays en "blanco" cuando no tenga nada que presentar
salu2 y gracias!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria: SAA1064 (CCS)
« Respuesta #24 en: 06 de Octubre de 2007, 01:44:32 »
Ahora sí. Menos mal que nos has sacado del error, Jesús. Gracias

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Libreria: SAA1064 (CCS)
« Respuesta #25 en: 06 de Octubre de 2007, 04:05:27 »
Simplemente añadir una cosilla a lo de jfh900 que está muy bien.

Si por ejemplo el número a representar es el 2.358 con %5.2f sacaría 2 decimales truncando el 8, es decir la parte decimal sería 35 y luego reservaría 5 caracteres sacando en pantalla un espacio seguido de 2.35 (4 caracteres)

Si hubiese sido %8.2f sacaría 4 espacios seguidos de 2.35

Si te equivocas o no quieres contar el número de caracteres exactos a reservar para la parte entera el compilador es muy listo y lo hace él. Por ejemplo: %1.2f sacaría 2.35 aunque le estemos diciendo que reserve solo un caracter.

En el caso de que en lugar de truncar deseemos redondear se utiliza la letra g y redondea a partir de 5 inclusive hacia arriba. Por ejemplo: 2.355 con dos decimales redondearía a 2.36

La opción con la letra w también es muy interesante ya que permite añadir un punto decimal "por la cara" a un número entero sin signo de 8 bits (un int8). Por ejemplo: si tenemos 234 y metemos en el printf %8.2 sacaría cuatro espacios seguidos de 2.34, si ponemos %1.1 sacaría 23.4

El printf con versiones antiguas del compilador no funcionaba bien en algunos casos, como para representar 0.23 sacaba .23 sin el cero y tenías que ingeniartelas para añadirlo si así lo querías. Me llevo de cabeza el puñetero  :D :D

Un saludo

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Libreria: SAA1064 (CCS)
« Respuesta #26 en: 20 de Enero de 2009, 16:45:23 »
Nada mejor que recordar post antiguos para refrescar las ideas!
Pocher, tu explicacion del printf me ha venido de perlas! :mrgreen:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.


 

anything