Conceitos Timer0 e set_timer0(x)/pic16F819

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor Pask » 07 Ago 2008 08:24

Muitos PIC's não permitem a alteração de sua freq. de trabalho durante o uso normal. Então você configura usando a diretiva #use delay e pronto.
O PIC 16F819 tem esse registrador de uso especial chamado OSCCON que permite a alteração da freq. de clock do PIC durante o uso normal. Os comando válidos, em C, para alterar a freq. são:

#define OSC_31KHZ
#define OSC_125KHZ
#define OSC_250KHZ
#define OSC_500KHZ
#define OSC_1MHZ
#define OSC_2MHZ
#define OSC_4MHZ
#define OSC_8MHZ

Experimente não usar "#use delay" e veja no que dá.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor alex1000 » 07 Ago 2008 11:31

Pask,

Apaguei o use_delay e coloquei em seu lugar #define OSC_4MHz e o programa compilou(desde que apague a linha OSCCON= 0x60)
voltando ao fic819 vi que OSCCON =0x60
Minhas conclusões:

A função que faz OSCCON =0x60 (para mim não tem sentido neste programa.).
Não se faz alteração de frequnecia e a instrução OSCCON, de qualquer jeito não funciona (não compila)
alex1000
Byte
 
Mensagens: 104
Registrado em: 02 Out 2007 23:39

Mensagempor Pask » 07 Ago 2008 12:03

Bem, Alex, então ficou comprovado que o comando OSCCON=0x60 não é uma instrução válida.
Você também pode tentar usar (#use delay) sem o comando #define OSC_4MHz para ver se funciona. É isso aí...
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor Sergio38br » 07 Ago 2008 12:05

boa tarde, o registrador OSCCON é utilizado apenas qdo nas diretivas do config vc opta pelo oscilador interno e naum os modos XT,HS,.... vc escolhe nele o modo RC ou algum derivado do osc. de 8MHz interno

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

Mensagempor alex1000 » 08 Ago 2008 22:27

olha, para não ficar sem dar satisfação:
Do programa visto acima:
passei pro Proteus 7, infelizmente minha versão não tinha o pic16f819 então passei para pic16f677, retirei as Linhas referntes a OSCCON, toquei os pinos b por c(devido a pinagem do 677).
Compilei : OK
fiz o circuito no Proteus e beleza.
Semana que vem gravação no pic.

Depois passo os resultados
alex1000
Byte
 
Mensagens: 104
Registrado em: 02 Out 2007 23:39

Mensagempor Pask » 10 Ago 2008 19:43

O interessante é que realmente o Proteus não tem o PIC16F819 em sua biblioteca de microcontroladores PIC. O PIC16F677 é idêntico ao 819?
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor alex1000 » 14 Ago 2008 09:23

Olha, sou novo no assunto mas me parece que o 819 é um 628a com conversor a/d.
alex1000
Byte
 
Mensagens: 104
Registrado em: 02 Out 2007 23:39

Mensagempor Pask » 14 Ago 2008 12:41

É verdade. E o 819 também tem o registrador OSCCON que o 628 não possui. Depois vou consultar o datasheet do 677.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor alex1000 » 21 Ago 2008 12:56

Alguem poderia dar uma olhada no progra abaixo, pois não consigo ver o que mais estaria errado... è básico não consigo fazer que timer acione a interrupção:

#include<16F628a.h>
#use delay(clock=4000000)
#fuses NOWDT,PUT,NOLVP,INTRC_IO
#use fast_io(a)
#use fast_io(b)
int valor=0;


//#int_timer0 // tratamento da interrupção do timer 0
void trata_t0()

{


output_low(pin_b0);
output_low(pin_b1);
delay_ms(2000);
output_high(pin_b0);
output_high(pin_b1);
delay_ms(3000);
output_low(pin_b0);
output_low(pin_b1);
delay_ms(3000);
valor=valor+1;


{

set_tris_a(0x00);
output_b(0x00);

setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256);
set_timer0(178);
enable_interrupts(global | int_timer0);

for(;;);


}
alex1000
Byte
 
Mensagens: 104
Registrado em: 02 Out 2007 23:39

Mensagempor Pask » 21 Ago 2008 14:28

Amigo, na linha abaixo você não deve colocar barras invertidas:

//#int_timer0 // tratamento da interrupção do timer 0
void trata_t0() (ESTÁ ERRADO !!!)


#int_timer0 // tratamento da interrupção do timer 0
void trata_t0() (ESTÁ CERTO. AGORA, A INTERRUPÇÃO VAI FUNCIONAR !!!)
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor otavio luiz » 21 Ago 2008 14:57

Se não quiseres ter dor de cabeça, não utilize delay dentro da rotina de tratamento da int.
Lembre-se, zona de Fresnel não é nenhuma franquia de puteiro.
Avatar do usuário
otavio luiz
Byte
 
Mensagens: 257
Registrado em: 11 Out 2006 13:56
Localização: Barretos - SP, terra de Peão

Anterior

Voltar para PIC

Quem está online

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

cron

x