ivory-hw-0.1.0.6: Ivory hardware model (STM32F4).

Safe HaskellNone
LanguageHaskell2010

Ivory.HW

Contents

Synopsis

I/O Registers

data Reg t Source #

An I/O register containing a value of type "t". Define registers using the "mkReg" functions.

class IvoryBits a => IvoryIOReg a Source #

Minimal complete definition

ioRegSize, ioRegRead, ioRegWrite

Instances
IvoryIOReg Uint8 Source # 
Instance details

Defined in Ivory.HW.Prim

Methods

ioRegSize :: Uint8 -> Integer

ioRegRead :: Def ((Uint32 ': []) :-> Uint8)

ioRegWrite :: Def ((Uint32 ': (Uint8 ': [])) :-> ())

IvoryIOReg Uint16 Source # 
Instance details

Defined in Ivory.HW.Prim

Methods

ioRegSize :: Uint16 -> Integer

ioRegRead :: Def ((Uint32 ': []) :-> Uint16)

ioRegWrite :: Def ((Uint32 ': (Uint16 ': [])) :-> ())

IvoryIOReg Uint32 Source # 
Instance details

Defined in Ivory.HW.Prim

Methods

ioRegSize :: Uint32 -> Integer

ioRegRead :: Def ((Uint32 ': []) :-> Uint32)

ioRegWrite :: Def ((Uint32 ': (Uint32 ': [])) :-> ())

mkReg :: forall t. IvoryIOReg t => Integer -> Reg t Source #

Previously, this was a smart constructor to raise an error if the address is invalid, but we didn't find a way to parameterize the valid address space by the platform, so now mkReg accepts all addresses.

readReg :: IvoryIOReg a => Reg a -> Ivory eff a Source #

Read an I/O register, returning an Ivory value.

writeReg :: IvoryIOReg a => Reg a -> a -> Ivory eff () Source #

Write an I/O register from an Ivory value.

Bit Data I/O registers

data BitDataReg d Source #

A register associated with a bit data type.

mkBitDataReg :: IvoryIOReg (BitDataRep d) => Integer -> BitDataReg d Source #

Create a bit data register given its address.

mkBitDataRegNamed :: IvoryIOReg (BitDataRep d) => Integer -> String -> BitDataReg d Source #

Create a bit data register given its address and name.

setReg :: (BitData d, IvoryIOReg (BitDataRep d)) => BitDataReg d -> BitDataM d a -> Ivory eff a Source #

Set a register to a value taken from a block of bit modifications. The previous value is discarded.

modifyReg :: (BitData d, IvoryIOReg (BitDataRep d)) => BitDataReg d -> BitDataM d a -> Ivory eff a Source #

Modify a register by a set of bit modification actions.

Dependency Capture