atom-1.0.9: A DSL for embedded hard realtime applications.

Safe HaskellNone

Language.Atom.Common

Contents

Description

Common Atom functions.

Synopsis

Timers

data Timer

A Timer.

timer :: Name -> Atom Timer

Creates a new timer.

startTimer :: Timer -> E Word64 -> Atom ()

Starts a Timer. A timer can be restarted at any time.

startTimerIf :: Timer -> E Bool -> E Word64 -> Atom ()

Conditionally start a Timer.

timerDone :: Timer -> E Bool

True when a timer has completed.

One Shots

oneShotRise :: E Bool -> Atom (E Bool)

One-shot on a rising transition.

oneShotFall :: E Bool -> Atom (E Bool)

One-shot on a falling transition.

Debouncing

debounce :: Name -> E Word64 -> E Word64 -> Bool -> E Bool -> Atom (E Bool)

Debounces a boolean given an on and off time (ticks) and an initial state.

Lookup Tables

lookupTable :: FloatingE a => [(E a, E a)] -> E a -> E a

1-D lookup table. X values out of table range are clipped at end Y values. Input table must be monotonically increasing in X.

linear :: FloatingE a => (E a, E a) -> (E a, E a) -> E a -> E a

Linear extrapolation and interpolation on a line with 2 points. The two x points must be different to prevent a divide-by-zero.

Hysteresis

hysteresis :: OrdE a => E a -> E a -> E a -> Atom (E Bool)

Hysteresis returns True when the input exceeds max and False when the input is less than min. The state is held when the input is between min and max.

 hysteresis name min max input