FIOxPIN

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

FIOxPIN

Mensagempor abreu » 07 Dez 2010 08:17

Olá,

Estou tentando ler um bit ou o port inteiro do LPC2368. O kit utilizado é o MCB2300 junto com o Keil.
A seguir a configuração utilizada:

volatile unsigned long status_1 = 0;

FIO0DIR = 0x000000F0; /configura P0.4 .. P0.7 como saidas

status_1 = FIO0PIN;

Para setar as saídas (P0.4..P0.7) estou utilizando FIOSET e FIO0CLR e está funcionado. Apenas não consigo ler uma ou todas as portas de entrada.
Se alguém tiver uma solução, agradeço

Obrigado,

Edson
abreu
 
Mensagens: 2
Registrado em: 06 Dez 2010 15:10

Mensagempor fabim » 07 Dez 2010 08:35

cara, você abilitou o Fast Port no PIN MASK ?

eu não uso FIOSET FIOCLR.

tipo,
SET P0.4 = IOPIN0 |= 1<<4;
CLR P0.4 = IOPIN0 &= ~(1<<4);

Na verdade a IDE não vai gera o hex pra rotacionar nada, ela vai simplesmente substituir 1<<4 por 0x00000010 e ~(1<<4) por 0xFFFFFFEF.

para você testar um pino, ele estando como entrada.

IODIR0 = 0x000000F0;

quer ler o bit 20 ?

if(!IOPIN0 & 1<<20)// Se pino ==0
printf("Bt Precionado /0 /N");
else
printf("Bt no Precionado /0 /N");

Você deve ter em mente, que não são todas as portas que possuem o Fast port, e para usar o fast port, você deve abilitar isto, pois por default é IO.

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

FIOxPIN

Mensagempor abreu » 13 Jan 2011 10:14

Realmente vc tem razão. Eu configurei para FAST e então consegui ativar os pinos pelo debug.
Apenas não consegui o mesmo resultado pelo modo default, quero dizer, eu configurei pelo modo IODIR e não consegui setar algumas portas. No exemplo a seguir, não consigo setar a porta P0.6 e P0.7 sendo que no modo FAST eu consigo. Segue programa com o comentario entre parenteses.

/* Funcao de inicializacao das portas */
void PORTS_Init(void) {
// SCS &= ~0x00000001;
// SCS |= 0x00000001; // GPIOM = 1 : Want to use fast I/O
// FIO0DIR = 0x000003C0;
PINSEL0 = 0x00000000; /* funcionalidade padrao dos pinos como I/O */
IODIR0 = 0x000003C0; /* P0.6, P0.7, P0.8 e P0.9 como saidas 000003C0*/
}

int main (void) {

PORTS_Init(); /* inicializa as portas */

IOPIN0 |= 1<<6; (porta não setada)
IOPIN0 |= 1<<7; (porta não setada)
IOPIN0 |= 1<<8; (porta setada)

// IOSET0 = 0x00000040; /* aciona saida P0.6 */ (não funciona)
// IOSET0 = 0x00000080; /* aciona saida P0.7 */ (não funciona)
// IOSET0 = 0x00000100; /* aciona saida P0.8 */ (porta setada)
// IOSET0 = 0x00000200; /* aciona saida P0.9 */ (porta setada)

While (1)
{
}
}
abreu
 
Mensagens: 2
Registrado em: 06 Dez 2010 15:10


Voltar para ARM

Quem está online

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

x