Olá companheiros,
Minha dúvida surgiu depois que comecei a estudar processadores PIC, em uma prática simples de acender um LED através de um botão, notei pelo osciloscópio que para o LED trocar de estado demoraria aproximadamente 6.7 micro segundos (tempo de processamento).
A pergunta em questão é : Qual critério devo levar em consideração quando for executar algum projeto, melhor dizendo em que tipo de projeto ou circuito que esse ''tempo'' de execução pode me atrapalhar ?
Obrigado desde já.
Tags:
Bom dia GAP.
Você não especificou qual linguagem está usando e nem a frequencia do oscilador que está usando.
Vou inferir que é 4 MHz. A 4MHz são 4 ciclos a cada micro segundo.
O PIC16F84a precisa de 4 ciclos de clock para executar cada instrução de maquina.
ou seja, com este clock, cada instrução de maquina dura 1 micro segundo.
Se programado em C, é provavel que ao comandar o acendimento de um LED o compilador
utilize mais de uma instrução, mas usando assembly
voce pode usar uma unica instrução para isto.
Se voce mediu mais que 6 micro segundos, provavelmente foram executadas
6 instruçoes de maquina.
RV
Bom Dia RV,
A linguagem é assembly e usei exatamente 4MHz externo para o PIC 16F84a, mas a pergunta é, em que situação esse tempo pode me atrapalhar ?? Vou exemplificar, Nesta prática usei o botão para acender o LED somente quando apertar - ló, mas com uma logica invertida, pull - up, então para quando fosse nível logico alto no botão o LED ficava apagado, e para quando o botão fosse pressionado que deixaria nível logico baixo na entrada do uP, o LED acendia, pois então temos um Circuito INVERSOR correto? mas feito por logica de processamento, normalmente os circuitos inversores são muito mais rápidos na faixa de nano segundos, a questão que me deixou intrigado é como esse tempo de 6 micro segundos que é um tempo considerável, pode atrapalhar meu circuito ?? Eu gostaria de saber em que TIPO de projeto com o PIC esse tempo de processamento "lento" atrapalhasse ?
Obrigado GAP
Então isso depende das necessidades de todo o sistema, nesse caso é necessário fazer uma análise de timing, propagation delay, muita das vezes isso só interessante em aplicações muito específicas. O caminho mais simples é aumentar o clock da CPU, trocar de processador ou usar FPGA, CPLD etc.
Você fez uma aplicação simples, uma entrada e uma saída, com o aumento da complexidade do código as questões de atraso também mudam, pois cada saída vai depender de uma série de instruções, que eventualmente vão provocar atrasos diferentes, ahh mais é possivel contornar isso, exato, isso você consegue fazendo otimização do código.
Não é uma comparação muito justa essa que você fez, pois um microcontrolador possui centenas de portas lógicas entre a entrada e a saída, mais o atraso da CPU.
GAP,
anexe um arquivo com seu code em assembly, ai qdo eu retornar pra casa eu carrego no PIC,
e vejo no osciloscopio.
RV
Boa noite,
Para ter uma estimativa do tempo gasto para um programa em Assembly , você pode verificar linha por linha, quanto tempo gastará cada uma delas.
No datasheet do PIC - conjunto de instruções ( PIC16CXXX INSTRUCTION SET )são informados quantos ciclos de máquina cada instrução gasta.
https://www.microchip.com/wwwproducts/en/PIC16F84A
Boa tarde amigo,
Segue abaixo o anexo dos arquivos estou usando o compilador MPlab IDE v8.92.
Boa noite GAP,
Não entendi nada do que você disse :
" Claramente este exemplo meu não foi mais ideal para...................................... "
Qual sua dificuldade e qual é o projeto?
RV
Boa noite RV
" Claramente este exemplo meu não foi mais ideal para...................................... " este texto foi a resposta para o Flavio Hernan, a minha duvida era somente em questão ao tempo que o Up gastava para cada instrução, em quais projetos,práticas, deveria levar em consideração a somativa desse tempo ....???
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por