Migrando do CCS para o MPLAB C18

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Migrando do CCS para o MPLAB C18

Mensagempor jose emilio » 20 Jan 2011 12:19

Olá a todos, eu sou novo no forum, porém jah trabalho com eletrônica tem um tempo, estou terminando o curso de Eng. elétrica e estou trabalhando no meu projeto de conclusão de curso. Dada a complexidade do projeto, percebi (um pouco tarde até!) que o CCS estava mas atrapalhando do q ajudando, o programa que eu havia feito não era compilado direito e trava muito o micro.

Bem, no meu projeto eu utilizo um PIC18F2550, com cristal de 20Mhz. Minha duvida inicial é no driver do bootloader que eu havia feito baseado no tiny, gostaria de saber como migrar as funções #build e #ORG para o C18. Segue o programa:

#include <18F2550.h>
#device ADC=10
#use delay(clock=20000000)
#fuses HS,PLL5,NOLVP,VREGEN,NOWDT,NOPROTECT,NODEBUG,USBDIV,CPUDIV1


#build(reset=0x800)
#build(interrupt=0x808)
#org 0x0000,0x07ff
void BootL() {
#asm
nop
#endasm
}


Comecei a migrar o codigo essa semana, e ainda nao tenho muita experiência com C18, por isso postarei minhas duvidas aqui e serei muito grato toda e qualquer ajuda.
jose emilio
 
Mensagens: 3
Registrado em: 20 Jan 2011 00:07

Mensagempor rafadiogo » 20 Jan 2011 14:23

José,

Boa tarde

Não tenho o hábito de trabalhar com PIC utilizando bootloader. Porém à algum tempo fiz um curso do 18F4550 e usavamos o sistema de bootloader. Segue abaixo o código que utilizavamos lá, que tinha sido retirado do site da Microchip.
Segue também o redirecionamento para interrupções.
Tem também o arquivo de linker e o programa que usavamos para reconher o dispositivo.
Me passa seu e-mail que te encaminho os outros arquivos.

Espero ter ajudado


/** V E C T O R R E M A P P I N G ******************************************/
// Seção necessária para informar ao compilador C18 onde são os novos endereços
//da memória de programa que ele deve alocar as rotinas de tratamento do "reset"
//do microcontrolador e das rotinas de tratamento de interrupção.
//

// protótipo usado pelo compilador C18
extern void _startup (void); // See c018i.c in your C18 compiler dir

// Alocação da função de tratamento do "reset" da aplicação principal
// no endereço 0x800 da memória de programa
#pragma code REMAPPED_RESET_VECTOR = 0x000800
void _reset (void)
{
_asm goto _startup _endasm
}

// Alocação da função de tratamento das interrupções de ALTA prioridade
// no endereço 0x808 da memória de programa.
//
#pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = 0x000808
void _high_ISR (void)
{
_asm goto Tratamento_High_Interrupt _endasm
}

// Alocação da função de tratamento das interrupções de BAIXA prioridade
// no endereço 0x818 da memória de programa
#pragma code REMAPPED_LOW_INTERRUPT_VECTOR = 0x000818
void _low_ISR (void)
{
_asm goto Tratamento_Low_Interrupt _endasm
}

#pragma code // Diretiva que retorna a alocação dos endereços
// da memória de programa para seus valores padrão

/** F I M D A S E Ç Ã O D E V E C T O R R E M A P P I N G *************/
DROX Corp
rafadiogo
Bit
 
Mensagens: 6
Registrado em: 16 Jan 2007 13:33

Mensagempor jose emilio » 20 Jan 2011 16:41

rafadiogo escreveu:José,

Boa tarde

Não tenho o hábito de trabalhar com PIC utilizando bootloader. Porém à algum tempo fiz um curso do 18F4550 e usavamos o sistema de bootloader. Segue abaixo o código que utilizavamos lá, que tinha sido retirado do site da Microchip.
Segue também o redirecionamento para interrupções.
Tem também o arquivo de linker e o programa que usavamos para reconher o dispositivo.
Me passa seu e-mail que te encaminho os outros arquivos.

Espero ter ajudado


/** V E C T O R R E M A P P I N G ******************************************/
// Seção necessária para informar ao compilador C18 onde são os novos endereços
//da memória de programa que ele deve alocar as rotinas de tratamento do "reset"
//do microcontrolador e das rotinas de tratamento de interrupção.
//

// protótipo usado pelo compilador C18
extern void _startup (void); // See c018i.c in your C18 compiler dir

// Alocação da função de tratamento do "reset" da aplicação principal
// no endereço 0x800 da memória de programa
#pragma code REMAPPED_RESET_VECTOR = 0x000800
void _reset (void)
{
_asm goto _startup _endasm
}

// Alocação da função de tratamento das interrupções de ALTA prioridade
// no endereço 0x808 da memória de programa.
//
#pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = 0x000808
void _high_ISR (void)
{
_asm goto Tratamento_High_Interrupt _endasm
}

// Alocação da função de tratamento das interrupções de BAIXA prioridade
// no endereço 0x818 da memória de programa
#pragma code REMAPPED_LOW_INTERRUPT_VECTOR = 0x000818
void _low_ISR (void)
{
_asm goto Tratamento_Low_Interrupt _endasm
}

#pragma code // Diretiva que retorna a alocação dos endereços
// da memória de programa para seus valores padrão

/** F I M D A S E Ç Ã O D E V E C T O R R E M A P P I N G *************/


Vlw! rafadiogo, ajudou bastante, a parte do #build jah ta pronta a partir desse q vc postou, pois o endereço da memoria de reset e interrupição sao as mesmas, contudo ainda nao consegui resolver o problema do #ORG que eh a parte do endereçamento da memoria.
Obrigado pela ajuda.
jose emilio
 
Mensagens: 3
Registrado em: 20 Jan 2011 00:07

Mensagempor ÁgioFelipe » 21 Jan 2011 15:26

Só uma curiosidade, pq está migrando do CCS para o C18?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor jose emilio » 21 Jan 2011 19:00

ÁgioFelipe escreveu:Só uma curiosidade, pq está migrando do CCS para o C18?


Muitos problemas, com o ADC, INT0, problemas ate com delay, quando eu testei as funçoes separadas tava rodando blz, mas foi so juntar tudo q tudo parava, pesquisei bastante na internet e ate mesmo entre profissionais da área e vi q o CCS não eh o compilador mais indicado para a familia 18f.
Não sei dizer o por que, mas ate mesmo meu orientador que tem anos trabalhando com o CCS, condenou o mesmo. Dai minha unica saida foi partir para o C18, q pra falar a verdade eh chatinho, mas otimiza muito as funçoes, deixa o programa bem leve.
jose emilio
 
Mensagens: 3
Registrado em: 20 Jan 2011 00:07


Voltar para PIC

Quem está online

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

cron

x