|
|
View previous topic :: View next topic |
Author |
Message |
Alexandre Blais Guest
|
Timer1 and 12f675 |
Posted: Thu Jan 09, 2003 1:39 pm |
|
|
Hello I have a probleme with timer1 in a 12f675. This is my code
can you help me.
The led turn on but only once after that the led is always on.
#int_TIMER1
TIMER1_isr()
{
set_timer1(0xFC4F);
if(!EtatLed1)//led1==off
{
output_low(Led1);//Led1=ON, active sur un 0
EtatLed1=1;
}
else//Led1==on
{
output_high(Led1);//Led1=OFF, active sur un 0
EtatLed1=0;
}
}
Main()
{
CptrIntT0=15;
set_tris_a (0b11111100); //PIN_A0 en PIN_A1 Output, //PIN_A3,A4,A5 en Input
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
enable_interrupts(INT_TIMER1); //enable TMR1 INT
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
set_rtcc(0);
enable_interrupts(INT_RTCC);
enable_interrupts(global);
while(1);
}
___________________________
This message was ported from CCS's old forum
Original Post ID: 10571 |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
Re: Timer1 and 12f675 |
Posted: Thu Jan 09, 2003 3:00 pm |
|
|
:=Hello I have a probleme with timer1 in a 12f675. This is my code
:=
:=can you help me.
:=The led turn on but only once after that the led is always on.
----------------------------------------------------------------
That's because the LED is turning on and off at a high
frequency. To your eye, it appears to be constantly on.
You need to use a lower frequency.
Change this line,
set_timer1(0xFC4F);
to be this:
set_timer1(0x0);
Also, change this line,
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
to be this:
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
___________________________
This message was ported from CCS's old forum
Original Post ID: 10576 |
|
|
kolio Guest
|
Re: Timer1 and 12f675 |
Posted: Fri Jan 10, 2003 2:24 am |
|
|
:=Hello I have a probleme with timer1 in a 12f675. This is my code
:=
:=can you help me.
:=The led turn on but only once after that the led is always on.
:=
:=#int_TIMER1
:=TIMER1_isr()
:={
:= set_timer1(0xFC4F);
:= if(!EtatLed1)//led1==off
:= {
:= output_low(Led1);//Led1=ON, active sur un 0
:= EtatLed1=1;
:= }
:= else//Led1==on
:= {
:= output_high(Led1);//Led1=OFF, active sur un 0
:= EtatLed1=0;
:= }
Hi,
Just one more hint. I'm using compiler 2.731 version. It doesn't support 12F675, but generally at each ISR the proper IF should be cleared in order to allow normal operation. Otherwise the same ISR will be executed after exiting it. Forever. May be the new versions have such a feature to maintain IF with adding automaticaly at compilation time such an instructions, but for sure
bit_clear(PIR1,TMR1IF);
before the closing bracket of TMR1 ISR will not damage your program.
___________________________
This message was ported from CCS's old forum
Original Post ID: 10586 |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
Re: Timer1 and 12f675 |
Posted: Fri Jan 10, 2003 11:50 am |
|
|
<font face="Courier New" size=-1>:=Just one more hint. I'm using compiler 2.731 version. It doesn't support 12F675, but generally at each ISR the proper IF should be cleared in order to allow normal operation. Otherwise the same ISR will be executed after exiting it. Forever. May be the new versions have such a feature to maintain IF with adding automaticaly at compilation time such an instructions, but for sure
:=
:=bit_clear(PIR1,TMR1IF);
:=
:=before the closing bracket of TMR1 ISR will not damage your program.
---------------------------------------------------------
You don't actually have to do that. The CCS compiler will
take care of it for you. See the code below, compiled for
a 12F675.
<PRE>
0000 00270 ......... #int_timer1
0000 00271 ......... void timer1_isr(void)
0000 00272
0000 00273 ......... {
0000 00274 ......... char c;
0000 00275 .........
0000 00276 ......... c = 0x55;
0030 3055 00277 MOVLW 55
0031 00A8 00278 MOVWF 28
0000 00279 .........
0032 100C 00280 BCF 0C.0 <-- This clears TMR1IF bit.
0033 118A 00281 BCF 0A.3 <-- This changes PCLATH.
0034 2821 00282 GOTO 021
0000 00283 ......... }
0000 00284 .........
</font>
___________________________
This message was ported from CCS's old forum
Original Post ID: 10595 |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|