utilizar interupções no coldfire 532x

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

Moderadores: 51, guest2003

utilizar interupções no coldfire 532x

Mensagempor leandrosilva » 29 Jun 2007 08:34

Olá estou com dificuldades de utilizar as interrupções no coldfire 5329, estou utilizando a placa de desenvolvimento MCF5329EVB. Fiz um codigo mas não tá funcionando. Tento utilizar a interupção PIT0_handler , mas não da certo.


int count;

__declspec(interrupt) void PIT0_handler (void)
{
MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF;
count++;
}


int main()
{
uart_init(0, 62000, 9600, 1);

//MCF_INTC1_ICONFIG = 0x8020;
MCF_INTC1_ICR43 = 0x07;
MCF_PIT1_PMR = ~MCF_INTC_IMRH_INT_MASK43;
//MCF_INTC1_CLMASK = MCF_INTC_CLMASK_CLMASK(1);
//MCF_INTC1_SLMASK = MCF_INTC_SLMASK_SLMASK(1);

mcf5xxx_set_handler(128+43,PIT0_handler);
mcf5xxx_irq_enable ();

MCF_PIT0_PMR = 0x0FFF;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_PREE;
MCF_PIT0_PCSR |= ~MCF_PIT_PCSR_DOZE;
MCF_PIT0_PCSR |= ~MCF_PIT_PCSR_HALTED;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_OVW;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIE;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_RLD;
MCF_PIT0_PCSR |= MCF_PIT_PCSR_EN;

MCF_GPIO_PAR_TIMER = 0x00;
MCF_GPIO_PDDR_TIMER = MCF_GPIO_PDDR_TIMER_PDDR_TIMER3 = MCF_GPIO_PDDR_TIMER_PDDR_TIMER3;
MCF_GPIO_PCLRR_TIMER = 0x00;

for(;;)
{
if(count >= 10000)
{
count = 0;
}

}
}
leandrosilva
Bit
 
Mensagens: 39
Registrado em: 04 Dez 2006 21:51

Mensagempor CCandido » 29 Jun 2007 09:19

não seria falta ( Enableinterrups ) o velho CLI
t+
CCandido
Byte
 
Mensagens: 120
Registrado em: 12 Out 2006 12:54
Localização: Londrina-PR

Mensagempor msamsoniuk » 03 Jul 2007 12:24

existem duas outras possibilidades: a primeira de que ele esteja ignorando interrupcoes, pois quando um device interrompe o 68k/cf, ele encodifica um nivel de 0 a 7, q eh comparado com o a mascara de interrupcao no SR. dependendo do valor, ele filtra ou nao, mas para saber disso vc precisa debugar o codigo para ver se ele chega a processar interrupcoes.

se ele nao estiver mascarando, o problema pode ser que o registro VBR aponta para uma area que nao pode ser escrita (flash). isso significa que quando vc tenta registrar a funcao de tratamento de interrupcoes, nada eh feito e a tabela continua zerada ou apontando para uma funcao vazia de tratamento de interrupcoes.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Kremer » 30 Jul 2007 13:36

Acredito que o handler do PIT0 esteja sendo estabelecido de maneira errada.
Não seria

mcf5xxx_set_handler(64+43,PIT0_handler);

ao invés de

mcf5xxx_set_handler(128+43,PIT0_handler);

Outros detalhes podem estar ocorrendo tb, pois não sabemos como esta a sua inicialização do chip.
Avatar do usuário
Kremer
Nibble
 
Mensagens: 82
Registrado em: 25 Jul 2007 17:15
Localização: Florianópolis


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

Quem está online

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

x