Exibições: 555

Responder esta

Respostas a este tópico

Muito bom Carlos.

Este é um exemplo de código o qual usa técnicas profissionais de uso reduzido de memória e eficiência por economizar ciclos de busca de variáveis. Além de usar interrupção através de chamada direta pela função ISR. Gostei muito, parabéns.

Obrigado Celso!

Um detalhe pertinente que não está nesta versão, mas sim na outra é o uso do #define, uma diretiva

de compilação substituindo uma "int" na definição de um nome no lugar do número do pino, Ex.:

Em vez de usar: 

int led1 = 30;

Use:

#define led1 30

Motivo, quando você usa uma int, você esta alocando um espaço de 2 bytes na memória

RAM sem necessidade, além de fazer com que os comandos que utilizem estas variáveis,

fiquem mas lento pois eles tem que acessar a RAM para ler o conteúdo, gastando mais ciclos

de máquina. Já utilizando a diretiva "#define", não será alocado nenhuma memória e durante

a compilação onde houver led1 sendo utilizado no seu Sketch, será substituído pelo número

que você atribuiu no #define.

Façam o teste, compile da forma tradicional e anotem quanto de RAM foi gasto e depois substitui

pela diretiva #define e verifique a diferença dos resultados, verão a diminuição no gasto de

espaço de memória RAM.

"int" para definir nomes aos pinos de I/Os, e a segunda tela, compilado usando a diretiva "#define",

notem nos resultados a diferença do espaço usado de memória RAM, além de ganhar isso e a 

questão de velocidade, existe um outro aspecto muito mais importante, que é a segurança do

funcionamento, quando o endereço do pino esta dentro da memória RAM e esta sofrer uma

alteração inadvertida, acontecerá um acionamento errático de uma outra saída sem ser aquela

anteriormente planejada e programada no seu Sketch, isto só poderá acontecer se você usar a

maneira convencional, já no modo sugerido isto é fixo e imutável, pois foi colocado nas funções

dentro do Sketch que as utilizam e dentro da memória de programa.

Abaixo as telas com os resultados das compilações para o mesmo Sketch, compare e vejam

a diferença.

Carlos Machado,

Muito bom este tópico, precisamos incrementar o conhecimento de todos os participantes, para que não fiquem somente no estagio copia e cola, ou atrelados no conceito básico da IDE do Arduino.

Noto muito interessantes o exemplo do #define as pessoas estaõ acostumadas e condicionadas ao uso dos int, porque aprenderam que funcionam, mas na medida que comecem a implementar projetos que demandam memoria irão se encontrar como problemas sérios, já que como sabemos a memoria destes MCU é pouca se comparada a um computador por exemplo, 2 bilhões de operação e muito mais por segundo VS 2 mil operações, creio que todos devem começar a se interessar um pouco mais a partir de publicações como a sua, que visam elevar o conhecimento das pesoas.

Por outra parte, noto que esta usando a IDE da Atmel Studio 6.2 outra maneira de fazer as coisas de forma mais profissional e eficiente, e com o aumento de conhecimento sem limitações, também temos o VS da MS que merece um tópico creio.

Acredito que todo aquele que faz um blink e desfruta do momento, depois quer aprender a  fazer um blink sem usar delay, e depois usando interrupção, na medida que vamos vencendo uma barreira queremos partir para a próxima, isso é típico do ser humano como tal, por isso bem vindo seu tópico e sua revista, e bem vindo seu proposito de espalhar seu conhecimento com outras colegas, isso é digno de admiração e merece o respeito de todos.

Parabéns e um grande abraço!

Obrigado Carlos pelos seus comentários!

Excelente !!

 

Carlos Machado. Parabéns.

 

Com esse Sketch até mesmo eu que tenho  pouco conhecimento de programação e eletrônica consegui codificar o meu controle e " tbm entender o que esta acontecendo no código "..

Tbm o código esta todo comentado...rssrs... 

 

  https://youtu.be/VC_BmRY0BfY

 

Obrigado pelo post me ensinou muito ...

Grato ..

 

Obrigado Alex!

Gostei do vídeo!

Carlos.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço