The passage of time l.jpg
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

The passage of time PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on
  • Presentation posted in: General

The passage of time. Being aware of time is critically important to many embedded systems Delays in software systems so they won’t overrun users Real-time clocks De-bouncing switches Knowing when to sample inputs Producing precisely-timed outputs Many internal uses Many other uses.

Download Presentation

The passage of time

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


The passage of time l.jpg

The passage of time

  • Being aware of time is critically important to many embedded systems

    • Delays in software systems so they won’t overrun users

    • Real-time clocks

    • De-bouncing switches

    • Knowing when to sample inputs

    • Producing precisely-timed outputs

    • Many internal uses

    • Many other uses


Time basis clock cycles l.jpg

Time basis – Clock cycles

  • We will use a well-timed periodic signal as our time basis – a clock signal

    • Usually a square wave with a 50% duty cycle

    • Stability is desired – the more stable it is, the more accurate timing measurements may be

    • Period (s) = time from rising edge to the next rising edge

    • Frequency (Hz) = 1/Period

  • PSoC supports a wide variety of clock signals – stay tuned…


Timing instruments l.jpg

Timing instruments

  • Counters – Count once per clock cycle

    • Can check count at any time (polling) – just like reading a clock

    • May set a flag or interrupt to “go off” at a certain time - like setting an alarm on a clock

  • Timers – Count once per clock cycle until an event occurs

    • Similar to using a stopwatch

    • Stops counting (and records the time) when an event occurs

    • “Event” usually means a rising edge on an input pin

    • May generate an interrupt on capture


Counter example interrupt once every 100ms l.jpg

Counter Example – Interrupt once every 100ms

  • Select a clock with a 1ms period (1000Hz)

    • (more on this later)

  • Choose an counter that can count to at least 100

    • An eight-bit counter will work for up to 256 counts

  • Determine how many counts equal 100ms

    • 100ms / 1ms =100 counts

    • But, PSoC counters are 0-based, so use 99

  • Set up counter to count from 0 to 99 and reset

    • After 100 cycles, will reset and start over

  • Enable an interrupt for when count reaches 99

    • Will generate an interrupt each 100ms


Timer example time in ms a response l.jpg

Timer Example – Time (in ms) a response

  • Example – Time (in ms) how long for an ultrasonic echo to arrive.

    • Spec: Need 0.1ms resolution, up to 0.1s (1000 counts)

  • Choose a 16-bit timer (need to count to at least 1000)

  • Configure its clock to 0.1ms

  • Set up its capture input to hardware that produces a rising edge when response is received

    • An ultrasonic microphone connected to a little HW

    • Turn on interrupt on capture

  • Start the timer when the source signal is sent

    • Send out an ultrasonic pulse and start time

  • When interrupt received, read the timer

    • Count is the number of tenths of ms the response is delayed


Psoc clock sources l.jpg

PSoC Clock Sources

  • All PSoC clock sources are derived from the 24MHz Internal Main Oscillator (IMO)

    • Generated internally, +/- 2.5%

    • Or externally, using a 32768Hz external crystal

    • Available as SYSCLK = Oscillator * 732 = 23.986MHz

    • Also, SYSCLK*2 (48MHz) is available

  • The CPU clock is produced by dividing SYSCLK by either:

    • 1 – 24MHz; 2 – 12 MHz; 4 – 6 MHz; 8 – 3MHz

    • 16 – 1.5MHz; 32 – 750KHz; 128 – 185.5KHz

    • 256 – 93.75KHz

  • Configured in Global Resources of Device Editor


More psoc clocks l.jpg

More PSoC Clocks

  • Individual digital and analog blocks may be clocked by one of three main clocks

    • VC1 – SYSCLK divided by 1-16 (24MHz – 1.5MHz)

    • VC2 – VC1 divided by 1-16 (24MHz – 93.75KHz)

    • VC3 – Either VC2, VC1, SYSCLK or SYSCLK*2 divided by 1-256

      • (48MHz – 366.2Hz)

  • Some blocks may be clocked by the Internal Low Speed Oscillator (ILO or CPU_32KHz) as well

    • Always 32768 Hz


The big clock picture l.jpg

Optional Ext clock

The Big Clock Picture

48MHz SYSCLK*2

IMO/SYSCLK – 24MHz

Divider for CPU clock

Ext Crystal Source

Dividers for VC1,2,3

ILO – 32KHz

Sleep timer


Psoc counters l.jpg

PSoC Counters

Period register –

Reloaded into counter when zero reached

Optionally check against compare register value and set output high if count less than compare (can be used to adjust duty cycle of output)

Down counter8-32 bits wide

Enable tocount

Lots and lotsof clock sourceoptions

Optionally createinterrupt on eithercompare or terminalcount

Terminal Count(zero) Indicator


Configure a counter to interrupt every 10ms l.jpg

Configure a counter to interrupt every 10ms

Divide 10KHz clock by 100

Period: 99(0 based)

8-bitCounter

Compare: 0(unused)

Enable: 1

Compare/TC out:unused

Clock source: VC3 = IMO/16/15/10 = 24MHz/16/15/10

= 10000Hz

Interrupt onTerminalCount


Configure a counter to create a 1mhz square wave with 40 duty cycle l.jpg

Configure a counter to create a 1MHz square wave with 40% duty cycle

On period = 400ns, off period = 600nsWith 24MHz clock, off = 14 cycles, on = 10 cycles

Period: 23(0 based)

8-bitCounter

Compare: 10

Compare type:Less-than (on for 0-9)

Output to pin

Enable: 1

TC out:unused

Clock source: VC1 = SYSCLK

/ 1 = 24MHz

Interrupt unused


Psoc counter api 8 bit example l.jpg

PSoC Counter API (8 bit example)

  • Counter8_start

    • Use to start it up

  • Counter8_EnableInt

    • If you want an interrupt

  • Counter8_WritePeriod

    • Put period in A, change at any time

  • Counter8_WriteCompareValue

    • Put compare value in A, change at any time


Psoc timers l.jpg

PSoC Timers

Optionally checkagainst compareregister value.Compare registeralso stores eventcapture time.

Period register –

Reloaded into counter when zero reached (set to max for timers)

Optionally createinterrupt on compare,

terminal count, or capture

Down counter8-32 bits wide

Capture Input –

Stores count

value in compareregister

Lots and lotsof clock sourceoptions

Terminal Count(zero) Indicator

Timers are counters that have the ability to store (capture) the time of an external event (rising edge).


Measure response time using a timer l.jpg

Measure response time using a timer

Assert an output and measure the time until a response is received. Time range is 0-2 seconds, with a resolution of 1ms = 2001 values.

Compare reg holdstime of capture

Down counter16 bits wide

Period: 0xFFFF

Interrupt on capture

Capture tied toport pin.

1000Hz clock:VC3 = 24MHz/16/10/150

Software: Main starts timer, asserts output and enables capture interrupt.Interrupt subtracts 0xFFFF – Capture time = elapsed time in ms.


Find the period frequency of an input signal l.jpg

Find the period/frequency of an input signal

Measure the period of an input square wave signal. Frequency range is 100 – 100,000 Hz (10,000 µs – 10 µs period). Resolution is 1 µs.

Compare reg holdstime of capture

Down counter16 bits wide

Period: 0xFFFF

Interrupt on capture

Capture tied toport pin.

1MHz clock:VC2 = 24MHz/8/3

Software: Main starts timer, enables capture interrupt.Interrupt keeps track of last two captures and subtracts previous – current time  period in µs.


Psoc timer api 16 bit example l.jpg

PSoC Timer API (16 bit example)

  • Timer16_1_Start

    • Use to start it up

  • Timer16_1_EnableInt

    • If you want an interrupt – source selected in device editor

  • Timer16_1_WritePeriod

    • Put period in X,A change at any time

  • Timer16_1_wReadCompareValue

    • Read compare value into X,A


  • Login