16F628A - Interrupção Timer0

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

16F628A - Interrupção Timer0

Mensagempor alexhnunes » 03 Jun 2008 16:54

Pessoal, estou com o seguinte problema: tenho um acionamento com dois botões, sendo um incremento e o outro decremento. Ao utilizar somente eles, tudo jóia, não há problemas. Porém, quando habilito uma interrupção no Timer0 (o sistema precisa dela para gerar um PWM), os botões se tornam inativos. Eis uma parte do código (estou utilizando o MikroC):

...

#define Alto PORTB.F1
#define Baixo PORTB.F2

unsigned int cnt = 0;
signed int i = 25;

void interrupt(){
cnt++;

TMR0 = 236;
INTCON = 0x20;

if (cnt <= i){
Alto = 1;
Baixo = 0;
}
if (cnt > i){
Alto = 0;
Baixo = 1;
}
if ((cnt > 50)){
cnt = 0;
}
}

void main (){
PORTB = 0;

TRISB = 0;

PORTA = 0;

TRISA.F0 = 1;
TRISA.F4 = 1;

OPTION_REG = 0x80;
TMR0 = 236;
INTCON = 0xA0;

CMCON = 0x07;

...

Simulei no Proteus e funcionou direitinho, porém no hardware aconteceu este problema. Não sei se posso estar esquecendo algo, mas já verifiquei esquemas e literaturas aqui e não encontrei nada. Estou trabalhando com o PIC 16F628A (chatinho de configurar!) e cristal de 8MHz.
Alexandre Nunes
alexhnunes
Nibble
 
Mensagens: 59
Registrado em: 28 Mai 2007 10:04
Localização: Campinas - SP

Mensagempor ze » 04 Jun 2008 07:41

observações preliminares não solucionantes:
-INTCON com 0x20 bloqueia ints (GIE=0) INTCON.7
-F628 tem pwm por hw. poupe a cabecinha do uC. Procure usá-lo.
abrçs
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor alexhnunes » 04 Jun 2008 13:56

Ok, acabei resolvendo o meu problema usando o módulo PWM (CCP1) para variar a rotação e outro pino para inverter a rotação do motor. Funcionou perfeitamente. Eu estava gerando um PWM com dois pinos utilizando o Timer0, assim eu utilizaria somente dois botões, pois a variação dos dois pulsos contrários faziam a variação de velocidade e a mudança de rotação, consequentemente eu só utilizaria dois botões. Agora uso três.
Alexandre Nunes
alexhnunes
Nibble
 
Mensagens: 59
Registrado em: 28 Mai 2007 10:04
Localização: Campinas - SP

Mensagempor leoabubauru » 05 Jun 2008 22:34

Talvez seu problema estivesse no fato de você não resetar o flag de overflow da interrupção de timer...
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