Como funciona e como utilizar o “Fractional”????

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Como funciona e como utilizar o “Fractional”????

Mensagempor ivan braga » 02 Set 2010 19:33

Olá foreiros.

Bom, como diz o título, preciso entender como funciona e como utilizar o “Fractional”, sempre trabalhei com os PICs lendo os conversores ADC com “unsigned int” e depois multiplicava por um valor especifico e pronto, tinha a informação da tensão presente no dito pino do µC.

Porém agora estou me enveredando pelos caminhos do dsPIC e quero aprender como usar essa “inovação”, pelo menos para min.

Vou citar um exemplo para que possam me ajudar a entender o “Fractional”.

No momento tenho um dspic33f trabalhando a 3.3v, e um pino do modulo ADC configurado como entrada, quando faço a leitura neste pino usando o formato de entrada “unsigned int” depois da conversão tenho o seguinte valor ‘454’ e quando o faço usando “unsigned Fractional” tenho o valor ‘29056’. Quando multiplico 0.00322v * 454 tenho uma tensão de ~1.46v (3.3/1024=0.00322...).

Como faria isso usando o “Fractional”?

Desde já obrigado.

Ivan
"Mesmo o objeto mais inanimado tem movimento suficiente para ficar na sua frente e provocar um acidente."
"Even the most inanimate object has enough movement to stand in your way and cause an accident."
Avatar do usuário
ivan braga
Nibble
 
Mensagens: 60
Registrado em: 15 Dez 2006 18:02
Localização: Rio de Janeiro

Mensagempor Djalma Toledo Rodrigues » 03 Set 2010 09:41

When the multiplier is configured for fractional multiplication,
the data is represented as a two’s complement
fraction, where the MSB is defined as a sign bit and the
radix point is implied to lie just after the sign bit (QX
format). The range of an N-bit two’s complement
fraction with this implied radix point is -1.0 to (1 – 21-N).
For a 16-bit fraction, the Q15 data range is -1.0
(0x8000) to 0.999969482 (0x7FFF) including ‘0’ and
has a precision of 3.01518x10-5. In Fractional mode,
the 16 x 16 multiply operation generates a 1.31 product
which has a precision of 4.65661 x 10-10.

Pág. 43
2.6.1 MULTIPLIER

http://ww1.microchip.com/downloads/en/D ... 70165a.pdf

Atente para duas coisas:

1ª) O Range vai de aproximadamente -1 a +1 Zero incluido
2ª) O Formato é Complemento de 2

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ivan braga » 03 Set 2010 13:20

Obrigado pelo retorno Djalma.

Já havia "tentado" ler, "pois copio e colo no google" esta informação, porem não compreendi.

Por isso usei o exemplo no post anterior, para que alguem possa me explicar como usar de maneira efetiva este recurso.

De qualquer forma agradeço a resposta e continuo aguardando para ver um exemplo prático.


Ivan
"Mesmo o objeto mais inanimado tem movimento suficiente para ficar na sua frente e provocar um acidente."
"Even the most inanimate object has enough movement to stand in your way and cause an accident."
Avatar do usuário
ivan braga
Nibble
 
Mensagens: 60
Registrado em: 15 Dez 2006 18:02
Localização: Rio de Janeiro

Mensagempor MOR_AL » 03 Set 2010 14:46

Vamos lá.
1 - O resultado de uma conversão de 10 bits deu 454, que em binário é 01 1100 0110 ( 256+128+64+4+2 = 454).
2 - Um número SEM sinal, no formato fractional é representado da seguinte forma:
a) Número de bits: N (no seu caso é 10).
b) O bit menos significativo (o da direita) tem o fator -N, ou -10. A medida que for considerando os bits à esquerda, seu fator vai diminuindo de uma unidade. No primeiro bit mais significativo o fator vale -1.
c) Então 01 1100 0110 vai valer: (^ é elevado a) (* é vezes)
0*2^-1 + 1*2^-2 + 1*2^-3 + 1*2^-4 + 0*2^-5 + 0*2^-6 + 0*2^-7 + 1*2^-8 + 1*2^-9 + 0*2^-10 =
= 1*2^-2 + 1*2^-3 + 1*2^-4 + 1*2^-8 + 1*2^-9 = 0,443359375 (44,3359375% do total de 1024 valores)
d) ... que multiplicado por 1024 = 454

Como funciona está aí. Como usar, nunca usei. :)

Esse valor de 29056 foi obtido como? Em binário como ele estaria representado? Quantos bits teria?
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor tcpipchip » 03 Set 2010 18:14

Se nao entendeu...

Podes brincar aqui

http://babbage.cs.qc.edu/IEEE-754/
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Djalma Toledo Rodrigues » 04 Set 2010 10:21

O Fracional não é Decimal mas, creio que entendera melhor assim:

Para Inteiro:

Bit8 *2^8 + Bit7 *2^7 + .... + Bit1 *2^1 + Bit0 *2^0

Para Fracional:

Bit *2^-1 + Bit *2^-2 + Bit *2^- 3 + .... + Bit *2^- 7 + Bit *2^-8 ...

2^-1 = 1/2
2^-2 = 1/4
2^-3 = 1/8

e assim por diante

Esta nesse formato arcaico que nem Inglès usa mais.

Além disso observar o Complemento de 2

Mas, para o ADC pode-se contornar, evitar, a fração escolhendo a Tensão de Referência adequada

Por Exemplo ADC 10 Bits ---> 1024
Atribui-se 2 mV a cada Bit
A Tensão de referência será portanto de 2.048 Vdc

E por esta razão existem Reguladores Tensão para essa finalidade.

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ivan braga » 06 Set 2010 22:56

Obrigado a todos pelas repostas, apartir das informações e direções que vocês me deram, vou dar uma googleada para melhor entender o assunto.

Ivan
"Mesmo o objeto mais inanimado tem movimento suficiente para ficar na sua frente e provocar um acidente."
"Even the most inanimate object has enough movement to stand in your way and cause an accident."
Avatar do usuário
ivan braga
Nibble
 
Mensagens: 60
Registrado em: 15 Dez 2006 18:02
Localização: Rio de Janeiro


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x