Estrutura de Projeto usando CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Estrutura de Projeto usando CCS

Mensagempor sergioigel » 09 Ago 2013 11:32

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
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18

Re: Estrutura de Projeto usando CCS

Mensagempor RobL » 10 Ago 2013 14:49

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.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Estrutura de Projeto usando CCS

Mensagempor sergioigel » 12 Ago 2013 10:36

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....
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18

Re: Estrutura de Projeto usando CCS

Mensagempor RobL » 12 Ago 2013 10:57

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).
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Estrutura de Projeto usando CCS

Mensagempor sergioigel » 12 Ago 2013 11:49

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();
}
}
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18

Re: Estrutura de Projeto usando CCS

Mensagempor RobL » 12 Ago 2013 16:18

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.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: Estrutura de Projeto usando CCS

Mensagempor sergioigel » 13 Ago 2013 09:13

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‎ ]
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18

Re: Estrutura de Projeto usando CCS

Mensagempor itamar » 19 Ago 2013 13:27

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
itamar
Nibble
 
Mensagens: 61
Registrado em: 24 Dez 2010 10:21

Re: Estrutura de Projeto usando CCS

Mensagempor sergioigel » 20 Ago 2013 11:18

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
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18

Re: Estrutura de Projeto usando CCS

Mensagempor r0n4ld0l1n5 » 20 Ago 2013 12:19

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
r0n4ld0l1n5
Bit
 
Mensagens: 25
Registrado em: 26 Mar 2013 14:30

Re: Estrutura de Projeto usando CCS

Mensagempor sergioigel » 20 Ago 2013 16:17

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 ?
sergioigel
Bit
 
Mensagens: 30
Registrado em: 09 Ago 2013 11:18


Voltar para PIC

Quem está online

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

x