Jhonatan Serafim
Respostas no Fórum
-
AutorPosts
-
10/12/2019 às 00:00 #40003305592
Olá Marcos.
Qual seria sua dificuldade em fazer está atividade ou conflito que ocorre na atividade que informou, para que possamos te ajudar?
As atividades podem ser feitas com diversas técnicas e lógicas como bem sabe, por isso precisamos que informe em qual trecho do código está com dificuldade ou qual técnica deseja ter mais informações. Recomendo que entre para o grupo do Telegram do M5 (https://t.me/joinchat/DZVYlkOIdyOoPdrPGwGEjA) e por lá podemos trocar informações com os outros alunos de quais técnicas e lógicas usaram para a atividade e ainda temos o Professor Ricardo que pode nos auxiliar de uma forma mais amigável.
Em questão aos modos dos botões veja que no enunciado declara que ao chegar em 10% de bateria automaticamente deve entrar em modo de manutenção com isso entra em um outro estado.
Um abraço.
06/12/2019 às 00:00 #40003303754Citação de Ronaldo Correia de Melo Correia de Melo em 05/12/2019, 21:32Boa Noite ! seria 2,5 us ?
Fala Ronaldo.
Não seria 2,5us.
Me permita apresentar algumas das fórmulas que foi ensinada na aula 1 deste módulo.A primeira fórmula apresentada período/tempo:
T = 1 / f ou f = 1 / T
T= Tempo
f = FreqüênciaA segunda fórmula que é a que usamos para fazer esse exercício tem duas partes:
Fint = Fext / 4
Tcym = 1 / Fint
Fint = Freqüência Interna
Tcym= Tempo do Ciclo de Máquina
Fext= Frequencia Externa
Espero que agora consiga solucionar esse tipo de exercício.
Bons estudos.05/12/2019 às 00:00 #40003304893Citação de Marcos Tadeu de Brazio em 04/12/2019, 14:36Olá,
Quando se executa o código em alguns momentos quando se aperta o botão aparentemente acontece bounce, como tratar isso sendo que na ocorrência da interrupção não dá pra usar rotinas de tratamento de debounce visto que são momentos diferentes (várias ocorrências da mesma interrupção)?
Grato,
Marcos
Essa é uma excelente pergunta, solicitei auxilio do Professor Ricardo para contribuir com a resposta.
1-) as oscilações de bounce costumam ser bastante rápidas. Se as instruções de tratamento levarem mais tempo para serem executadas do que o período de oscilação do bounce, isso não se torna um problema.
2-) Se sua aplicação for de alta criticidade e ou RTOS (aplicações em real time), uma boa prática seria o seguinte:
Sempre que a interrupção for chamada, a primeira instrução recomendada seria a “desabilitação” da mesma. Desta forma garantirá que qualquer evento de bounce não tenha influência no processo enquanto a interrupção está sendo tratada.
Obs: evidentemente que uma instrução de “reabilitação” da interrupção se faz necessário logo após seu tratamento ou período que julgar necessário para implementação de sua lógica.3-) a previsibilidade do bounce deve ser feita pelo programador e eliminada quando julgar necessário. Um simples capacitor em paralelo com o botão dado como exemplo na pergunta, já minimizaria este probleminha.
4-) Também vale destacar que botões eletromecânicos são utilizados em experimentos e projetos onde não se exige essa característica de “robustez”. Pois a interrupção externa, a qual faz parte do questionamento feito, pode ser acionada por qualquer sensor digital com controle de bounce. Ou mesmo por botões com tecnologias específicas, como um capacitivo, por exemplo.
Enfim, percebe-se que cada caso é um caso e que as especificidades do projeto é que determinarão o melhor caminho técnico a seguir.
Grande abraço.
05/12/2019 às 00:00 #40003304956Citação de Marcos Tadeu de Brazio em 04/12/2019, 19:30Olá,
Acredito que o código está errado, não é só trocar o valor para 5, precisa mudar a atribuição da variável i para 1.
Veja que a variável é inicializada como 1 e depois é atribuído o valor 0 a cada execução.
Fiz a simulação trocando para 5 e não dá certo. Desta forma não tem resposta correta. Poderia verificar?
Grato,
Marcos
Olá Marcos.
1- De fato essa questão apresentava um erro. Porém não é o que informou o erro apresentado era sintaxe que já foi corrigido. Foi alterado o parâmetro do ultimo comando output do código onde estava RELE foi alterado para pin_b7 que é o LED4 no kit neutrino.
2- No código é inicializado a variável i como 1 mesmo e dentro do segundo while ela não deveria ser zerada pois estando assim ela só funcionaria uma vez , e referente a isso alteramos o código sendo assim no fim de cada etapa i voltará a ser 1.
3- O número 5 será usado no calculo dentro do while afim de executar as 4 alterações de estádo do LED4.
Veja o funcionamento:
1- LED4 está apagado
apertando B3
acende LED42- apaga LED4
acende LED43-apaga LED4
acende LED44- apaga LED4
O código alterado:
int i = 1;
while(TRUE){
if(!input(pin_b1)){
delay_ms(250);
output_d(0x01);
}
else{
output_d(0x00);
}
if(!input(pin_b2)){
while(i<4){
output_toggle(pin_b7);
delay_ms(300);
i++;
}
i=1; //Alterado a variável para 1.
output_low(pin_b7); //Alterado D0 para b7
}
}
}Faça essa alteração em seu código e veja o resultado e caso queira faça uso do debug utilizando o stimullus.
Será adicionado 3 pontos para você por auxiliar nesta questão.
Grande abraço.
04/12/2019 às 00:00 #40003304934Citação de Marcos Tadeu de Brazio em 04/12/2019, 09:23Olá,
Não entendi o que está pedindo, o que seria estado normal? seria colocar um resistor de pull-up para garantir o estado lógico alto durante o estado normal?
Grato
Olá, Marcos.
De fato é adicionar um resistor de pull-up. Sabe-se que o estado dito “normal” é aquele estado onde a entrada está em repouso, ou seja, sem a transição gerada pela comutação. Estado normal é o estado de repouso do elemento que irá comutar (inverter seu estado), pós evento.
Esses estados são estudados no Módulo 2. E abordado sobre pull-up e pull-down na aula 4 do M5. Caso queira rever o conteúdo.Grande Abraço.
-
AutorPosts