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

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

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

Mensagempor Cláudio » 10 Mar 2009 08:47

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....
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor Cláudio » 10 Mar 2009 10:06

Desculpe a falha, post deveria estar no fórum ARM.
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor joao » 10 Mar 2009 10:58

Este tópico foi movido do Fórum "Boteco" para o Fórum ARM.

[]'s
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Cláudio » 10 Mar 2009 15:38

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.
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor jeanfernandes » 13 Mar 2009 18:28

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
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor chrdcv » 15 Mar 2009 00:11

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
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Mensagempor rafaelntg » 17 Mar 2009 07:43

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!
Rafael Noronha
rafaelntg
Bit
 
Mensagens: 10
Registrado em: 12 Mar 2007 10:46
Localização: Santa Rita do Sapucaí/Brazópolis - MG


Voltar para ARM

Quem está online

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

x