Página 1 de 1

Compialdor CCS x Microchip C18

MensagemEnviado: 19 Out 2006 21:23
por Bardelli
Ola all

Nossa, estou com uma tremenda duvida. Sempre utilizei o compilador C da CCS o qual acho muito facil de usar. No entanto estou achando muito interessante, as bibliotecas prontas da microchip para alguns recursos do PIC porem estas sao escritas no compilador C18.

Ao tentar usar esse compilador tive a pequena nocao que ele e' meio cru, ou seja, eu tenho que escrever um turbilhao de linhas para conseguir fazer o pic executar uma determinada funcao. Por exemplo, ele nao possui uma funcao delay_ms() ou output_high(pino tal).

Alguem sabe uma forma de humanizar um poucp mais esse compilador C18?

abracos

Re: Compialdor CCS x Microchip C18

MensagemEnviado: 20 Out 2006 07:41
por andre_luis
A vantagem do CCS sobre varios outros compiladores poderosos ( como o IAR para PIC, por exemplo ), é justamente o fato de ele possuir essas API's prontas para trabalhar com os recursos de HW do chip.

Será que no site da Microchip não teria essas bibiotecas ?

+++

MensagemEnviado: 20 Out 2006 07:56
por Fábio Pereira
Pois é,

Na verdade, a maioria destas funções prontas do CCS estão implementadas no próprio compilador, como funções intrínsecas e não em bibliotecas.

Este é realmente um dos destaques do CCS.

Se você quiser utilizar funções como estas em outros compiladores (como o C18), terá de escrever a mão todas estas funções.

Até +

MensagemEnviado: 20 Out 2006 08:39
por lmdmendes
Não forma de criar uma biblioteca com essas funções mais usuais que o CCS tem, para depois usar essa mesma biblioteca no C18? Para assim facilitar a vida?

MensagemEnviado: 20 Out 2006 09:40
por Fábio Pereira
Foi isso que eu disse, solução existe, mas nenhuma pronta (que eu saiba). O que você vai ter de fazer é criar a sua própria biblioteca.

Até +

MensagemEnviado: 21 Out 2006 12:01
por Fernando Guimarães Aguiar
Um ponto positivo do C18 é a otimização! (já que é da Microchip)

E tal como o Fabio disse, não tem bibliotecas prontas [delay_ms, ...], terá de escrever a mão, mas pela experiência que eu estou tendo, vale a pena!

PS.: Comecei a programar em C no CCS e dpois de dois anos migrei para o C18 em virtude de bibliotecas prontas no C18 para comunicação CAN, com filas, buffer, etc., que eram bem mais eficites que no CCS. Achei que valeu a pena a mudança!

É isso aí...

MensagemEnviado: 21 Out 2006 12:35
por a.rairan
Eu prefiro 1000 vezes o C18...

Ele tem todas as funções padrão ANSI, ponteiros para estruturas, RAM, ROM, otimização é boa (o IAR ganha fácil) as bibliotecas eu não costumo usar, mas facilitam um pouco também...

O CCS gera muito código inútil, e já vi erros de compilação grave!

O C18 permite programação em módulos, coisa que o CCS até permite, mas não bem em módulos, é um alinhamento...

MensagemEnviado: 21 Out 2006 13:30
por lmdmendes
Rairan, sei que gostas de fazer tudo a unha, mas mesmo assim eu acho e algumas coisas podem já estar feitas em bibliotecas simplificando assim a vida na realização de um projecto, no caso do C18 que e o q vou ter q usar, eu vou tentar criar algumas bibliotecas para simplificar a vida.

No caso da bibliotecas do C18, a MicroChip fornece mais alguma biblioteca sem ser aquelas que vem no mcc18 quando o instalamos?

Pergunta

MensagemEnviado: 31 Out 2006 10:13
por mega.rod
Por favor, me ajudem....

Presciso saber como usar o regitrador TRISA E TRISB...
ex: TRISA=0b10101010;

Este axempo abaixo esta correto ?

cpp code
#define led RA4
TRISA=0b10101010; // ?? não sei como corfigurar este registrador como
// entrade e nem como saida

void main()
{
while(1)
{
led=!led;
delay_ms(500);
}
}


Presciso deste programa apenas para piscas este bendito léd...

Obrigado e aguardo retorno de quem puder me ajdar o mais breve possivel....

Rodrigo Trainotti
msn: engenharia@dytec.com.br
Web: http://www.dhay.com.br

MensagemEnviado: 03 Nov 2006 02:08
por a.rairan
Você tem que configurar em hexa...

acho que o C18 permite configurar em binário, mas os outros compiladores não


No seu caso ficaria TRISA = 0xAA

1 é entrada
0 é saída

MensagemEnviado: 03 Nov 2006 09:27
por lrfad2
eu mexi muito pouco com o compilador da CCS. Se não me engano esses macros em C, Trisa e trisb, não funcionam muito bem... para garantir, escreva essa função em Assembly.
Como o a.rairan havia falado 1 - entrada, 0 -saída

MensagemEnviado: 03 Nov 2006 09:31
por Fábio Pereira
Estes comandos não são macros e funcionam muito bem sim.

Até +

MensagemEnviado: 03 Nov 2006 09:43
por andre_luis
Poisé...um problema recorrente nesse fórum a respeito do CCS é relacionado justamente ao TRIS, muita jente desconheçe o bendito padrao de acesso aos pinos do CCS, que re-configura o TRIS toda vez que uma porta é acionada...

Reeeeeeeespost..!!

MensagemEnviado: 03 Nov 2006 13:02
por mega.rod
Pessual...

Muito obrigado ajuda neste tópico e por isso estou postando uma exemplo um simples pra quem estiver comessando como eu...Tudo bem explicadinho e detalhado....
Assim como fui muito ajudado aqui, terei o maior prazer em ajudar em tudo que estiver ao meu alcance...

cpp code
#include <16f628A.h>                  // microcontrolador utilizado 
#fuses INTRC_IO,NOWDT,PUT,PROTECT,BROWNOUT,NOLVP,NOMCLR // configuração dos fusíveis
#use delay(clock=4000000) //clock de 4 Mz
#use rs232(baud=19200, xmit=PIN_b4,rcv=PIN_b5) //Conf. RS232

#use fast_io(a)
#use fast_io(b)

#byte porta = 0x05
#byte portb = 0x06

#bit botao= porta.0 //Nomeação do bit (RA0)
#bit led = porta.1 //Nomeação do bit (RA1)

void ini()
{
set_tris_a(0b11111101); //Na ordem:RA7,RA6,RA5,RA4,RA3,RA2,RA1,RA0
set_tris_b(0b11111111); //Na ordem:RB7,RB6,RB5,RB4,RB3,RB2,RB1,RB0

porta=0x00; // limpa porta
portb=0x00; // limpa portb
}

void main()
{
ini(); //Chama a função ""ini();"" logo acima para inicializar as IOs
while(1) // rotina principal ( loop )
{
if(!botao) //Aguarda o Botão ficar em estado "0" para proceguir
{
led=1; //liga o léd
delay_ms(150); //aguarda 3 Ms
led=0; //desliga o léd
delay_ms(150); //aguarda 3 MS
}
}
}


Abraços....T+