Interrupção no coldfire V1

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Interrupção no coldfire V1

Mensagempor mastk » 07 Jul 2008 14:57

Olá povo, tó com querendo usar os colds V1 e estou tendo um probleminha de vicio, que como qualquer vicio quero manter...

Nos HCS08 usamos os arquivo *.PRM e declaramos:

VECTOR ADREESS 0xFFF0 INT_FIM_DO_MUNDO

E no programa, é rotina fica do msm jeito:

#pragma TRAP_PROC
void INT_FIM_DO_MUNDO (void){
};

Gostaria de saber se nos colds tem um arquivo equivalente (que seria o "exceptions.c" ?) e como declarar as interrupções nele.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Re: Interrupção no coldfire V1

Mensagempor Paulo » 07 Jul 2008 16:30

mastk escreveu:Olá povo, tó com querendo usar os colds V1 e estou tendo um probleminha de vicio, que como qualquer vicio quero manter...

Nos HCS08 usamos os arquivo *.PRM e declaramos:

VECTOR ADREESS 0xFFF0 INT_FIM_DO_MUNDO

E no programa, é rotina fica do msm jeito:

#pragma TRAP_PROC
void INT_FIM_DO_MUNDO (void){
};

Gostaria de saber se nos colds tem um arquivo equivalente (que seria o "exceptions.c" ?) e como declarar as interrupções nele.


Fala mastk, tranquilo?

Estou utilizando o recurso Device Initialization->Initialize Device.
Antes eu fazia tudo na mão, de uns tempos pra cá passei a utilizar esse cara e achei ele muito bom e eficiente.

Ele gera uma pasta Generate Code que contém o arquivo "MCUinit.c" que possui o escopo das funções de interrupção dentro dele, daí vc pode editar do jeito que vc quiser.
Dá uma olhada, vale a pena...

Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor Fábio Pereira » 07 Jul 2008 17:49

Para quê complicar tanto?

Basta utilizar as definições criadas pela Freescale ...

Para a ISR do RTC, basta utilizar:

void interrupt VectorNumber_Vrtc rtc_isr(void)

Tão fácil ... Não precisa modificar PRM e o melhor de tudo: é 100% portável de HCS08 para CFv1.

As definições de VectorNumber estão nos include files de cada device.

T+
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 Paulo » 11 Jul 2008 08:02

Fábio Pereira escreveu:Para quê complicar tanto?

Basta utilizar as definições criadas pela Freescale ...

Para a ISR do RTC, basta utilizar:

void interrupt VectorNumber_Vrtc rtc_isr(void)

Tão fácil ... Não precisa modificar PRM e o melhor de tudo: é 100% portável de HCS08 para CFv1.

As definições de VectorNumber estão nos include files de cada device.

T+


Eu já utilizei dessa maneira também, mas resolvi experimentar o "Device Inicialization" e achei bem legal para iniciar os micros e muito tranquilo, mas das duas maneiras funcionam e são tranquilas, daí depende muito do que se quer.

Flw...
Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Re: Interrupção no coldfire V1

Mensagempor msamsoniuk » 11 Jul 2008 13:17

no gcc com CFv2 eu tenho usado um array de funcoes com os enderecos das funcoes de tratamento de interrupcao. dae no linker script pode posicionar esse array no endereco 0 ou mudar o registro VBR para apontar para o array.

porem as funcoes de tratamento de excessao sao diferentes das funcoes normais: as funcoes normais empilham apenas o PC e retornam com RTS, enquanto que as excessoes criam um stack frame com codigos extendidos sobre aquela excessao. para limpar automaticamente esse stack frame e restaurar o estado corretamente, a funcao de tratamento de excessao retorna com RTE ao inves de RTS. para isso utilizo o prefixo interrupt no gcc.

mas nao sei qto de compatibilidade o v1 tem com o v2...

mastk escreveu:Olá povo, tó com querendo usar os colds V1 e estou tendo um probleminha de vicio, que como qualquer vicio quero manter...

Nos HCS08 usamos os arquivo *.PRM e declaramos:

VECTOR ADREESS 0xFFF0 INT_FIM_DO_MUNDO

E no programa, é rotina fica do msm jeito:

#pragma TRAP_PROC
void INT_FIM_DO_MUNDO (void){
};

Gostaria de saber se nos colds tem um arquivo equivalente (que seria o "exceptions.c" ?) e como declarar as interrupções nele.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

x