Migrando do CCS para MIKROC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor hemasc » 02 Fev 2010 18:30

sei lá qual seria melhor... mas aqui vai o site de ajuda do mikroc

http://www.mikroe.com/en/books/pic-books/mikroc/
hemasc
Nibble
 
Mensagens: 80
Registrado em: 26 Fev 2007 08:59
Localização: Campinas - SP

Mensagempor Vonnilmam » 03 Fev 2010 12:36

oi colega,

eu já tive muitas duvidas sobre qual compilador dedicar minha atenção para aprender!

depois de muito analizar achei mais interessante dedicar as atenções sobre o compilador da microchip porque o compilador é deles só por isso!

existe esse livro muito bom que explica bem esse compilador: microcontroladores pic18 linguagem C da editora érica,

Boa sorte,
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor barboza » 03 Fev 2010 15:47

geraldomelo escreveu:Então Fabim , testei isso tbm e nada ... caiu de 765 words para 750 , muito longe ainda dos 550 do ccs .. c lembrar de mais alguma dica , manda ai que eu testo aqui .... Pessoal , se tiverem algumas dicas tbm , fiquem à vontade .

abs

Geraldo


Bem, de PIC só entendo o programa de capitalização do Itau, mas vai um chute pois estamos falando de compiladores.

Como você usa divisão e multiplicação, a diferença pode estar nestas bibliotecas.

No Keil é possivel configurar o nível de otimização para performance ou tamanho de código, veja se tem isso no seu compilador também.

Avaliar um compilador só pelo tamanho de código ROM gerado não é o ideal e não serve como decisão para tudo.
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 fabim » 03 Fev 2010 16:03

Bom, qual a melhor IDE ?

Aquela que você se sinta muito bem, aquela que você usando a linguagem precise fazer menor quantidade de pergunta possivel em foruns, pois o help tem bastante SUSTÂNÇA. Aquela que deixe você ficar a vontade em poder fazer mesclagem de ASM e Alto nivel, aquela que você se sinta a vontade em criar makros em "no caso do C em ASNI"..

Se atingir todos os requisitos, é a melhor IDE.
SE pelo menos a maioria, ou se uma ou outra mais em proporção muito alta, tambem ta bom.

Sempre usei o MPLAB, depois o C18. Ai o mikroC, e estoy aque inté hoji com ei.. Flexivel, uma super e fodastica biblioteca de help, muito intuitivo, tem varias funções pra auxiliar no desenvolvimento, terminais seriais, ethernet, usb. conversores hex, asc, etc. pode debugar via software ou via hw com o picflash em C ou ASM, ou as duas janelas ao mesmo tempo. Tem um editor de EEprom a parte, com arquivo eeprom a parte. tem video eletrico, direção hidraulica, ar condicionado etc.. Sendo assim !!
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!!!?

Mensagempor vtrx » 03 Fev 2010 17:35

Avaliar um compilador só pelo tamanho de código ROM gerado não é o ideal e não serve como decisão para tudo

Acho que o melhor compilador é aquele que fica em frente do monitor pressionando as teclas.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor geraldomelo » 03 Fev 2010 17:43

já estava vendo mesmo esse livro pra comprar ...... bom , mas voltando ao mikroC , o problema eh que não estou falando em apenas algumas words a mais , mas de uma diferença muito grande .. um faz o serviço com 550 words , e o outro faz o mesmo serviço com 750 ?? eh muita coisa

abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor barboza » 03 Fev 2010 19:38

vtrx escreveu:
Avaliar um compilador só pelo tamanho de código ROM gerado não é o ideal e não serve como decisão para tudo

Acho que o melhor compilador é aquele que fica em frente do monitor pressionando as teclas.



Esse faz toda a diferença, e não importa o nível de otimização e linguagem utilizada. O problema é que é dificil achar bons.....
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 barboza » 03 Fev 2010 19:40

