Página 1 de 1

Ajuda para iniciante, código e LPC1343

MensagemEnviado: 23 Fev 2011 18:28
por lukkasm
Boa tarde a todos, a algum tempo venho acompanhado esse fórum e me dediquei primeiramente a aprender PIC, bom isso foi a 3 anos atrás, agora de 4 meses pra cá estou estudando ARM mais especificamente o Cortex-M3 o LPC1343 da NXP, comprei um kit (LPCXpresso) e estudei os códigos exemplos mas sempre surge dúvidas, e não sei se começei certo assim, vi em um tópico antigo que o Fabim (corrigem-me se tiver enganado) indicou um livro "ARM System Developer's Guide", gostaria de saber se este livro é o ideal para alguém que não tem a minima ideia de como programar ARM?

Se puderem me ajudar, dando sugestões, críticas, enfim qualquer ajuda é bem vinda

Sei que é chato tópicos desse tipo, mas quem puder me ajudar será recompensado

Lucas Roberto,

MensagemEnviado: 23 Fev 2011 19:08
por fabim
Nego véio.

ARM é exatamente igual a pic...

Não tem diferença nenhuma...

Se você sabe programar em C no pic, vai se sair bem e sem dificuldades no arm.

No pic, para escrever em uma porta voce.
Seta direção primeiro, e depois escreve 1 ou 0 certo ?

Divinha como é no arm ?!

No arm nxp funciona assim.

A maioria dos pinos tem até 4 funções, e para isto você precisa escolher como vai funcionar o pino.
Vai ser porta ? Vai ser um TX ? um etx ou etc e tal ?

Bom, por default a maioria dos pinos é reset em io, e somente algumas com função especial.

Depois de escolhido o que vai ser aquele pino no PINSEL, tu vai configurar a direção do pino no IODIR é ao contrario do pic... 0 in e 1 out.

Seguinte. no pic voce consegue fazer o bitwise, ou seja setar um bit apenas sem fuçar nos outros bits. No arm isto não é possivel.

Você age de duas formas possiveis para portas.
Toda porta tem dois registradores.
Cada registrador vai para uma ponta de um flip flop SR.

Suponha que voce quer setar o bit 8 da porta zero.

IOSET0 = 1<<8; o mesmo que 0x00000100;

Agora tu quer zerar o pino de saida.

IOCLR0 = 1<<8; o mesmo que 0x00000100;

Lembrando que um flip flop SR, se voce der um pulso no SET E zerar ele a saida é um, e só vai a zero se der um pulso no Reset.
Sempre na borda de subida do pulso..

Dessa forma voce mexe só naquele bit que te interessa sem mexer nos outros ao lado.

Existem outras formas, mais não vem ao caso.

Bom o mais importante é se comunicar com o mundo real, e voce aprendeu como agora!!!!

Agora seguinte.
Diferente de um pic que alimentou, ele ja começa a oscilar com o pll setado para X frequencia, o arm não é bem assim.
Existe um arquivo chamado startup.s.

Quando o arm é iniciado, a primeira coisa que ele faz é cair neste arquivo. Este arquivo é responsavel por configurar portas, zerar a ram, configurar o memap, e primeiro de tudo configurar o pll para que a cpu rode na frequencia que te interessa.
Pegue um exemplo no site da nxp para o keil para este processador. Abra o exemplo, ache o startups.s, clique duas vezes.
Vai abrir o fonte na janela principal. Olhe embaixo do fonte em ASM vai estar escrito wizard.
Neste wizard tu através de chekbox confitura o arm inteirim...


Continua .....

MensagemEnviado: 24 Fev 2011 12:08
por lukkasm
Muito obrigado Fabim

Era isso mesmo que precisava, já baixei o keil e to pegando exemplos para estudar, no momento estou evoluindo graças as suas dicas, tinha lido muita coisa a respeito mas nada falava sobre essas coisas basicas que para quem ta iniciando é um grande problema, agora tó vendo sobre o PLL, sobre o startup eu já sabia alguma coisa, pois tinha pego um livro que falava sobre isso que era do Fabio Pereira sobre arquitetura ARM.

Fabim caso tenha tempo disponivel nem que seja 10 min ou caso tenha apostilas sobre essas coisas basicas mas basicas mesmos, serve até para fazer um led piscar! (foi assim que começei com PIC kkkkk), posso lhe pagar me faça um valor e vejo se está ao meu alcançe é claro.

