Dúvida na interrupção da USART, PIC18F!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Dúvida na interrupção da USART, PIC18F!

Mensagempor B-EAGLE » 30 Abr 2008 02:19

Estou utilizando o PIC18F2331 e o C18. O oscilador é de 10MHz com PLL setado, resultando em 40MHz.

void configura_usart(void){
OpenUSART (USART_TX_INT_OFF &
USART_RX_INT_ON &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH, 64); //Baud Rate: 38400
//Fórmula para cálculo de SPBRG = ((FOSC/Baud Rate)/64)-1
return;
}
void configura_interrupt(void){
INTCONbits.GIE = 1; //hatilitação geral das interrupções
INTCONbits.PEIE = 1; //habilitação dos periféricos
return;
}
void rx_handler(void){
char c1;
c1 = ReadUSART();
putcUSART(c1);
PORTB = ~PORTB;
PIR1bits.RCIF = 0;
return;
}

só para teste, fiz este espelho, todo dado recebido é enviado novamente.

porém do jeito que está na função rx_handler(void), só funciona com o primeiro byte recebido, e não recebe mais dado nenhum...

só funciona se eu habilitar novamente as interrupções através de
INTCONbits.GIE = 1;
dentro da função rx_handler....

isso é normal? ter que habilitar as interrupções globais toda vez que entrar na interrupção do RX??

muito obrigado!
Bruno
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS

Mensagempor leoabubauru » 06 Mai 2008 13:42

B-EAGLE, não está faltando a diretiva para orientar o compilador que

void rx_handler(void){
x
x
}

é uma rotina de interrupção? O que faria a sua rotina executar apenas uma vez se não houver tal diretiva. Algo como

#int_Rx
void rx_handler(void){
x
x
}

no CCS.
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor B-EAGLE » 18 Mai 2008 18:23

opa leo, era isso mesmo! faltavam os #pragmas interrupt mesmo, estou usando o C18 da uChip!

valeu!!!
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS

Mensagempor leoabubauru » 19 Mai 2008 13:11

ok
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor leoabubauru » 19 Mai 2008 13:11

ok
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor leoabubauru » 19 Mai 2008 13:11

ok
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor leoabubauru » 19 Mai 2008 13:13

ok
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo


Voltar para PIC

Quem está online

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

x