geraldomelo escreveu:já estava vendo mesmo esse livro pra comprar ...... bom , mas voltando ao mikroC , o problema eh que não estou falando em apenas algumas words a mais , mas de uma diferença muito grande .. um faz o serviço com 550 words , e o outro faz o mesmo serviço com 750 ?? eh muita coisa

abs

Geraldo



Experimenta comentar toda a função void separa_digitos(void) e recompilar nos dois compiladores e ver como fica.
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 geraldomelo » 04 Fev 2010 03:30

nada também ... por enquanto o CCS dá baile .... sem a função void separa_digito (void) , o ccs retornou um codigo com 440 words .. e o mikroC um codigo com 660 ... muito além ainda

abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor ze » 04 Fev 2010 08:41

Pic16f877a
Só pra humilhar...
Código: Selecionar todos
#include <pic.h>
unsigned char const num[10] = { 0b00111111, // número 0
0b00000110, // número 1
0b01011011, // número 2
0b01001111, // número 3
0b01100110, // número 4
0b01101101, // número 5
0b01111101, // número 6
0b00000111, // número 7
0b01111111, // número 8
0b01101111};
unsigned int valor1;
float f;
unsigned int unidade=0, dezena=0, centena=0, milhar=0;
void delay_ms(unsigned int dl) //crie a sua com + precisão.
{
while(dl--);
}
void escreve_display(void)
{
PORTB=num[unidade];
PORTA=2;
delay_ms(4);
PORTB=num[dezena];
PORTA=4;
delay_ms(4);
PORTB=num[centena];
PORTA=8;
delay_ms(4);
PORTB=num[milhar];
PORTA=16;
delay_ms(4);
}

/*
void separa_digitos(void)
{
unidade=valor1%10;
dezena=(valor1/10)%10;
centena=(valor1/100)%10;
milhar=(valor1/1000);
}
*/
unsigned int ADC_Read(unsigned char channel)
{
    ADCON0 = (channel << 3) + 0x81;     // enable ADC, fosc/32
    delay_ms(20);
    ADGO = 1;
    while(ADGO)
        continue;   // wait for conversion complete
    return ADRESH*256 + ADRESL;
}
void main() {
TRISA=1; // ra0 como entrada
TRISB=0; // todo portb como saida
PORTB=0; // iniciando porta todos em 0
PORTA=0; // iniciando portb
ADCON0=0b00000001; // liga AD do pic
ADCON1=0b00001110; // todas as entradas como digitais , menos ra0 .
delay_ms(100); // espera estabilizar o pic
while (1) {
valor1=ADC_Read(0)>>2;
//separa_digitos();
escreve_display();
f=valor1/1.12345;
}
}

