Duvidas sobre o processador arm LPC2138

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Duvidas sobre o processador arm LPC2138

Mensagempor racerxdl » 04 Dez 2007 15:57

Bom pessoal, jah vo falando logo de começo, to começando com os ARM mesmo, eu to vindo dos PIC (serie 16 programada em C), e agora to afim de pegar algo mais complexo.

Bom na base, eu baixei o Keil Trial mas to pensando em usar o GCC do linux mesmo. Mas a minha pergunta não é relacionada ao software, e sim ao hardware.

Eu reparei no datasheet desse arm ai, que o mesmo pino tem uns 3 ou 5 funções diferentes. Como isso funciona? É selecionada pelo software ou pelo hardware?

Obrigado

Lucas Teske
racerxdl
Bit
 
Mensagens: 16
Registrado em: 20 Dez 2006 13:28

Re: Duvidas sobre o processador arm LPC2138

Mensagempor Rodrigo_P_A » 04 Dez 2007 17:18

Por soft, no seu soft.

Pinos com várias funçòes vc configura pelos Registros PINSEL0, PINSEL1, etc...
dá uma olhada no datasheet no registro PINSELx acho que vai te dar uma clareada
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor racerxdl » 04 Dez 2007 19:42

Então pelo que eu vi aqui eu posso setar os registradores para os IO serem apenas 16 Bits (ao invés dos 32) e usar os pinos restantes pra SPI dedicado, serial e tal?

Outra pergunta, estou tendo problema com o Keil, gostaria de saber como eu gero o arquivo hex no keil...

Obrigado...
racerxdl
Bit
 
Mensagens: 16
Registrado em: 20 Dez 2006 13:28

Mensagempor racerxdl » 04 Dez 2007 19:58

Ah, jah vi como gera o arquivo hex...

vlwss
racerxdl
Bit
 
Mensagens: 16
Registrado em: 20 Dez 2006 13:28

Mensagempor Rodrigo_P_A » 05 Dez 2007 07:20

racerxdl escreveu:Então pelo que eu vi aqui eu posso setar os registradores para os IO serem apenas 16 Bits (ao invés dos 32) e usar os pinos restantes pra SPI dedicado, serial e tal?

Outra pergunta, estou tendo problema com o Keil, gostaria de saber como eu gero o arquivo hex no keil...

Obrigado...


sim, é por aí mesmo. Dá pra "chavear a função do I/O"

seguinte cara, toma cuidado, pois:

tem portas que são Open Drain ( colocar resistor Pull Up para usar como saída )

tem portas que são só saída

tem portas que são só entrada

tem portas de uso exclusivo, por exemplo no 2148 as portas da USB só servem para a USB, etc....

faz o seguinte, qdo for desenhar um esquema, lê a parte que fala só das capacidade dos I/Os. depois que se fizer o esquema, se começa o soft.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor Renato » 18 Fev 2009 12:05

E dá para chavear dinamicamente, exemplo:
Inicializo um pino com EINTx, logo após uma Int comuto via PINSELx para
GPIO, depois volto para EINTx, ...

Isso é possível ou tem que ser estático ?
Renato
Byte
 
Mensagens: 224
Registrado em: 20 Out 2006 08:35

Mensagempor styg » 18 Fev 2009 14:47

é possivel sim, c muda a hora q quiser..
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor MarcusPonce » 19 Fev 2009 12:43

Oi Renato,
como o styg postou acima, se você colocar no programa para mudar então o ARM muda naquele instante. Aparentemente não existe nenhuma trava de hardware para terminar o que estiver fazendo e depois comutar. Por exemplo, se estiver transmitindo um byte pela serial vai cortar no meio.
O tempo aqui está curto, não pude trabalhar naqueles outros posts...
E também deveria ser possível ler o estado do pino mesmo com ele sendo EINT0, por exemplo, mas ainda não fiz este teste específico.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor Renato » 27 Fev 2009 14:13

Ponce:
O manual fala que USART e outros podem ser lidos no reg IOxPIN.
Exceto para AD.
Mas não é explícito para o pino como EINTx.
Fiz alguns testes comutando PINSELx e acho (não muito certo) que dá
para ler depois de comutado de EINTx para GPIO.
O que a princípio não parece o melhor método.
Renato
Byte
 
Mensagens: 224
Registrado em: 20 Out 2006 08:35

Mensagempor styg » 28 Fev 2009 11:35

olha soh, no caso dos EINTx, pra voce ler o estado do pino é obrigado a mudar no PINSELx a funçao do pino para GPIO (entrada).

da uma olhada nesse codigo aqui, que eu uso, uma rotina pra tratamento de int.

/*--------------------------------------------------------------------------------------------------
FUNCAO: PH370_KEY_1
DESCRICAO: INTERRUPÇÃO P/ EINT0 (TECLA 1)
--------------------------------------------------------------------------------------------------*/
void ph370_key_1(void) __irq
{
// limpa flag da EINT0
EXTINT = 0x01;
// da um delay para debounce
arm_delay_ms(DEBOUNCE_TIME);
// altera função da P0.16 para GPIO
PINSEL1 &= 0xFFFFFFFC;
// testa se tecla realmente esta apertada
if(!OK)
{
// da um bip (se estiver habilitado)
ph370_bip();
// atualiza flags referentes
zera(flags,(_volta|_cima|_baixo));
seta(flags,(_teclas|_ok));
}
// retorna função da P0.16 para EINT0
PINSEL1 |= 0x00000001;
VICVectAddr = 0xFFFFFFFF;
}
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.


Voltar para ARM

Quem está online

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

cron

x