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

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

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

Mensagempor MOR_AL » 18 Mar 2007 23:57

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
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor microeletronica » 19 Mar 2007 22:29

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!
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor microeletronica » 19 Mar 2007 22:30

Se o seu compilador C eh bom, nao vai ter muitas dificuldades em debugar seu programa.
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor Carlão » 20 Mar 2007 14:00

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.
Carlão
Bit
 
Mensagens: 28
Registrado em: 15 Dez 2006 17:40

Mensagempor MOR_AL » 20 Mar 2007 14:18

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
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor microeletronica » 20 Mar 2007 19:37

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...
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor MOR_AL » 20 Mar 2007 20:03

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
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Renie » 20 Mar 2007 22:03

Olá Mor_al,


Vá em no menu Debugger / Stimulus Controler, abrirá uma janela para
você "mexer" nos pinos do PIC.
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor microeletronica » 20 Mar 2007 22:27

é.. e tem tambem como emular Serial - 232...
Alem dos pinos, como disse Renie
Isso eu ja fiz..

[]s
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor MOR_AL » 21 Mar 2007 21:37

Caros Renie e microeletronica.

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

Grato pela colaboração.


MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ


Voltar para PIC

Quem está online

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

cron

x