Página 1 de 1

Simulação MPLAB CCS e MikroBasic - Facilidades e dificuldase

MensagemEnviado: 18 Mar 2007 23:57
por MOR_AL
Caros colegas do fórum.

Fiz um programa para identificar uma tecla pressionada em um teclado matricial com 4 linhas e 3 colunas, tentando retirar o “bouncing” das teclas. Fiz o mesmo programa em assembler, C e MikroBasic.

A programação em assembler (possuo bom conhecimento) levou 20 unidades de tempo (UT).
A programação em C (CCS) (possuo conhecimento um pouco além do trivial) levou 4 UT.
A programação em Basic (MikroBasic) (possuo conhecimento um pouco além do trivial) levou 2 UT.

O programa principal é simplesmente um loop aguardando uma interrupção (no caso da mudança de estado no portB). Quando tentei simular o programa (precisaria saber o que acontecia com algumas variáveis, tanto das GPR como das SFR) começaram os problemas:

1 – Com o programa em assembler, usei o MPLAB. Não sei como alterar algum bit durante o debugg (caso seja possível), dentre as entradas RB4 a RB7, para que a simulação “entre” na interrupção.

2 - Com o programa em C, acredito que somente com o ICD dedicado, seja possível verificar no CCS.

3 - Com o mesmo programa em C, usando o MPLAB, recaio na dúvida do item 1.

4 – Com o mesmo programa em C, usando o Proteus, não sei se é possível “observar as variáveis GPR e SFR”, nem se é possível gerar um “bouncing” nas teclas.

5 – Com o programa em MikroBasic foi possível simular a interrupção, porém não é possível introduzir o “bouncing”.

Em termos práticos, e dentro das minhas limitações, concluo:

1 – Programar em assembler somente em casos extremamente necessários, e mesmo assim deveriam se restringir a blocos dentro de programas escritos em C ou em MikroBasic.

2 – A linguagem C é poderosa, rica em possibilidades, porém exigente nos detalhes. Encontra-se dificuldades na simulação do programa.

3 – A linguagem MikroBasic (da Mikroelektronika) é bem fácil de aprender, não é tão exigente nos detalhes como a linguagem C, possui um debbuger dedicado excelente e imediato de manipular e possui acesso à interrupção.

No ponto em que me encontro, minha tendência seria migrar para o MikroBasic pelas facilidades encontradas no software, além de possuir rica biblioteca. O único detalhe é que não se tem acesso ao seu interior. São “caixas pretas”. Como meus conhecimentos em C e Basic são equivalentes (um pouco além do trivial), gostaria da opinião dos colegas, no sentido de acrescentar alguma informação, tanto corretiva em relação ao exposto, como sugestiva a respeito do assunto.

MOR_AL

MensagemEnviado: 19 Mar 2007 22:29
por microeletronica
Utilize C.

Aprendi C com PIC pro CCS.
Nao tive dificuldades, depois de ler o PDF de bibliotecas do C18 pra migrar pra ele.

Posteriormente, utilizei o GCC, pro MSP430.

Aprendi em seguida LPC2XXX, com o IAR, C Ansi tambem...

Com o mesmo C, as mesmas coisas, utilizei com o STR7XX...

Depois apliquei meus conhecimentos de C pra processadores maiores...

Todos os micros tem problemas, dificuldades... e facilidades... Mas a maior facilidade de todas eh que em todos eu precisava saber sua arquitetura e a linguagem C (muitas vezes, esquecia ate mesmo da arquitetura.... uma vez que o projeto era grande demias e exigia muitos algoritimos.)

Eu voto no C!
E tenho argumentos contra todos os outros... No entanto eh importantissimo ter o conhecimento do dessambly sempre!

MensagemEnviado: 19 Mar 2007 22:30
por microeletronica
Se o seu compilador C eh bom, nao vai ter muitas dificuldades em debugar seu programa.

MensagemEnviado: 20 Mar 2007 14:00
por Carlão
No forum: www.sonsivri.com/forum tem alguns comentários sobre esses compiladores. Segundo alguém escreveu lá, os compiladores da Mikroelektronika têm um número de "bugs" acima do normal. Talvez pelo fato de eles, fazerem vários modelos (basic, C, Pascal, para PIC, DsPIC e AVR), ao invés de concentrarem esforços em um compilador só (ou numa linguagem só).
Enfim, nunca usei o MikroBasic, mas naquele fórum tem diversos comentários sobre o assunto.

MensagemEnviado: 20 Mar 2007 14:18
por MOR_AL
microeletronica. Interessante a sua colocação.

Como você debugga o programa em C com interrupções?
O MPLAB permite alteração das variáveis em tempo de debugg?

Carlão. Vou pesquisar no fórum apresentado. Como eu informei, pude debuggar, no MikroBasic, um programa com interrupção e alterar o valor das variáveis em tempo de debugg. Os problemas que encontrei até agora foram insignificantes, nada que impedisse de funcionar.

MOR_AL

MensagemEnviado: 20 Mar 2007 19:37
por microeletronica
Voce debuga normalmente com interrupcoes....
Por favoir, seja mais especifico porque nao entendi.,. heheheheh

O MPLAB permite alteração das variáveis em tempo de debugg?

Nao me lembro se no ICE conseguia... Acho que sim, faz um tempo que nao mexo com ele... mas dah uma busquinha na net e vc consegue achar esta resposta... No ICD2 nao dava... E dava uns paus de fechar na cara da gente...
Utilizava apenas pra colocar breakpoints e tal...
Soh pra ver as variaveis...

Sempre gostei de verificar bem o codigo...
O debug deixava em segundo plano (Gosto do disassembly ... hehehehhe)

No Jtag com MSP430XXX, STR7XX e LPC2XXX funcionava o debug + alteracoes e tal em tempo de debug...

MensagemEnviado: 20 Mar 2007 20:03
por MOR_AL
microeletronica.

Minha dúvida é a seguinte:
1 - No MPLAB, compilo o programa, e seleciono o MPLAB SIM como ferramenta de simulação.
2 - Aparecem os ícones de debuggação (Run, Halt, Animate, Step Into, Step Over, Step Out e Reset).
3 - Meu programa possui um loop infinito, que aguarda por uma interrupção. Quando ocorrer alteração de estado lógico em um dos pinos do PIC (pinos RB4 a RB7), o programa desvia para o endereço de tratamento de interrupção.
4 - Inicio o debugg clicando no Step Into, até que a próxima instrução a ser realizada esteja dentro do loop infinito.
5 - Neste caso, desejo alterar o estado lógico de um dos pinos (RB4, RB5, RB6 ou RB7) para que o programa desvie para o endereço de tratamento de interrupção.
6 - Pergunto. Existe a possibilidade de eu alterar o estado de um destes pinos, para que o programa desvie e eu possa saber o que está acontecendo dentro da rotina de interrupção?

MOR_AL

MensagemEnviado: 20 Mar 2007 22:03
por Renie
Olá Mor_al,


Vá em no menu Debugger / Stimulus Controler, abrirá uma janela para
você "mexer" nos pinos do PIC.

MensagemEnviado: 20 Mar 2007 22:27
por microeletronica
é.. e tem tambem como emular Serial - 232...
Alem dos pinos, como disse Renie
Isso eu ja fiz..

[]s

MensagemEnviado: 21 Mar 2007 21:37
por MOR_AL
Caros Renie e microeletronica.

Estes detalhes eu não conhecia. Vou estudá-los.

Grato pela colaboração.


MOR_AL