Interrupção externa e rtos

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Interrupção externa e rtos

Mensagempor verd » 20 Jul 2010 13:57

Olá companheiros!! entou dando uma fuçada no cortex com rtos, estou tentando implementar uma interrupção externa, o problema é que ao executar a interrupção eu travo o andamento do programa!

Existem alguma regra basica para funcionar em rtos? estou aprendendo rtos dando uma fuçada pela net, to bem perdido ainda, batendo cabeça!!

alguem tem algum palpite?


Código: Selecionar todos
void BUTTON_init(void) {
  LPC_GPIO2->FIODIR      &= ~(1 << 10);    /* PORT2.10 defined as input       */
  LPC_GPIOINT->IO2IntEnF |=  (1 << 10);    /* enable falling edge irq         */

  NVIC_EnableIRQ(EINT3_IRQn);              /* enable irq in nvic              */
}



void EINT3_IRQHandler()
{
LPC_GPIO2->FIOSET =0xffffffff;
delay(10);
LPC_GPIO2->FIOCLR =0xffffffff;

LPC_GPIOINT->IO2IntClr |= (1 << 10);     /* clear pending
}
"Tem pessoas qua acham que sabem tudo....
eu já acho que não sei nada!!!"
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Mensagempor barboza » 20 Jul 2010 15:48

Delay dentro da interrupção????????


Usando RTOS você pode enviar uma mensagem (ou flag, não sei qual RTOS esta usando) para uma task que ao receber, faça o que quer com o delay no meio.


Código: Selecionar todos
void IRQ_Handle()
{
   sendmsg(xyz);
}

void task_toogle_pin()
{
  while (1)
  {
     if (waitmsg(xyz))
     {
        pin=1;
        waitdelay(10);
        pin=0;
      }
   }
}
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor verd » 20 Jul 2010 16:32

Fala barboza!! to usando o RL-arm da keil!! o delay era só pra ver se o pino mudava de estado!!

ceto! tipo o esquema do mailbox! vou dar uma estudada nisso!! valeu!!!
"Tem pessoas qua acham que sabem tudo....
eu já acho que não sei nada!!!"
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Mensagempor verd » 20 Jul 2010 16:45

acho q to viajando! hehe!! no caso de uma interrupção externa ela apenas irá setar um flag e não executar uma ação certo? to achando que é igual a rotina de interrupção do PIC!
"Tem pessoas qua acham que sabem tudo....
eu já acho que não sei nada!!!"
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x