Código: Selecionar todos
Summary:
    Program space        used   16Fh (   367) of  2000h words   (  4.5%)
    Data space           used    1Eh (    30) of   170h bytes   (  8.2%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     1h word    (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

Loaded C:\prj\bench\bench.cof.

********** Build successful! **********

Sem a conta do float...

Código: Selecionar todos
Summary:
    Program space        used    9Dh (   157) of  2000h words   (  1.9%)
    Data space           used    14h (    20) of   170h bytes   (  5.4%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     1h word    (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

Loaded C:\prj\bench\bench.cof.

********** Build successful! **********

obrigado.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Alesandro F Zagui » 04 Fev 2010 09:11

Não acho que o tamanho do codigo gerado depois de compilado seja tão importante assim. As vezes um codigo maior tem uma velocidade de execução maior. Exemplo em ASM:

Código: Selecionar todos
   MOVLW      .20
   CALL      SOMA_E_DIVIDE
   MOVWF      VALOR_CONTA_1
   MOVLW      .40
   CALL      SOMA_E_DIVIDE
   MOVWF      VALOR_CONTA_2
   MOVLW      .50
   CALL      SOMA_E_DIVIDE
   MOVWF      VALOR_CONTA_3
   MOVLW      .60
   CALL      SOMA_E_DIVIDE
   MOVWF      VALOR_CONTA_4

SOMA_E_DIVIDE:
   ADDLW      .10
   MOVWF      VAR_CONTA
   RRF         VAR_CONTA,W
   RETURN


Código: Selecionar todos
   MOVLW      .20
   ADDLW      .10
   MOVWF      VAR_CONTA
   RRF         VAR_CONTA,W
   MOVWF      VALOR_CONTA_1
   MOVLW      .40
   ADDLW      .10
   MOVWF      VAR_CONTA
   RRF         VAR_CONTA,W
   MOVWF      VALOR_CONTA_2
   MOVLW      .50
   ADDLW      .10
   MOVWF      VAR_CONTA
   RRF         VAR_CONTA,W
   MOVWF      VALOR_CONTA_3
   MOVLW      .60
   ADDLW      .10
   MOVWF      VAR_CONTA
   RRF         VAR_CONTA,W
   MOVWF      VALOR_CONTA_4


O primeiro codigo ocupara menos espaço da ROM mas o segundo tera uma velocidade de execução maior.

Agora você quem deve decidir o que é mais importante.
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor fabim » 04 Fev 2010 09:19

Ta preocupadinho com flash é ? hehe, como diria o putex.

Larga mão dessa m**** de pic, usa um ARM e o keil, e pronto PO%$#.
hehe.

Cara, assim.
Eu to la programando fazendo o negocio acontecer, e olhando tudo.

Quer ver uma coisa muito legal ? de o comando swapf no mikroC e no mikroPascal.
hehe

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!!!?

Mensagempor vtrx » 04 Fev 2010 11:29

Não acho que o tamanho do codigo gerado depois de compilado seja tão importante assim. As vezes um codigo maior tem uma velocidade de execução maior.

Neste caso alessandro,em ASM não faz diferença,mas em C faz pois o código gerado no seu exemplo em ASM é o código 'real' das instruções,mas a diferença de tamanho no código hex gerado no compilador MikroC para o CCs é a diferença de código ,talvez, desnecessário.Só analisando os 2 códigos hex gerado nesses compiladores em linguagem de máquina.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor ze » 04 Fev 2010 12:43

analisa aêw...
a saga continua...

o hex gerado

Código: Selecionar todos
:100000002030840032300A200A128A11DF2F0406C1
:100010008001840A0406031D072864000034820757
:100020003F3406345B344F3466346D347D340734EA
:040030007F346F3476
:100EFA00830130080319B103B003300A0319310A18
:100F0A00031908007D2F00308A0083120313260874
:100F1A000F208600023085000430B000B1010A12A9
:100F2A008A117D2700308A0022080F2086000430AB
:100F3A008500B000B1010A128A117D2700308A00AB
:100F4A0020080F208600083085000430B000B10167
:100F5A000A128A117D2700308A0024080F20860091
:100F6A00103085000430B000B1010A128A117D2FB9
:100F7A008301AD00AE000310AE0D0310AE0D0310D9
:100F8A002E0D813E9F001430B000B1017D271F1540
:100F9A001F19CD2F1E08AF00AE0183161E08FE00D2
:100FAA00FF01031383122E08FE070318FF0A2F08F6
:100FBA00FF07080001308316031385008601831298
:100FCA00860185019F000E3083169F0064308312CC
:100FDA00B000B1017D270030BD270310FF0CFE0CC5
:100FEA000310FF0CFE0C7E08A8007F08A9008827C2
:060FFA000A128A11F02F1B
:00000001FF


abç e пенис в ее задницу rs
Editado pela última vez por ze em 04 Fev 2010 20:16, em um total de 1 vez.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Alesandro F Zagui » 04 Fev 2010 13:17

Nao estou comparando ASM com C e nem falando em tempo de desenvolvimento, só mostrei dois codigos diferentes que fazem a mesma coisa com tamanhos diferentes e tempo gasto pelo nucleo do uC para executar cada um diferente.

Um ficou menor porem gasta mais tempo pra ser executado e o outro ficou maior mas se gasta menos tempo pra executar.
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

AnteriorPróximo

Voltar para PIC

Quem está online

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

cron

x