Interrupção Serial

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Interrupção Serial

Mensagempor assamaral » 11 Jul 2007 18:52

Senhores,

Estou pesquisando sobre como trabalhar com interrupção serial assim como interrupção externa, mas, sem utulizar o kbhit (em "C"), ou seja, o código segue seu fluxo normal, ao receber algum dado pelo canal serial, o software pára e pula para um trecho específico.

Desde já agradeço.
assamaral
Bit
 
Mensagens: 15
Registrado em: 24 Out 2006 19:51
Localização: Imbé/RS

Mensagempor ze » 12 Jul 2007 13:02

Veja como configurei os registros para interrupççao serial e timer0

TMR1IF=0; //zera flag timer1
TMR1IE=1; //hab. int. timer1
TMR1IP=1; //timer1 = alta prioridade
PEIE=1;
RBIE=RBIF=0;

//------------- interface serial-------
SPBRG=155; //9600,n,8 @ 24MHz
TXEN=1; //hab. transmissão
//BRGH=0; //sel. baud rate baixa 2400bps
BRGH=1; //sel. baud rate alta 9600bps
SYNC=0; //assinc.
SPEN=1; //hab. pinos como int. serial
CREN=1; //recepção contínua
RCIF=0; //flag de recepção
RCIE=1; //hab int serial
RCIP=0; //int recepção prioridade=baixa
//--------------------------------------
IPEN=1; //hab prioridade de int
GIE=1;

Agora veja como as rotinas atuam

#pragma interrupt_level 1 //vou chamar esta rotina em main() e em rtx()
static void interrupt low_priority serial(void)
{
if (RCIE&&RCIF) rtx(); //rtx=minha rotina de int. (serial RCIF TEM que ser zerado)
//só se estiver habilitada a int (RCIE) e receber um dado serial (RCIF)
}

static void interrupt
timer1_int(void)
{

if (TMR1IF&&TMR1IE) // se for int timer1
{
TMR1IF=0; //zera o flag de recepção
....
}

Traduzindo: ao receber algum dado da serial (RCIF=1), o fluxo vai para rtx().

Obs: para a família PIC18F

abraço...[/code]
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor assamaral » 12 Jul 2007 13:05

Muito Obrigado lellis. Vou testar.

Sds.
assamaral
Bit
 
Mensagens: 15
Registrado em: 24 Out 2006 19:51
Localização: Imbé/RS


Voltar para PIC

Quem está online

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

x