Ir ao conteúdo

Posts recomendados

Postado

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?

Postado
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?

Postado

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
Postado

@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
  • Membro VIP
Postado
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.

Postado

@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
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!