exibir valor em 5 display

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor vtrx » 07 Dez 2009 22:40

Errr... PIC16F* não tem MUL
logo não é esquisito

Aonde tem isso no meu post??Milessegundos virou MUL?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor Jozias del Rios » 07 Dez 2009 22:40

O propósito é de incentivo para que reflitam sobre a questão abordada (bin2bcd, atoi(), sprintf). Algum(ns) membro(s) estão fazendo overlooking no problema, sub estimando-o. O jogo não é pelo jogo nem pelo azar, mas pelo incentivo ao raciocínio em prol dos assuntos deste fórum e aplicados a este tópico.

Brincadeiras a parte [/ironymode], espero que tenha entendido a questão que levantei na minha primeira msg neste topico, de que as divisões por 10^n envolvidas no processo de conversão bin2bcd para exibição de um valor a princípio binário ("unsigned int") em dígitos decimais separados não é uma tarefa trivial, ainda mais para um uC sem instruções MUL e DIV como um PIC da série 16F*, independente do valor da tensão de referência.

Enquanto é muito fácil escrever em linguagem C a expressão "12658/1000", o mesmo é feio de ser feito em ASM sem bibliotecas prontas.

Não basta "dois RLF". Costuma-se precisar de bem mais que isto, e complexidade muito maior.

Dizer que o número já está em BCD também não é válido, pois o criador do tópico fez cálculos matemáticos que implicam na impossibilidade prática disso.

Rotinas semelhantes para AVR (que tem MUL) eu já implementei, e a divisão por 10 eu faço multiplicando por 26 (que é a parte inteira de 256/10), e ajustando (via conditional branches) o erro.

Peço desculpas pelas brincadeiras que lhe ofendem, e retiro a aposta.
TY
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor vtrx » 07 Dez 2009 22:46

O µc não quer saber se é feio ou não,quer saber do tamanho/desempenho do .Hex gerado.
Código: Selecionar todos
eu soh achei estranho vc ter usado float na versao em C e no dspic utilizou os registros diretamente... deve ser muito mais rapido neh, mas segundo o datasheet (nao manjo de dspic) desse cara os registros sao para inteiros de 16 bits, entao o codigo nao deve funcionar, certo?

O código não é meu,mas mesmo assim só foi possível a solução no código em ASM.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor Jozias del Rios » 07 Dez 2009 22:48

vtrx escreveu:
Errr... PIC16F* não tem MUL
logo não é esquisito

Aonde tem isso no meu post??Milessegundos virou MUL?


vc disse:
"usando mls sabendo-se que em ASM usa-se abaixo de µs.."

Desculpe. a palavra "mls" do seu post eu interpretei como "muls" pois fazia sentido. Não imaginei que "mls" fosse "ms", principalmente pois este último é padronizado, esforço pelo qual você foi consoante ao expressar "µs".

Na nova interpretação de sua mensagem, 1ms @ 1MIPs é para limitar à execução de 1000 ciclos, evitando que alguem faça divisões por "10" através de sucessivas subtrações por 10... iria demorar vidas... Ok? ;-)
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor vtrx » 07 Dez 2009 22:54

Alguem poderia interpretar com Micro mesmo,então Mil não deixaria dúvidas,mas não muda o conteudo da expressão.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor Jozias del Rios » 07 Dez 2009 22:57

Juro que não entendi. Por "muls" eu interpreto como "multiplicações", isto é, o conjunto das instruções derivadas à multiplicação ou o uso repetitivo de multiplicações. "muls" não entendi como um sufixo de número.

Aguardo comentários de terceiros, para saber qual a interpretação que um indivíduo comum teria. (estou curioso)
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor vtrx » 07 Dez 2009 22:58

Voce não se acha comum estando num forum comum?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor Jozias del Rios » 07 Dez 2009 23:01

Entendi:

vtrx escreveu:Alguem poderia interpretar com Micro mesmo,então Mil não
deixaria dúvidas,mas não muda o conteudo da expressão.


