usart por soft com interrupçao MIKROC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

usart por soft com interrupçao MIKROC

Mensagempor cristian » 11 Mar 2010 22:18

me ajudei ai por favoz fiz o codigo pra receber os caracteres pela serial via soft ( 2 seriais ) colocquei o interrpçao externa para saber exatamente o inicio do start bit ai espero o tempo de 1,1/2 bit para para testar a porta ....mas sempre da 11111110 testei com frequenccimetro os tempos estao certos ára transmititr dar certo agora receber

o que sera q esta havendo

baixei o baudrate para 2400 era 9600 mas mesmo assim

Código: Selecionar todos

if(PIR2.TMR3IF)
{
tmr3h=254;         //255
tmr3l=190;         //174=56us
L=~L ;
LED=L;
nbit++;
if(nbit<=8)//8bit sem o stop bit
{
if(rxpin)//testa porta rb0
{
//setbit(usart2rx,0);

usart2rx=usart2rx<<1;
usart2rx=usart2rx|1;
}else{
      usart2rx=usart2rx<<1;
      }
}else{
      if(rxpin)
      {
      usart2_rec=1;//byte recebido
      esclcd=1;
       T3CON.TMR3ON=0;//desliga timer3
        PIE2.TMR3IE=0;//INT TIMER3
        INTCON.INT0IF=0;
      INTCON.INT0IE=1; //habilita int ext
       erro_usart2=0;
       led=0;
       nbit=0;
        fim=1;

     
      }

//--------------------------- int ext,

//-------------------------------------- int ext
 if(INTCON.INT0IF)                        //INT EXT 0
{
led=1;
EXT=1;
usart2rx=0;
tmr3h=252;
 tmr3l=52;  //625,92us                    //CARREGA O VALOR DO TIME  156,8uS 1BIT 1/2
T3CON.TMR3ON=1;                           //LIGA TIMER3
PIE2.TMR3IE=1;//INT TIMER3
INTCON.INT0IE=0;                           //DESATIVA INT EXT
INTCON.INT0IF=0;                           //LIMPA FLAG
}//INT EXT 0

cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor Sergio38br » 11 Mar 2010 22:49

Cristian , o LSB vem primeiro ( rotaciona para a direita...)..

[ ]`s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor cristian » 12 Mar 2010 14:11

ja fiz isso esta na outra parte do codigo
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor cristian » 15 Mar 2010 19:07

ninguem no forum fez um comunicaçao usart por soft?com interrupçao?


estou testando bem no meio de cada bit e mesmo assim so da erro
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor vtrx » 15 Mar 2010 19:19

Tem muita coisa a respeito disso,mas em ASM...
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor cristian » 15 Mar 2010 19:57

onde eu poderia tentar converter
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor cristian » 16 Mar 2010 22:14

o calculo q usei ´eo seguinte

1/9600 = Tbit (104us)

ajustei o tempo para no frequencimetro ler 208us esta correto quando gera a int do timer inverte o estado do led entao tenho q ler no frequencimetro 208us que dar uma frequcnia de 4807hz


na metde do bit 52us lei o estado da porta ...e assim vai ...nao teria erro
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba


Voltar para PIC

Quem está online

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

x