CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Timer1 in sleep mode

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
mahdihir



Joined: 01 Dec 2013
Posts: 7
Location: Iran

View user's profile Send private message Send e-mail

Timer1 in sleep mode
PostPosted: Tue May 26, 2015 3:47 am     Reply with quote

My dear friend in CCS forum
I hope you are doing well.
I need to run a customized LCD with 6 digits in very low power consumption, I used PIC 16f684.
As you know, LCD works with 25 Hz. so I need to generate this frequency with timer1. I connect pin A03 for COM and sent timer signal to this pin.
In order to ON each digit in lcd, must have reverse signal, its means if COM is 1, digit1 must be 0 .
Obviously if COM is 1 and digit1 is also 1, the digit1 is OFF.
I connected all 6 digits to port C (C0-C5).
My questions are:
1: is timer1 works in sleep mode?
2: if I have timer signals in pin A03, how to send reverse signals to port (c0-c5) separately?
Thanks
_________________
There is more than one solutions for any problem .
Ttelmah



Joined: 11 Mar 2010
Posts: 19477

View user's profile Send private message

PostPosted: Tue May 26, 2015 8:01 am     Reply with quote

The timer itself, does not operate any pins. The timer _counts_ signals from a clock source (the T1CKI pin if used asleep). That is all it does. You _can_ enable the oscillator between OSC2, and T2CKI, and this can keep operating when the chip is asleep, and the timer will count this, _provided it is running in async mode_. If 'sync' is selected, the timer will stop. The timer cannot run from the internal oscillator when asleep (some ore complex chips have a separate low power internal oscillator that can run when asleep - your's doesn't).
When you wake (the timer overflows), you can simply output any pattern of signals you want on any pins. The LCD does not 'need' 25Hz changes, it will need a signal just reasonably close to this. Most will run from signals a large factor 'wrong' (they will run off clocks derived from very simple RC circuits).

Now, to get Timer1, to 'naturally' wake at 25Hz intervals, you would need a clock at 16MHz. Far beyond the speed supported by the oscillator. So you are going to have to 'cheat' and set the timer forward to get the wake up rate. So assuming a cheap crystal, like 32768Hz, on the two timer pins, the sequence would be:

Setup the timer for async operation, and enable the oscillator.
Enable the timer interrupt _but do not enable the global interrupt_.

Then loop:
Clear the timer interrupt
Set the timer to perhaps 64230
Sleep
nop instruction here (delay_cycles(1));
Output the next pattern of bits for the LCD
go back to loop

This way the chip will go to sleep and count from 64230, to 65536, then wake (so 1306 counts - 1/25th second at 32768Hz), then output the next LCD bit pattern, and go back to sleep.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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