Bibliotecas LPC

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Bibliotecas LPC

Mensagempor Pianta » 29 Jan 2008 13:46

Olá pessoal,
estou iniciando na parte de programação do lpc mais especificamente lpc2292, gostaria de saber se há disponível como no 8051 por exemplo um asm51 que define as portas e registradores ao invés de usarmos os endereços hexadecimais? Como um biblioteca include lpc2292.h por exemplo. Dei uma olhada e achei atraves de alguns programas exemplos catados na internet o pessoal usando include iolpc2138.h minha dúvida é onde posso achar essas definicoes para o 2292?
Pianta
Bit
 
Mensagens: 13
Registrado em: 14 Jan 2008 14:52
Localização: POA

Mensagempor alessandro » 29 Jan 2008 15:19

Acho que você terá que escrever um pequeno arquivo com suas definições de como quer chamar cada pino e seu respectivo endereço. Depois disso é colocar como include em seus projetos.

Agora se quer algo pronto, tem uma lib que vem junto com o kit que o Rodrigo PA vende de ARM. Talvez possa ser útil para você. Já usei e quebra um galho. Vou dar uma olhada se ainda tenho aqui.

Alessandro
Alessandro
Avatar do usuário
alessandro
Byte
 
Mensagens: 278
Registrado em: 12 Out 2006 19:32

Mensagempor barboza » 29 Jan 2008 15:32

Se quiser pode usar este da Keil.

http://www.keil.com/dd/docs/arm/philips/lpc22xx.h
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 Pianta » 30 Jan 2008 14:59

Valeu pelo link da keil com a include. Muito bom, mas tenho uma pergunta como reconhecer qual é o pino de GPIO? Por exemplo pego um ali do include lpc22xxx.h beleza, depois na placa uso um pino P1.21 qual o pino correspondente ao define da include lpc22xx.h?

Abri o include que mandaste o link, vi lá os general purpose input/output (GPIO), mas o primeiro como exemplo #define IOPIN0 qual porta ele está relacionada? Na verdade estou perguntando na teoria, eu teria como descobrir isso programando e simulando mas como nao estou nem programando ainda estou terminado meu hardware, então depois para facilitar e ter tudo que puder ter mastigado seria melhor.
Agradeço desde já pelos post.
Abraços
Pianta
Bit
 
Mensagens: 13
Registrado em: 14 Jan 2008 14:52
Localização: POA

Mensagempor barboza » 30 Jan 2008 15:11

Busque alguns exemplos no próprio site da Keil e/ou na NXP que tem exemplos com todos os periféricos de cada familia LPC.
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 xultz » 30 Jan 2008 18:28

Pianta, a manipulação de pinos nos LPC é ligeiramente diferente dos outros micros.
Você tem três registrados distintos para cada porta, sendo que o 22xx tem quatro portas de 32 bits cada (eu não sei exatamente quais destes bits representam qual IO porque eu nunca mexi com este modelo específico, eu só trabalhei com o 2106 e 2105). Uma rápida olhada no datasheet e você descobre qual bit manipula qual IO. Porém, várias GPIOs compartilham pinos com outras funções, como USART, I2C, etc.
Então primeiro você precisa configurar um determinado pino como GPIO para poder manipulá-la. Isso você faz colocando os bits certos nos registradores PINSELx (veja no datasheet qual bit colocar aonde para cada GPIO que for usar). Depois precisa configurar o registrador IODIRx para dizer se o pino é de saída ou entrada.
Feito isso, você pode mexer no pino. Para colocar o pino em nível alto, você deve escrever 1 no bit correspondente à GPIO no registrador IOSETx, e para colocá-lo em nível baixo, escreva 1 no bit correspondente no registrador IOCLRx. Porém, se quiser manipular escrevendo 1 para colocar em nível alto e 0 para nível baixo, use o registrador IOPINx.

Ficou claro?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor Pianta » 30 Jan 2008 18:56

xultz escreveu:Pianta, a manipulação de pinos nos LPC é ligeiramente diferente dos outros micros.
Você tem três registrados distintos para cada porta, sendo que o 22xx tem quatro portas de 32 bits cada (eu não sei exatamente quais destes bits representam qual IO porque eu nunca mexi com este modelo específico, eu só trabalhei com o 2106 e 2105). Uma rápida olhada no datasheet e você descobre qual bit manipula qual IO. Porém, várias GPIOs compartilham pinos com outras funções, como USART, I2C, etc.
Então primeiro você precisa configurar um determinado pino como GPIO para poder manipulá-la. Isso você faz colocando os bits certos nos registradores PINSELx (veja no datasheet qual bit colocar aonde para cada GPIO que for usar). Depois precisa configurar o registrador IODIRx para dizer se o pino é de saída ou entrada.
Feito isso, você pode mexer no pino. Para colocar o pino em nível alto, você deve escrever 1 no bit correspondente à GPIO no registrador IOSETx, e para colocá-lo em nível baixo, escreva 1 no bit correspondente no registrador IOCLRx. Porém, se quiser manipular escrevendo 1 para colocar em nível alto e 0 para nível baixo, use o registrador IOPINx.

Ficou claro?


Beleza ficou sim, mas estou partindo para a programação agora. Ainda estou saindo de uma plataforma até então não muito complexa como o 8051 e partindo para o ARM. Eu percebi hoje mesmo através do link do amigo que postou acima com as dicas do site da Keil e me esclareceu bastante coisa, também estou usando bibiografias que estão me ajudando também, mas nada como o forum e resposta diretas as dúvidas, muito obrigado Xultz. Qualquer dúvida postarei novamente.
Abraços.
Pianta
Bit
 
Mensagens: 13
Registrado em: 14 Jan 2008 14:52
Localização: POA

Mensagempor lrfad2 » 14 Fev 2008 08:38

Por acaso alguem teria pronta bibliotecas para tratamento e conversão de dados? Por exemplo
IntToStr -> converte um valor numérico em String
"Quem come de tudo, está sempre mastigando"
Avatar do usuário
lrfad2
Byte
 
Mensagens: 152
Registrado em: 19 Out 2006 17:35
Localização: São Paulo

Mensagempor barboza » 25 Mar 2008 00:27

De uma estudada nas bibliotecas do próprio C!
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 helton » 25 Mar 2008 07:42

exemplo de um led...

Código: Selecionar todos

#define LD1            16
#define LD1_OUTPUT      GPIO0_IODIR |= ( 1 << LD1 )
#define LD1_ON            GPIO0_IOSET = ( 1 << LD1 )
#define LD1_OFF            GPIO0_IOCLR = ( 1 << LD1 )




sobre strings IntToStr só no borland...

http://www.cplusplus.com/reference/clibrary/cstring/

no link acima, exemplos de funções em C para manipulação de strings...
[/url]
Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor xultz » 25 Mar 2008 08:58

Eu tenho por hábito o seguinte: imagine três IOs, na P0.1 um led, na P0.2 um relé, e na P0.3 um buzzer. Eu declaro
#define LED 0x00000002
#define RELE 0x00000004
#define BUZZER 0x00000008

Se eu quero ligar o led
IOSET = LED;

Se quero desligar o led
IOCLR = LED;

Se quero ligar o RELE e o Buzzer ao mesmo tempo
IOSET = BUZZER + RELE;

Eu acho que fica prático assim...
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba


Voltar para ARM

Quem está online

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

x