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

Safe HaskellNone




Common Atom functions.



data Timer Source

A Timer.

timer :: Name -> Atom TimerSource

Creates a new timer.

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

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

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

Conditionally start a Timer.

timerDone :: Timer -> E BoolSource

True when a timer has completed.

One Shots

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

One-shot on a rising transition.

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

One-shot on a falling transition.


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

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 aSource

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 aSource

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


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

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