Compiladores

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Compiladores

Mensagempor valecovo » 08 Mai 2014 17:49

Olá
Sou novato nos PICs e as minhas dúvidas são mais que muitas.
Uma dúvida que me aflige é sobre os compiladores.
Por exemplo, para um programa em C há algum compilador que seja melhor do que outro ou o compilador, seja ele qual for, vai gerar sempre o mesmo código?????????

Se alguém me puder ajudar e recomendar um compilador para programas em C, agradeço.
José Silva
valecovo
Bit
 
Mensagens: 23
Registrado em: 13 Jan 2014 16:49

Re: Compiladores

Mensagempor andre_luis » 08 Mai 2014 19:27

José,


Para qualquer microcontrolador, um compilador terá uma performance diferente do outro, seja no tamanho do código, ou da velocidade, dependendo ainda do nível de otimização que estiver configurado.

Antes de responder, no seu caso, com qual compilador está trabalhando, e qual o seu nível de conhecimento da linguagem C ?



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Compiladores

Mensagempor ze2 » 12 Mai 2014 10:39

permiti-me opinar...
recomendo o mikroc para tua fase introdutória. a IDE é simpática e tem alguns facilitadores. (se bem que faz anos que não uso. de repente tá até melhor agora). Ele é grátis até alguns kb. Bom demais pra introdução no c (ui!). Com o tempo cogite usar o hitech-c. Este sim gera códigos otimizadíssimos chegando a ser com que se tivesse sido feito em assembly. Não é grátis mas tem versão demo (vá te reto!). Sua IDE é o mplab mesmo. Uma opção 100% free é o sdcc que pode também se plugado no mplab (se bem que fiz isso só uma vez e com relativo sucesso). Códigos um pouco maiores mas de graça queria o quê??
abç
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: Compiladores

Mensagempor valecovo » 15 Mai 2014 10:07

Olá

Estou a usar o PCWHD Versão 4.114 e o que me parece nas simulações é que o código fica muito lento. Ou seja, se simular programas encontrados na NET funcionam bem. Os feitos por mim, funcionam menos bem.
Por exemplo, na simulação com display de 7 segmentos fica muita lenta, isto dependendo também do PIC.

O seu nível de conhecimento da linguagem C não é muito bom, mas também não será mau. Digamos, abaixo de médio.

Obrigado aos dois.
valecovo
Bit
 
Mensagens: 23
Registrado em: 13 Jan 2014 16:49

Re: Compiladores

Mensagempor ze2 » 15 Mai 2014 11:19

dicas pra ficar menos lento: usar pullup ao invés de resistores nas chaves p.ex. Também não use resistores nos displays Ligue direto. (só na simulação, óbvio). Abra as propriedades do display, (leds, e cia) e opte por digital. Se não tiver clique em mostrar propriedades com texto (ou algo assim) e onde estiver analog digite digital. Não use o circuitos lógicos e transistores comerciais. Prefira os genéricos tipo npn, and, or, nand, diode, etc. Resumindo: evite o uso de analógicos quando vai brincar só com digitais. Opte por velocidade de clock reduzida do mc.
abç
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: Compiladores

Mensagempor andre_luis » 15 Mai 2014 19:02

valecovo escreveu:Por exemplo, na simulação com display de 7 segmentos fica muita lenta, isto dependendo também do PIC.


Faz uma busca no seu programa pelos comandos Delay, e tenta os otimizar, primeiramente reduzindo ao mínimo possivel. Depois, numa segunda etapa, procura implementar o Delay externamente, ao invéz de inline. Isso é o que o pessoal chama de "time slice" ou algo parecido, mas é para uma segunda faze...




+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Compiladores

Mensagempor leandroeng » 07 Jan 2015 14:25

Boa tarde,

Eu atualmente uso o compilador CCS e o Hitech C. Porém na hora que vou gravar no microcontrolador só grava o código que foi feito em CCS, o que foi feito em Hitech C chega a gravar só que não executa as funções. Testei no Proteus ambos os códigos e funcionam perfeitamente só que na hora de gravar dá este problema. Por exemplo:

Eu fiz um programa simples de piscar um led nos dois códigos. O que será que deve estar errado ou faltando? Seguem os códigos:

CCS:
cpp code
#include <16F877A.h>
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP,NOPROTECT
#use delay(clock = 20000000)

void main()
{
while(true)
{
output_high(PIN_D7);
delay_ms(500);
output_low(PIN_D7);
delay_ms(500);
}
}

Hitech C:
cpp code
#include <pic.h>
#include <htc.h>

#define _XTAL_FREQ 20000000

void main()
{
TRISD7 = 0x00;
while(1)
{
RD7 = 1;
__delay_ms(1000);
RD7 = 0;
__delay_ms(1000);
}
}
leandroeng
Bit
 
Mensagens: 34
Registrado em: 14 Mar 2011 12:44

Re: Compiladores

Mensagempor ze » 07 Jan 2015 15:22

está faltando a configuração dos fusíveis.
tipo assim
Código: Selecionar todos
__CONFIG(CP_All & FOSC_HS & PWRTE_ON & LVP_OFF & DEBUG_OFF & WDTE_OFF & BOREN_ON);

