Página 1 de 1
formula conversor A/D

Enviado:
08 Abr 2008 23:39
por cristian
alguem pode me explicar o porque deste calculo q tem no livro de fabio pereira a formula funciona mas queria entender como
valor+=1;
val32=valor*4+((int32)valor*113)/128;
val32=val32/10;
vou mostrar no lcd
vou utilizar ela pra medir temperatura e tensao da bat quero colocar o ponto casa decimal ex:
32,4 graus e 12.75volts mas nao consigo
Re: formula conversor A/D

Enviado:
09 Abr 2008 04:51
por andre_luis
Do resto, não entendi, mas pelo fato da 2a linha ter uma multiplicacao por potencia de 2 ( *4 ) e também uma divisão por potencia de 2 ( /128 ) - que são realizados pelo compilador com deslocamento de bit´s, parece ter sido um meio de realizar um escalonamento do valor otimizando o tempo de execução.
+++

Enviado:
09 Abr 2008 07:17
por cristian
e no caso do ponto que nao deu certo mesmo mudando a variavel para float

Enviado:
09 Abr 2008 08:24
por fabim
o cristian e ralf blz..
Seguinte o uC não entende ponto ou virgula.. os ditos são apenas imaginarios dentro de uma variavel.
O que acontece é que voce simplesmente faz a converção de int, float ... to STR. Só que os procedures da maioria nos compiladores não entendem ponto e virgula, e quando aparece um zero aí fode mesmo.
Procedimento correto.
Voce sabe que o pic tem 10 bits
E sabe que o resultado não é fracionado é um inteiro meio bixa.
float a.
word b.
string[5] c.
a = resultado do pic * (valor de referencia / numero de steps).
a = 512 * ( 2.500 / 1024);
a = 2.500 << para o pic pra voce naum!!
b = a; < conversão implicita.. tira o ponto e transfere inteiros
b = 2500;
no C num tenho idéia como que funfa!! mais no mikropascal seria assim.
wordToStr(b,c);
C que tem 5 bytes de string, agora igual á!
1° , 2° , 3° , 4° , 5°
2 , 5 , 0 , 0 , 0
Pego terceira casa e rotaciono para direita 1 vez.
c[5] := c[4]
c[4] := c[3]
E ..... c[3] := ',' ou '.' ou 'blabalalahhff'.rsrsrsr
Rapidão simplão e sem pau.
Fabim

Enviado:
11 Abr 2008 07:57
por cristian
a parada é a seguinte
com esta função aparece a virgula no ponto certo sem burocracia
printf(nokia_printchar,"%2.2wL\n\r",val32); //exibe em litros