Imaginei que estivesse relacionando o tempo de processamento de multiplicações ("muls") às unidades de microsegundos. Nesse sentido que vi outro conteúdo para a expressão.

Sobre o forum comum... é sempre bom ter uma terceira opnião :roll:
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor msamsoniuk » 08 Dez 2009 01:55

mas vc esta comparando dois codigos que nao tem relacao nenhuma um com o outro! eh um completo absurdo pegar um programa q foi escrito para usar ponto flutuante e querer comparar com outro que faz o mesmo, mas escrito com ponto flxo, pois vc pode ter um dos dois resultados:

a) reescrever o codigo em C para usar ponto fixo e entao ele vai bater pau a pau com o seu programa em asm. alias, possivelmente a versao em C vai ficar melhor, pq eu vi que o codigo em asm esta muito mal otimizado! :)

b) reescrever o codigo em asm para usar ponto flutuante e entao vc vai ver seu asm descer de performance ateh chegar no chao, pq nao eh facil o cara escrever uma biblioteca IEEE754 compativel em asm.

vtrx escreveu:O µc não quer saber se é feio ou não,quer saber do tamanho/desempenho do .Hex gerado.
Código: Selecionar todos
eu soh achei estranho vc ter usado float na versao em C e no dspic utilizou os registros diretamente... deve ser muito mais rapido neh, mas segundo o datasheet (nao manjo de dspic) desse cara os registros sao para inteiros de 16 bits, entao o codigo nao deve funcionar, certo?

O código não é meu,mas mesmo assim só foi possível a solução no código em ASM.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 08 Dez 2009 02:19

existir por existir... existe fortran, coca-cola e sorvete! continua nao tendo nexo para mim...veja q o exemplo do AD foi soh um exemplo de um numero cuja origem nao eh um bcd e que vc tem que fazer uma conversao para poder jogar um lcd.

agora, eh engracado os caras fazerem uma referencia de 1.024V e o AD com *10 bits* ler *1023* no topo da escala. para mostrar o valor correto vc ainda tem que fazer um x*1024/1023, soh economiza na multiplicacao mesmo, mas isso qq mcu bom jah tem.

Djalma Toledo Rodrigues escreveu:
Marcelo Samsoniuk escreveu:...jah comeca que normalmente as tensoes de referencia sao 5V, 3.3V ou qq coisa que *nunca* vai ser 2^n para vc resolver a vida assim facil ...


Existe Componentes para Referência de ADC de 1.024 V / 2.048 V / 4.096 V

http://www.farnellnewark.com.br/cismref ... 0,643.aspx

http://focus.ti.com/lit/ds/symlink/lm4040d82.pdf

.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 08 Dez 2009 02:27

vtrx escreveu:Alguem poderia interpretar com Micro mesmo,então Mil não deixaria dúvidas,mas não muda o conteudo da expressão.


mil eh milesimo de polegada! o correto mesmo eh ms, com certeza ninguem vai confundir pq todo mundo usa us para microsegundo.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Jozias del Rios » 08 Dez 2009 02:28

e "mls"? rs...
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor Djalma Toledo Rodrigues » 08 Dez 2009 08:44

Marcelo Samsoniuk escreveu: ... agora, eh engracado os caras fazerem uma referencia de 1.024V e o AD com *10 bits* ler *1023* no topo da escala...

Marcelo veja ADC com Referência negativa , isto é, com Off Set
então é possível usar Vref+ 4.096V e vref- de 2.048V, por exemplo.

Imagem
PIC18F2525 - ADC

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

Mensagempor msamsoniuk » 08 Dez 2009 10:21

Jozias del Rios escreveu:e "mls"? rs...


mls deve ser mililitro*segundo :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor vtrx » 08 Dez 2009 12:01

Marcelo,em vez a falar asneira sobre os códigos,poste a solução!
Depois,me diga quantos µs vai demorar a 'solução' em C e a em ASM ok?Caso não seja muito pra voce...
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

AnteriorPróximo

Voltar para PIC

Quem está online

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

cron

x