# Sigma-delta Module
| Since  | Origin / Contributor  | Maintainer  | Source  |
| :----- | :-------------------- | :---------- | :------ |
| 2017-01-13 | [Arnim Läuger](https://github.com/devsaurus) | [Arnim Läuger](https://github.com/devsaurus) | [sigma_delta.c](../../../app/modules/sigma_delta.c)|

This module provides access to the [sigma-delta](https://en.wikipedia.org/wiki/Delta-sigma_modulation) component. It's a hardware signal generator that can be routed to any of the output GPIOs.

The signal generation is controlled by the [`setprescale()`](#sigma_deltasetprescale) and [`setduty()`](#sigma_deltasetduty) functions.

## sigma_delta.close()
Reenables GPIO functionality at the related pin.

#### Syntax
`sigma_delta.close(channel)`

#### Parameters
- `channel` 0~7, sigma-delta channel index

#### Returns
`nil`

## sigma_delta.setprescale()
Sets the prescale value.

#### Syntax
`sigma_delta.setprescale(channel, value)

#### Parameters
- `channel` 0~7, sigma-delta channel index
- `value` prescale 1 to 255

#### Returns
`nil`

#### See also
[`sigma_delta.setduty()`](#sigma_deltasetduty)

## sigma_delta.setduty()
Sets the duty value.

#### Syntax
`sigma_delta.setduty(channel, value)`

#### Parameters
- `channel` 0~7, sigma-delta channel index
- `value` duty -128 to 127

#### Returns
`nil`

#### See also
[`sigma_delta.setprescale()`](#sigma_deltasetprescale)

## sigma_delta.setup()
Routes the sigma-delta channel to the specified pin. Target prescale and duty values should be applied prior to enabling the output with this command.

#### Syntax
`sigma_delta.setup(channel, pin)`

#### Parameters
- `channel` 0~7, sigma-delta channel index
- `pin` 0~33, IO index

#### Returns
`nil`

#### Example
```lua
sigma_delta.setprescale(0, 128)
sigma_delta.setduty(0, 0)
sigma_delta.setup(0, 4)
```
