Interrupções no C18

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Interrupções no C18

Mensagempor ÁgioFelipe » 25 Abr 2011 15:56

Olá pessoal. Gostaria de saber se existe alguma biblioteca para configuração das interrupções no C18, algo como a biblioteca timers.h, para que não seja preciso trabalhar diretamente com bits.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor Andre_Cruz » 25 Abr 2011 18:17

ÁgioFelipe,

No compilador C18 existe sim uma biblioteca para os timers !
Uso a versão 3.37.01, tenho instalado junto com o MPLAB, a pasta das bibliotecas esta "C:\Program Files\Microchip\mplabc18\v3.37.01" dentro da pasta h estão as bibliotecas !

Esta fugindo dos bits porque rsrsrsrs

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor ÁgioFelipe » 25 Abr 2011 18:56

Olá André.
Eu estou querendo uma biblioteca para as interrupções. Algo similar a timers.h só que para as interrupções.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 26 Abr 2011 21:55

É parece que não existe mesmo. Então lá vai outra dúvida:
Qual a diferença em se fazer as rotinas de interrupção assim:

Modo 1:
Código: Selecionar todos
#pragma code int=0x08
void int(void)
{
   _asm GOTO ISR_alta _endasm
}
#pragma code

#pragma interrupt ISR_alta
void ISR_alta(void)
{

   //corpo da função

}


Modo 2:
Código: Selecionar todos
#pragma code inter = 0x08
#pragma interruptlow inter
void inter()
{
   //corpo da função
}
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 28 Abr 2011 13:06

Ninguém sabe?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ze » 28 Abr 2011 13:40

provavel mente não. mas K entre nós, isso é vital? estaria impedindo alguma evolução sua? Particularmente gostei da 2ª opção pois não tem a odiosa palavra. Leia a teoria sobre #pragma em C. Esta diretiva te "amarra" ao teu compilador hein! Enfim...
Aguarde algum especialista em C18
sucessos!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Rubens_Caetano » 28 Abr 2011 16:52

Então a diferença "acho" :lol: que está ligada a esse trecho do MPLAB® C18 C COMPILER USER’S GUIDE que diz :
Código: Selecionar todos
2.9.2.3 INTERRUPT VECTORS
MPLAB C18 does not automatically place an ISR at the interrupt vector. Commonly, a
GOTO instruction is placed at the interrupt vector for transferring control to the ISR
proper. For example:
#include <p18cxxx.h>
void low_isr(void);
void high_isr(void);
/*
* For PIC18 devices the low interrupt vector is found at
* 00000018h. The following code will branch to the
* low_interrupt_service_routine function to handle
* interrupts that occur at the low vector.
*/
#pragma code low_vector=0x18
void interrupt_at_low_vector(void)
{
_asm GOTO low_isr _endasm
}
#pragma code /* return to the default code section */
#pragma interruptlow low_isr
void low_isr (void)
{
/* ... */
}
/*
* For PIC18 devices the high interrupt vector is found at
* 00000008h. The following code will branch to the
* high_interrupt_service_routine function to handle
* interrupts that occur at the high vector.
*/
#pragma code high_vector=0x08
void interrupt_at_high_vector(void)
{
_asm GOTO high_isr _endasm
}
#pragma code /* return to the default code section */
#pragma interrupt high_isr
void high_isr (void)
{
/* ... */
}
For a complete example, see Chapter 5. “Examples”
Rubens_Caetano
Bit
 
Mensagens: 24
Registrado em: 14 Abr 2009 09:01

Mensagempor ÁgioFelipe » 29 Abr 2011 09:27

Rubens_Caetano
Mas ai está apenas explicando como fazer no "Modo 1", não está falando a diferença dos dois, ou está?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor Rubens_Caetano » 29 Abr 2011 11:51

Ao meu olhar a diferença é o uso do GOTO(asm) para agilizar a entrada no vetor de alta prioridade, de uma olhada do disassemby, apesar de que do segundo modo não consegui compilar aqui , da o seguinte erro:

Error - section 'inter' can not fit the absolute section. Section 'inter' start=0x00000008, length=0x0000040c
Errors : 1
Rubens_Caetano
Bit
 
Mensagens: 24
Registrado em: 14 Abr 2009 09:01

Mensagempor ÁgioFelipe » 01 Mai 2011 10:32

É, já notei que dá esse erro em algumas versões do MPLAB.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 02 Mai 2011 21:16

Onde está o Fábio para nos auxiliar, pois o modo 2 está no livro dele.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04


Voltar para PIC

Quem está online

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

x