Compialdor CCS x Microchip C18

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Compialdor CCS x Microchip C18

Mensagempor Bardelli » 19 Out 2006 21:23

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
Bardelli
 

Re: Compialdor CCS x Microchip C18

Mensagempor andre_luis » 20 Out 2006 07:41

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 ?

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Fábio Pereira » 20 Out 2006 07:56

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é +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor lmdmendes » 20 Out 2006 08:39

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?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Fábio Pereira » 20 Out 2006 09:40

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é +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor Fernando Guimarães Aguiar » 21 Out 2006 12:01

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í...
Avatar do usuário
Fernando Guimarães Aguiar
Nibble
 
Mensagens: 53
Registrado em: 21 Out 2006 10:54
Localização: São Carlos

Mensagempor a.rairan » 21 Out 2006 12:35

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...
André "Away" Rairan
a.rairan
Byte
 
Mensagens: 192
Registrado em: 11 Out 2006 18:53
Localização: São Caetano do Sul - SP - Brasil

Mensagempor lmdmendes » 21 Out 2006 13:30

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?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Pergunta

Mensagempor mega.rod » 31 Out 2006 10:13

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
Avatar do usuário
mega.rod
Nibble
 
Mensagens: 83
Registrado em: 17 Out 2006 09:52

Mensagempor a.rairan » 03 Nov 2006 02:08

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
André "Away" Rairan
a.rairan
Byte
 
Mensagens: 192
Registrado em: 11 Out 2006 18:53
Localização: São Caetano do Sul - SP - Brasil

Mensagempor lrfad2 » 03 Nov 2006 09:27

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
Avatar do usuário
lrfad2
Byte
 
Mensagens: 152
Registrado em: 19 Out 2006 17:35
Localização: São Paulo

Mensagempor Fábio Pereira » 03 Nov 2006 09:31

Estes comandos não são macros e funcionam muito bem sim.

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor andre_luis » 03 Nov 2006 09:43

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...
"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

Reeeeeeeespost..!!

Mensagempor mega.rod » 03 Nov 2006 13:02

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+
Avatar do usuário
mega.rod
Nibble
 
Mensagens: 83
Registrado em: 17 Out 2006 09:52


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x