Página 1 de 1

Estrutura de Projeto usando CCS

MensagemEnviado: 09 Ago 2013 11:32
por sergioigel
Olá,
Usando o compilador CCS C Compiler 5.010 / MPLAB 8.91
Como usar vários arquivo *.c em um único projeto ?
Onde um arquivo por exemplo armazena a rotinas genéricas que são chamadas por outros arquivo ?
Se eu utilizo somente o main.c e não adiciono os outros arquivo ao projeto eu consigo compilar e executar o projeto mas caso ocorra um erro ao compilar, não consigo direcionar ao erro (ir para o erro ao clicar sobre ele - duplo-click sobre o erro na caixa Output)
se adiciono mais de um arquivo ao projeto começa uma confusão de informações redundantes e necessidade de adicionar #include em todos os arquivos e depois começa a dar redundancias e nada funciona.
grato se alguém me clarear como estruturar um projeto com vários arquivo *.c ou me mandar um exemplo, alguma luz....
Obrigado,
Sergio

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 10 Ago 2013 14:49
por RobL
Enquanto não aparecer um expert em CCS vou tentar lhe informar algo (não conheço CCS).

Normalmente as IDEs são similares e tem lá um local para você informar os arquivos .c do seu projeto.
O detalhe muito importante é que todo arquivo.c deve ter um correspondente .h no qual esteja, por exemplo, o protótipo das funções do seu arquivo .c , caso as funções não sejam estáticas (static).
Para evitar chamadas recursivas, seu arquivo .h deve iniciar com ifndef ... e terminar com endif:
Código: Selecionar todos
#ifndef  NOMEDOARQUIVO_H
#define NOMEDOARQUIVO_H

// variaveis externas etc
//prototipos

#endif


Em cada arquivo .c deve incluir o .h correspondente.
Por exemplo: tenho um arquivo.c e o correspondente arquivo.h :
No arquivo .c tenho que incluir o .h

Código: Selecionar todos
//Meu arquivo.c
//inicia com a inclusão do arquivo.h correspondente

#include arquivo.h

//variaveis, prototipo static, etc

//codigo do arquivo.c



Daí é só informar no projeto quais os arquivos.c que fazem parte dele.

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 12 Ago 2013 10:36
por sergioigel
Obrigado pela ajuda Rob,
Para gerar um arquivo.h eu preciso compilar o arquivo.c e como meu projeto somente tem o main.c ele somente gera o main.h e desta forma não tenho os outros arquivo.h. Então esta solução não funciona no meu caso.
mesmo assim agradeço a tentativa e fico no aguardo de alguma outra resposta, caso exista....

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 12 Ago 2013 10:57
por RobL
Para gerar um arquivo.h eu preciso compilar o arquivo.c


Não. O arquivo.h não é gerado pelo compilador e sim por você, da mesma forma que o arquivo.c com as funções.

Suponha que você crie umas funcões em um arquivo.c. Você também criou um arquivo.h, com um editor de texto qualquer (ou de sua IDE) e nele colocou os protótipos das funções, etc.

Quando em seu main(), chamar a função deste arquivo, tem que incluir o arquivo.c no seu projeto, lá na IDE do CCS.

O arquivo.h nem precisa existir. Trata-se apenas de por ordem, limpeza e padronização ao escrever em C.
O arquivo header (cabeçalho.h) é como se fosse um arquivo de "informação" vinculado ao seu arquivo.c.
Se cria vários arquivos.c, cada com funções específicas de certas áreas, para serem reutilizados em vários projetos. Em certos casos, é mais vantajoso, criar uma biblioteca (veja isto depois).

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 12 Ago 2013 11:49
por sergioigel
Rob, desculpe minha ignorancia mas nao entendi !
Voces teria um exemplo simples para me enviar para eu visualizar o que voce está falando na pratica ?
No meu caso está assim ó :UNICO ARQUIVO DO PROJETO É O main.c, os outros sao chamados pelo #INCLUDE PATH
ARQUIVO MAIN.C
#include "\assembler_c\bombac_7seg_v1.0\drivers\16F1829.H"
#include "\assembler_c\bombac_7seg_v1.0\functions\vars.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\check_dados.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\pisca.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\functions.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\config_inicial.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\calculos_bomba.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\chave_prog.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\tempos.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\interrupts.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\termistor.c"
void main() {
CONFIG_INICIAL();
while(true){
T_5Seg_WDT=0;// WDT_WDL();
CHAVE_PROG();
CHECK_DADOS();
TERMISTOR();
Setar_Portas();
}
}

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 12 Ago 2013 16:18
por RobL
Como usar vários arquivo *.c em um único projeto ?
Onde um arquivo por exemplo armazena a rotinas genéricas que são chamadas por outros arquivo ?