verifique no pic16f877a.h (acho) as corretas definições pois depende da versão do compilador!
também pode [re]definir na hora de gravar
e que tal

Código: Selecionar todos
while(1)
{
RD7 ^= 1;
__delay_ms(1000);
}
de nada
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: Compiladores

Mensagempor nagkiller » 07 Jan 2015 15:48

A base de tempo dos dois códigos são diferentes!!!
Um usa 1 segundo(1000ms) e outro usa meio segundo (500ms)!!!
Deixe os dois com mesmo valor de delay!!!

Na simulação no proteus, edite as propriedades do microcontrolador, e em Processor Clock Frequency coloque a frequencia correta, no caso, 20MHz

Flw...
Nagkiller
Avatar do usuário
nagkiller
Bit
 
Mensagens: 40
Registrado em: 21 Jul 2007 09:38

Re: Compiladores

Mensagempor andre_luis » 13 Jan 2015 12:25

É mesmo, e além disso não está especificado no segundo programa qual é exatamente a família do microcontrolador, mas apenas #include <pic.h> que suponho, pode abranger uma grande variadade de nucleos diferentes, como 16F, 18F, ...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Compiladores

Mensagempor nagkiller » 13 Jan 2015 13:01

Em hi-tech não se define o pic usado dessa maneira!!!
O PIC correto é identicado na hora de compilar na linha de comandos ou no projeto dentro do MPLAB.
E não precisa mais do #include <pic.h> para as versões mais novas do compilador hi-tech c.

E para funcionar na placa, tem que usar um resistor de 10k do VCC para o pino MRCLR do PIC e também o cristal.

Código Hi-tech c
Código: Selecionar todos
#include <htc.h>

__CONFIG ( FOSC_HS & WDTE_OFF & PWRTE_OFF & BOREN_OFF & LVP_OFF );

 #define _XTAL_FREQ 20000000

void main()
{
   TRISD = 0;
   PORTD = 0;
   while(1)
   {
      RD7=1;
      __delay_ms(500);
      RD7=0;
      __delay_ms(500);
   }
}


E o cristal até 4MHz é usado o fuse XT, se for maior, utilize o fuse HS!!!

Codigo CCS C
Código: Selecionar todos
#include <16F877A.h>

#fuses HS, NOWDT, NOPUT, NOBROWNOUT, NOLVP

#use delay(crystal=20000000)

void main()
{
   SET_TRIS_D(0x00);
   OUTPUT_D(0x00);
   while(TRUE)
   {
      output_high(PIN_D7);
      delay_ms(500);
      output_low(PIN_D7);
      delay_ms(500);
   }
}


Agora sim temos dois códigos iguais... funcionando da mesma forma.

Codigo MikroC:
Código: Selecionar todos
void main()
{
   TRISD = 0;
   PORTD = 0;
   while(1)
   {
      PORTD.F7=1;
      delay_ms(500);
      PORTD.F7=0;
      delay_ms(500);
   }
}

Para definir os fuses, utilize CTRL + SHIFT + E ou menu Project / Edit Project.

Os códigos HEX tiveram diferenças, mas todos funcionaram normalmente.

Hitech PRO 8.93 (código otimizado):
Código: Selecionar todos
:060000000A128A11D72F3D
:100FAE0083010A128A11DB2F8316880183128801AE
:100FBE00831203130D308817F200AF30F100C130E9
:100FCE00F000F00BE82FF10BE82FF20BE82F640086
:100FDE00831203130D308813F200AF30F100C130CD
:100FEE00F000F00BF82FF10BF82FF20BF82F640036
:020FFE00DF2FE3
:02400E003AFF77
:00000001FF



CCS C Compiler 5.025 (PCWHD):
Código: Selecionar todos
:1000000000308A0018280000223084008313000882
:10001000031917280630F800F701F70B0D28F80B25
:100020000C287B30F700F70B1328800B0A280800F8
:1000300003081F39830083161F149F141F159F1177
:1000400007309C00831300308800880183128801E8
:1000500083168813831288170230A100FA30A20099
:100060000420A10B2E2883168813831288130230D4
:10007000A100FA30A2000420A10B3928282863002F
:02400E003A3F37
:00000001FF
;PIC16F877A
;CRC=7C7F  CREATED="13-jan-15 21:54"



mikroC PRO for PIC 6.5.0
Código: Selecionar todos
:020000001628C0
:0E0006008312031321088A00200882000800DC
:1000140003208A110A128000840AA00A0319A10A83
:08002400F003031D0A28080087
:10002C008316031388018312880188170D30FB0097
:10003C00AF30FC00B630FD00FD0B2228FC0B222853
:10004C00FB0B2228000088130D30FB00AF30FC00A6
:10005C00B630FD00FD0B3028FC0B3028FB0B302894
:06006C0000001B283828EB
:02400E000A2F77
:00000001FF



Flw...
Nagkiller
Avatar do usuário
nagkiller
Bit
 
Mensagens: 40
Registrado em: 21 Jul 2007 09:38


Voltar para PIC

Quem está online

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

x