Muito obrigado mesmo pela ajuda

MensagemEnviado: 24 Fev 2011 15:53
por proex
"" ARM é exatamente igual a pic... não tem diferença nenhuma... ""

Estão vendo?

Esse é o mal que o ***** faz aos jovens !

O cara fica se drogando no banheiro da empresa a manha toda e depois entra no forum pra escrever essas coisas alucinantes. :lol: :lol:

MensagemEnviado: 24 Set 2011 14:17
por eng.viniciuspais
Código: Selecionar todos
IOSET0 = 1<<8; o mesmo que 0x00000100;
IOCLR0 = 1<<8; o mesmo que 0x00000100;

Essa linguagem é ANSI C? Alguem pode me indicar referencias bibliográficas sobre esta linguagem, pois eu nunca tinha visto ela. Sou bom em Assembly, e razoavel em C e C++, eu utilizava o mikroC for PIC para programar e não é nada parecido com essa linguagem, exceto os laços.

Baixei os ANs e o Manual do LPC1768,porem eles tem ênfase no hardware e software, não tem nada sobre a linguagem.

Ajuda por favor.

Se você sabe programar em C no pic, vai se sair bem e sem dificuldades no arm.

Truco!!! :shock:

MensagemEnviado: 24 Set 2011 14:57
por Red Neck Guy
eng.viniciuspais escreveu:
Código: Selecionar todos
IOSET0 = 1<<8; o mesmo que 0x00000100;
IOCLR0 = 1<<8; o mesmo que 0x00000100;

Essa linguagem é ANSI C? Alguem pode me indicar referencias bibliográficas sobre esta linguagem, pois eu nunca tinha visto ela. Sou bom em Assembly, e razoavel em C e C++, eu utilizava o mikroC for PIC para programar e não é nada parecido com essa linguagem, exceto os laços.

Baixei os ANs e o Manual do LPC1768,porem eles tem ênfase no hardware e software, não tem nada sobre a linguagem.

Ajuda por favor.

Se você sabe programar em C no pic, vai se sair bem e sem dificuldades no arm.

Truco!!! :shock:



IOSET0 e IOCLR0 são identificadores, sendo assim, poderiam ter qualquer nome - claro que respeitando os critérios do C/C++.

E no presente caso, está apenas sendo atribuído o número 1 shiftado 8 vezes para a esquerda... Os operadores << e >> são descritos em muitos dos textos sobre linguagem C, e seu uso - pode-se dizer assim - é bem trivial em programas escritos com ela.

MensagemEnviado: 24 Set 2011 16:57
por RobL
O livro citado acima não é para cortex M3 e sim para os ARMs não Cortex. Deve ter sido indicado em outro contexto sobre ARMs.
O livro para cortex, inclusive M3 é o :
The Definitive Guide to the ARM Cortex-M3 do Joseph Yiu segunda edição.

Procure usar a versão maior que 4 para o LPCXpresso que já inclui a versão 2.0 do CMSIS. Faça seus projetos já com esta versão 2.0 do CMSIS.

A idéia genial da linguagem C (dentre outras) é tornar transparente a diferença entre CPUs. Mas no caso de microcontroladores, como PICs, AVRs, mesmo CM3, essa transparência fica um pouco opaca.
Por exemplo, para setar bits nos Cortex se utiliza uma região da memo chamada de bitband ( nada a ver com bitbang). Há uma região desta para a ram e outra para periféricos. Se você ler sobre isto, poderá não entender bem, numa primeira leitura, pois é exclusivo deste micro, penso, mas os arquivos de inicialização do CMSIS tornam isto transparente, já elegendo um valor de máscara e fazendo a "aritmética para o endereço" do bit que você quer ler ou setar.
É um processador bem diferente dos PICs, AVRs. Igual mesmo, só a linguagem de programação.
Entre um PIC e um Cortex já dá para perceber a diferença no tamanho do arquivo de inicialização, tem praticamente o tamanho da flash de um pic médio e sua complexidade é facilitada pelos arquivos CMSIS.
O que há de exatamente igual a um PIC e um CM3 e outros micros é que ao ligar todos vão iniciar a configuração dos registros que são fundamentais para seu funcionamento dentro do que se quer. Há outra identidade, Havard e Risc. Já outros ARMs são diferentes.
Uma novidade em micro deste porte é que os Cortex foram criados visando não ser necessário se escrever uma linha em Assembly. Tudo pode ser feito em C.