Página 1 de 1

Dúvida básica - Fast I/O LPC2368

MensagemEnviado: 10 Mar 2009 08:47
por Cláudio
Pessoal,
Estou começando a trabalhar com o LPC2368. Gostaria de ajuda para verificar se está certo o que eu implementei, para fazer um Toogle de um pino do port2, de maneira mais eficiente que um if-else.

#define PIN_SAIDA_OSC 0x00000001

FIO2MASK = ~(PIN_SAIDA_OSC); // máscara do PORT2 com 0 somente no pino a ser tooglado
FIO2PIN ^= PIN_SAIDA_OSC; // inverte (toogle) pino de saída
FIO2MASK=0; // reinicia mascara port2.

Não consigo ver se está certinho, pois só sei mexer com o Watch no Keil (num tendi nada desse tar de VTREG).

P.S.: Como é duro trabalhar trocentos anos em um uC/linguagem e apanhar feito criança quando muda isso! :o

Valeus, abraços....

MensagemEnviado: 10 Mar 2009 10:06
por Cláudio
Desculpe a falha, post deveria estar no fórum ARM.

MensagemEnviado: 10 Mar 2009 10:58
por joao
Este tópico foi movido do Fórum "Boteco" para o Fórum ARM.

[]'s

MensagemEnviado: 10 Mar 2009 15:38
por Cláudio
Thanks, Joao.
Já que ninguem responde, rsrs, eu mesmo respondo!

Resolvi fazendo:
FIO2PIN ^= PIN_SAIDA_OSC.

Achei que precisaria, mas não achei utilidade pra máscara até agora.

MensagemEnviado: 13 Mar 2009 18:28
por jeanfernandes
A utilidade da màscara eh para voce fazer o toggle somente onde tem a mascara os demais pinos nao mudam, por exemplo

vamos supor que voce deseje mudar os pinos 1, 4 ,7, 9, 11 ao mesmo tempo
se fosse faz um a um teria 5 instrucoes
com a mascara
bastaria setar a bixa, e depois dar um ^ geral eheheheehe

por ae

MensagemEnviado: 15 Mar 2009 00:11
por chrdcv
Se estais a mascarar:
FIO2MASK = ~(PIN_SAIDA_OSC); // máscara do PORT2 com 0 somente no pino a ser tooglado

Deveria ser:
FIO2MASK &= ~(PIN_SAIDA_OSC);

chrdcv

MensagemEnviado: 17 Mar 2009 07:43
por rafaelntg
Cláudio,

da forma como você fez o toogle (utilizando OU EXCLUSIVO bit-a-bit) não é necessário fazer o mascaramento (FIO2MASK), pois somente o bit que está setado na constante PIN_SAIDA_OSC (bit 0) será invertido no portal 2 (pino P2.0). Resumindo, somente a instrução de toogle resolveria o seu problema.

Em relação à eficiência, esteja certo de que dessa forma o código gerado será menor e a execução será, pelo menos, 2 vezes mais rápida que utilizando uma lógica simples com if-else. Recentemente eu vi isso acontecer na prática. OK?

Até mais!

Um abraço!