Ir ao conteúdo
  • Cadastre-se
Ofioneu

Fácil, fácil.. fazer com que uma soma (a+b)...

Recommended Posts

Fazer com que uma soma (a+b), sendo q b é uma variável, seja atualizada em micro-segundos. Tipo:  

void  exemplo(){
  x= A+B;
  delayMicroseconds(1);
}

 Será que assim funciona?

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Ofioneu disse:

Será que assim funciona?

 

Funcionar, funciona!

 

mas no caso do seu exemplo, vai atualizar somente uma vez e depois sai da função, se você quiser que fique atualizando a vida toda, tem que usar um laço (do while ou while se for em C, pode usar também um laço for(;;) ), agora, se você quer que a atualização se repita um certo número de vezes, pode ser com o laço for(int32 j=0;j<320000;j++), nesse caso, vai atualizar 320.000 vezes e sai da rotina, tem ainda a opção while(variavel=alguma coisa) e por aí vai...

 

adicionado 5 minutos depois

Pra quê que você precisaria atualizar uma soma dentro de uma função sendo que os valores da soma, do jeito que você citou, não serão alterados? Se não serão alterados, porquê atualizar? Meio sem sentido, não acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

os valores da soma serão alterados sim, o projeto é bem maior.. mas estava con dificuldade nisso.. ja tentei o for, mas não fui muito feliz. Agora que você falou vou tentar com while..

 

Obrigado, qualquer duvida eu grito aqui novamente... valeu!!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ofioneu ,

 

Vai depender MUITO do tipo de variável que está sendo somado.

 

No seu exemplo, um tempo de 1 microssegundo complica demais porque o microcontrolador terá apenas 16 ciclos de clock para fazer isso, o que é inviável no ambiente de linguagem de alto nível.

Só a preparação do compilador para chamar essa função já consome mais tempo do que isso !

 

Sugiro fazer isso em Assembler mesmo, e colocar direto no local, substituindo a chamada da função. Vai ganhar um tempo muito, muito precioso se os seus tempos forem mesmo na ordem de microssegundos.

 

Mesmo assim, vai depender do tipo de variável que vai ser somada. Se for inteiro ou tipo word, sem problema. Se for acima disso, considere tempo minimo bem maior do que poucos microssegundos....seriam da ordem de dezenas de microssegundos ou até centenas se forem em ponto flutuante de dupla precisão.

 

Paulo

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
unsigned int soma(unsigned int a, unsigned int b)
{
return a+b;
}

isso tem em praticamente todos os exemplos de intrudução no c (!)

Um bom compilador traduz pro asm do mc como se fosse feito a mão em asm mesmo

Não entendi a do delay. De fato não entendi nada. Só sei que nada sei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz ,

 

Pelo que eu entendi, ele quer atualizar a soma a cada microssegundo.... o que até pode ser feito se usar um Arduíno e se as variáveis forem do tipo inteiro, mas sem chamar uma sub-rotina ou função. Fora disso, em 1 microssegundo, esquece !!!!

 

Só para salvar e repor registradores, o compilador perderá mais de 1 microssegundo.....

 

Paulo

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×