Command |
I/O Counter |
|
|
Description |
The 31 I/O counters use pre-define variables which can be reset and tested
for value.
The counter uses an unsigned 32bit register (U32) with names CNTKxx where
xx=00 to 30.
They require the I/O to be set as an interrupt but
do not require an associated INT()
command.
Counter increment depends on the rising or falling edge of the interrupt.
The command RESET(CNTK00) resets to zero the I/O counter on K00.
The maximum counter speed is 0-10kHz+ and is dependent on other interrupt
and entity usage. |
|
|
Syntax/Parameters |
CNTK00-CNTK30 |
|
|
Example |
IF(CNTK00>300?Func300); //if greater than 300 run function
called Func300
TEXT(K00Text,CNTK00);; //update counter value on
page and refresh screen |
|
|
Command |
RunTime Counter |
|
|
Description |
The RUNTIME counter uses pre-define variables which can be set and tested for values
The command Reset(RUNTIME) sets all vales to zero and starts the timer.
This runtime counter is independent of the real time clock and runs
continually so no setup is required. |
|
|
Syntax/Parameters |
CNTMILLI -
Increments every millisecond 0-999
CNTSECS -
Increments every second 0-59
CNTMINS -
Increments every minute 0-59
CNTHOURS -
Increments every hour 0-23
CNTDAYS -
Increments every 24 hours
CNTRUN -
Increments every millisecond since system reset. 86,400,000 = 1 day - v47.12. |
|
|
Options |
RunTime Counter Interrupts
Wrap-around interrupt for the RunTime counter have been added.
INT(name,CNTMILLI,function);
// function called every 1000ms
INT(name,CNTSECS,function);
// function called every 60s
INT(name,CNTMINS,function);
// function called every 60mins
INT(name,CNTHOURS,function);
// function called every 24hours
INT(name,CNTDAYS,function);
// function called every 2^32days
For timer resolutions of less than a second,
use
TIMER0
to
TIMER9.
|
|
|
Example |
IF(CNTMINS>30?FuncHalfHour);
//if greater than 30 minutes run function called FuncHalfHour
TEXT(MinsText,CNTMINS);; //update
counter value on page and refresh screen |
|
|
Update Information |
Version |
Title |
Date |
Details |
49.48 |
System Timer Accuracy |
21 Nov 13 |
|
* Fixed accuracy of 200us system tick timer - used for incrementing counters CNTRUN, CNTMILLI, ... CNTDAYS, TIMER0-TIMER19, and decrementing WAIT(). * Wrong divider value was being used. Needed to be divider value minus one. * This resulted in a tick value of 200.174us rather than 200us. * Assuming a perfect crystal frequency giving a 92,000,000Hz clock then there would be a +0.87ms error for every second.
|
|
49.32 |
Count per second / 100ms - Added ability to count number of I/O events per second or 100ms. |
14 Feb 13 |
|
* Added ability to count number of I/O events per second or 100ms. * Additional parameters added to KEYIO setup: cntpersec = \\xxxxxxxx; cntper100m = \\xxxxxxxx; * Any I/O port that is enabled with either of these settings result in value of CNTKxx being the number of events received during the last 1 second / 100ms time slot.
|
|
49.00 |
Interrupts - Fixed problem with interrupts stopping after 255 interrupts |
22 Mar 12 |
|
Fixed problem with interrupts stopping after 255 interrupts
|
|
49.00 |
Error Interrupt Handlers - Code now jumps to error handlers for Prefetch Abort, Data Abort, SWI, and Undefined Interrupts. |
22 Mar 12 |
|
Code now jumps to error handlers for Prefetch Abort, Data Abort, SWI, and Undefined Interrupts.
|
|
47.12 |
Total Run Counter - CNTRUN added which counts milliseconds since startup or reset of RUNTIME counters. |
09 Sep 11 |
|
CNTRUN added which counts milliseconds since startup (with no wrapping at 1000ms) or reset of RUNTIME counters.
|
|
45.00 |
RunTime Counter Interrupts - Wrap-around interrupt for the RunTime counter have been added. |
10 Jun 11 |
|
Wrap-around interrupt for the RunTime counter have been added. INT(name,CNTMILLI,function); // function called every 1000ms INT(name,CNTSECS,function); // function called every 60s INT(name,CNTMINS,function); // function called every 60mins INT(name,CNTHOURS,function); // function called every 24hours INT(name,CNTDAYS,function); // function called every 2'32days For timer resolutions of less than a second, use TIMER0 to TIMER9.
|
|
41.00 |
Introduce 24 I/O-Counters - Added counter on each of K-inputs K00 to K23. |
26 Jan 11 |
|
Added counter on each of K-inputs K00 to K23. These can be accessed as U32 Vars with reserved names CNTK00 to CNTK23. The count values can be read and tested. RESET(CNTKxx); will clear the counter.
|
|
23.00 |
CNTMILLI - Runtime counter implemented. |
17 Aug 10 |
|
Runtime counter implemented. Access via: CNTMILLI, CNTSECS, CNTMINS, CNTHOURS, CNTDAYS
|
|
|
|