Talvez esteja confuso, pois pensei que fosse com relação a pergunta inicial. Lhe respondi para uso com qualquer IDE em C, mas penso que estás perguntando algo específico de um projeto pronto do CCS. Aí nada sei lhe informar.

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 13 Ago 2013 09:13
por sergioigel
sergioigel escreveu:Rob, desculpe minha ignorancia mas nao entendi !
Voces teria um exemplo simples para me enviar para eu visualizar o que voce está falando na pratica ?
No meu caso está assim ó :UNICO ARQUIVO DO PROJETO É O main.c, os outros sao chamados pelo #INCLUDE PATH
ARQUIVO MAIN.C
#include "\assembler_c\bombac_7seg_v1.0\drivers\16F1829.H"
#include "\assembler_c\bombac_7seg_v1.0\functions\vars.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\check_dados.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\pisca.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\functions.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\config_inicial.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\calculos_bomba.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\chave_prog.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\tempos.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\interrupts.c"
#include "\assembler_c\bombac_7seg_v1.0\functions\termistor.c"
void main() {
CONFIG_INICIAL();
while(true){
T_5Seg_WDT=0;// WDT_WDL();
CHAVE_PROG();
CHECK_DADOS();
TERMISTOR();
Setar_Portas();
}
}

[ COMO ADICIONAR ESTES ARQUIVOS AO MEU PROJETO PARA QUE AO COMPILAR, O COMPILADOR MOSTRE E APONTE PARA UM POSSIVEL ERRO QUE OCORRA ??? ...se simplesmente adiciona-los, gera erro de Recursividade‎ ]

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 19 Ago 2013 13:27
por itamar
Caro sergioigel, pelo pude verificar não tem nada de errado com seu código. Contudo, quando se programa um PIC deve-se levar em consideração a sua capacidade de realizar chamadas de uma dada função e retornar ao ponto de onde esta função foi chamada após o término de sua execução. Isso é determinado pela pilha(Stack). Se algumas das funções que você está inserindo com os "#include" fizerem referência a outras e outras... pode ser que ocorra um estouro da pilha (Stack Overflow) e o programa se perde. Para evitar isso o compilador impede que um código assim código seja compilado.

Se eu estivesse em seu lugar escreveria todo o código em um único arquivo

Espero ter ajudado

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 20 Ago 2013 11:18
por sergioigel
itamar escreveu:Caro sergioigel, pelo pude verificar não tem nada de errado com seu código. Contudo, quando se programa um PIC deve-se levar em consideração a sua capacidade de realizar chamadas de uma dada função e retornar ao ponto de onde esta função foi chamada após o término de sua execução. Isso é determinado pela pilha(Stack). Se algumas das funções que você está inserindo com os "#include" fizerem referência a outras e outras... pode ser que ocorra um estouro da pilha (Stack Overflow) e o programa se perde. Para evitar isso o compilador impede que um código assim código seja compilado.

Se eu estivesse em seu lugar escreveria todo o código em um único arquivo

Espero ter ajudado

Olá Itamar, como o projeto é grande, eu dividi ele em varios arquivos e ele funciona. nao acredito ser problema de "stack over flow"... pois eu compilo e gravo no pic e funciona tudo perfeitamente. o problema é só na hora do desenvolvimento, onde nao consigo adicionar todos os arquivos ao projeto (inserir mais de um arquivo *.c no projeot ), nao sei como fazer isso ? Este é o problema ! como falei assim uso o MPLAB + CCS5.010

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 20 Ago 2013 12:19
por r0n4ld0l1n5
E aí sergioigel...

Eu já tive esse problema usando o ccs+mplab e só consegui resolver isso de uma forma... parece q o ccs só aceita um arquivo.c no "Source Files"... então o q eu faço é o seguinte insiro os outros arquivos.c dentro dos Header Files (muito estranho, não é?!!!) ...

por exemplo:

http://www.4shared.com/zip/dZArAlG9/ccsteste.html?

Espero ter ajudado

Re: Estrutura de Projeto usando CCS

MensagemEnviado: 20 Ago 2013 16:17
por sergioigel
r0n4ld0l1n5 escreveu:E aí sergioigel...

Eu já tive esse problema usando o ccs+mplab e só consegui resolver isso de uma forma... parece q o ccs só aceita um arquivo.c no "Source Files"... então o q eu faço é o seguinte insiro os outros arquivos.c dentro dos Header Files (muito estranho, não é?!!!) ...

por exemplo:

http://www.4shared.com/zip/dZArAlG9/ccsteste.html?

Espero ter ajudado


Olá r0n4ld0l1n5, SENSSACIONAL sua dica e seu exemplo..... era isso mesmo o que eu estava precisando ! muito obrigado ! já converti meu projeto e já funcionou.... super 10 ! eu estava procurando esta dica a muito tempo e nao achava ou nao sabia como achar ou onde achar....

aproveitando que deu certo, se voce puder dar uma outra luz é muito bem vinda.....vale até um valor pela consultoria.....se quiser combinar me manda um email sergio@wdl.com.br ....
você saberia me exemplificar uma outra dica ?.... como delegar o desenvolvimento de projetos para funcionarios sem que eles tenham acesso a todos os arquivos ?
por exemplo para proteger informações ou o coração do projeto e nao permitir que copiem codigos ? eu criar arquivos do tipo objeto e abrir somente um arquivo onde seria desenvolvido a rotina e ele poder compilar ?