Estou trabalhando com essas duas interrupçoes

attachInterrupt(51,cont_interrupcaoB, RISING); 


Timer3.attachInterrupt(Alta_velocidad).setPeriod(1000).start();

È para medir a velocidade de um encoder. A primeira conta os pulsos dados pelo encoder e a segunda faz calculo da velocidade baseado na quantidade de pulsos que a primeira contou. Estou achando que enquanto ele faz o calculo da velocidade ele esta perdendo pulsos.

Alguem sabe como coloco prioridade para a interrupçao que conta os pulsos do encoder. 

Exibições: 738

Responder esta

Respostas a este tópico

Oi MHF, bom dia.

Existem sequencias de prioridades internas do microcomtoladores.

No caso do Atmega, eu não sei dizer exatamaente que tem mais prioridade,

mas voce encontra isto no datasheet do processador.

Pelo seu texto não foi possivel identificar qual que voce está usando.

Rui

Voce esta usando Arduino DUE :

https://www.arduino.cc/en/Main/ArduinoBoardDue

Baseando na CPU Atmel SAM3X8E ARM Cortex-M3 CPU

http://www.atmel.com/Images/Atmel-11057-32-bit-Cortex-M3-Microcontr...

Estava lendo e vi que esse ARM tem bastante recurso com as interrupções (requer estudo do material técnico).

Por exemplo, as interrupções podem ser configuradas ! (agrupadas) 

10.6.6 Interrupt priority grouping

Oi MHF, boa tarde,

a sequencia de prioridade do Atmega328, é baseada nesta informação:

 Interrupt priority is determined by order in table

 Lower addresses have higher priority

Voce enconta a tabela com os respectivos endereços aqui

http://louisthiery.com/hardware-interrupts-on-the-atmega168328/

E sobre interrupts encontra info aqui:

http://courses.cs.washington.edu/courses/csep567/10wi/lectures/Lect...

 

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço