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

timer output on ports problem

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



Joined: 07 Jan 2016
Posts: 17
Location: pakistan

View user's profile Send private message Send e-mail Visit poster's website

timer output on ports problem
PostPosted: Thu Jan 07, 2016 9:57 am     Reply with quote

I want to get the value 16 bit timer/counter1 (as counter) on port b and c.
I set the timer1 as follows. Now how can i get the values of timer on ports?
Code:

void main()
{
TMR = 0X26;

   SETUP_TIMER_1(RTCC_EXT_H_TO_L);
   SET_TIMER1(TMR);

while(1)
{
;/// here how can i split 8 bits of 16 bit timer and get data on ports?
}
}
temtronic



Joined: 01 Jul 2010
Posts: 9243
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Jan 07, 2016 10:45 am     Reply with quote

simply put, read the manuals !
A quick read of the datasheet for your PIC will show the 16bit timer to be stored in 2 sucessive registers( memory locations).
Now, read the CCS manual ( press F11 while in a project), search for timer, and see how to access those registers.
There's probably an example or two as CCS does provide a LOT of fine examples covering most of the PICs operations....
These days you should use the 'get env' function to be sure the compiler gets the correct registers though. Again, consult the CCS manual for proper use.

BTW: To acquire the data and display should take 8 lines of code.

Also, be careful about the 'order' though other wise when you read the LEDs on the ports they won't look correct !!

The more you read the better the programmer you will be.


Jay
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Thu Jan 07, 2016 5:26 pm     Reply with quote

Quote:

SETUP_TIMER_1(RTCC_EXT_H_TO_L);

This is wrong. The value in bold is not a correct parameter for the
setup_timer_1() function. Look in the .H file for your PIC in the
SETUP_TIMER_1 section, to see the list of correct parameters.

Quote:
I want to get the value 16 bit timer/counter1 (as counter).

Use the get_timer1() function to read the 16-bit Timer1 value into an
int16 variable.

Quote:
how can i split 8 bits of 16 bit timer and get data on ports?

Use the make8() function to get the high or low byte from the 16-bit
variable.

Quote:
I want to get the value on port b and c.

Use the output_b() and output_c() functions.

For more information, read the CCS manual:
http://www.ccsinfo.com/downloads/ccs_c_manual.pdf
noman yousaf



Joined: 07 Jan 2016
Posts: 17
Location: pakistan

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Fri Jan 08, 2016 7:47 pm     Reply with quote

PCM programmer wrote:
Quote:

SETUP_TIMER_1(RTCC_EXT_H_TO_L);

This is wrong. The value in bold is not a correct parameter for the
setup_timer_1() function. Look in the .H file for your PIC in the
SETUP_TIMER_1 section, to see the list of correct parameters.

Quote:
I want to get the value 16 bit timer/counter1 (as counter).

Use the get_timer1() function to read the 16-bit Timer1 value into an
int16 variable.

Quote:
how can i split 8 bits of 16 bit timer and get data on ports?

Use the make8() function to get the high or low byte from the 16-bit
variable.

Quote:
I want to get the value on port b and c.

Use the output_b() and output_c() functions.

For more information, read the CCS manual:
http://www.ccsinfo.com/downloads/ccs_c_manual.pdf




thanks sir. you were right. my timer1 setting was not correct.
i did it.
noman yousaf



Joined: 07 Jan 2016
Posts: 17
Location: pakistan

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Fri Jan 08, 2016 7:54 pm     Reply with quote

i wrote this program
Code:

//this software runs the timer1 as counter and put the 16 bit value
// to portb and portd

#include    <18F458.h>
#USE DELAY (crystal=4MHz)

UNSIGNED INT  TMR;
unsigned int16 timer1_val,tmr1;


void main()
{
TMR1 = 0X12f4;    // timer1 starts from this value

SETUP_TIMER_1(T1_EXTERNAL); // set timer1 as external pulse counter
SET_TIMER1(TMR1); // put "12f4" value in timer1 to start from
 
WHILE(1)
   {
   timer1_val=GET_TIMER1();  //put the value ofmtimer 1 in "timer_val"
   
   tmr=make8(timer1_val,0); // split 8 bit value (lsb) and mov it to "tmr"
   
   output_b(tmr);          // feed the value to portb
   tmr=make8(timer1_val,1); // split 8 bit value (msb) and mov it to "tmr"
   
   output_d(tmr);// feed the value to portd
  }

}
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