Skip to content

File syn_shiftreg.c

FileList > drivers > syn_shiftreg.c

Go to the source code of this file

Generic Shift Register Driver (74HC595 Output Expander & 74HC165 Input Expander).

  • #include "syn_shiftreg.h"
  • #include "../util/syn_assert.h"
  • #include <string.h>

Public Functions

Type Name
bool syn_shiftreg_in_get_bit (const SYN_ShiftRegIn * sr, uint16_t bit_index)
Get logical state of a specific sampled input pin.
uint8_t syn_shiftreg_in_get_byte (const SYN_ShiftRegIn * sr, uint8_t chip_index)
Get sampled byte for a specific chip in the chain.
SYN_Status syn_shiftreg_in_init (SYN_ShiftRegIn * sr, SYN_GPIO_Pin data_pin, SYN_GPIO_Pin clock_pin, SYN_GPIO_Pin load_pin, uint8_t num_chips)
Initialize an Input Shift Register (74HC165).
void syn_shiftreg_in_read (SYN_ShiftRegIn * sr)
Pulse Parallel Load pin and clock in all input bits from hardware.
void syn_shiftreg_in_set_bit_order (SYN_ShiftRegIn * sr, bool msb_first)
Set bit order mode for input sampling.
void syn_shiftreg_out_flush (SYN_ShiftRegOut * sr)
Atomically flush buffer contents to physical hardware output pins.
SYN_Status syn_shiftreg_out_init (SYN_ShiftRegOut * sr, SYN_GPIO_Pin data_pin, SYN_GPIO_Pin clock_pin, SYN_GPIO_Pin latch_pin, uint8_t num_chips)
Initialize an Output Shift Register (74HC595).
void syn_shiftreg_out_set_bit (SYN_ShiftRegOut * sr, uint16_t bit_index, bool state)
Set logical state of a single pin in the shift register chain.
void syn_shiftreg_out_set_bit_order (SYN_ShiftRegOut * sr, bool msb_first)
Set bit order mode.
void syn_shiftreg_out_set_enable (SYN_ShiftRegOut * sr, bool enable)
Enable or disable outputs via Output Enable (OE) pin.
void syn_shiftreg_out_set_oe_pin (SYN_ShiftRegOut * sr, SYN_GPIO_Pin oe_pin)
Configure optional Output Enable (OE) pin.
void syn_shiftreg_out_write_byte (SYN_ShiftRegOut * sr, uint8_t chip_index, uint8_t val)
Set raw byte for a specific chip in the chain.

Public Functions Documentation

function syn_shiftreg_in_get_bit

Get logical state of a specific sampled input pin.

bool syn_shiftreg_in_get_bit (
    const SYN_ShiftRegIn * sr,
    uint16_t bit_index
) 

Parameters:

  • sr Shift register context.
  • bit_index Pin index (0 to num_chips*8 - 1).

Returns:

Logical state (true/false).


function syn_shiftreg_in_get_byte

Get sampled byte for a specific chip in the chain.

uint8_t syn_shiftreg_in_get_byte (
    const SYN_ShiftRegIn * sr,
    uint8_t chip_index
) 

Parameters:

  • sr Shift register context.
  • chip_index Chip index (0 to num_chips-1).

Returns:

8-bit byte value.


function syn_shiftreg_in_init

Initialize an Input Shift Register (74HC165).

SYN_Status syn_shiftreg_in_init (
    SYN_ShiftRegIn * sr,
    SYN_GPIO_Pin data_pin,
    SYN_GPIO_Pin clock_pin,
    SYN_GPIO_Pin load_pin,
    uint8_t num_chips
) 

Parameters:

  • sr Shift register context.
  • data_pin Serial Data In GPIO pin.
  • clock_pin Shift Clock GPIO pin.
  • load_pin Parallel Load GPIO pin.
  • num_chips Number of cascaded 8-bit chips (1 to 8).

Returns:

SYN_OK on success.


function syn_shiftreg_in_read

Pulse Parallel Load pin and clock in all input bits from hardware.

void syn_shiftreg_in_read (
    SYN_ShiftRegIn * sr
) 

Parameters:

  • sr Shift register context.

function syn_shiftreg_in_set_bit_order

Set bit order mode for input sampling.

void syn_shiftreg_in_set_bit_order (
    SYN_ShiftRegIn * sr,
    bool msb_first
) 

Parameters:

  • sr Shift register context.
  • msb_first True for MSB-first, false for LSB-first.

function syn_shiftreg_out_flush

Atomically flush buffer contents to physical hardware output pins.

void syn_shiftreg_out_flush (
    SYN_ShiftRegOut * sr
) 

Parameters:

  • sr Shift register context.

function syn_shiftreg_out_init

Initialize an Output Shift Register (74HC595).

SYN_Status syn_shiftreg_out_init (
    SYN_ShiftRegOut * sr,
    SYN_GPIO_Pin data_pin,
    SYN_GPIO_Pin clock_pin,
    SYN_GPIO_Pin latch_pin,
    uint8_t num_chips
) 

Parameters:

  • sr Shift register context.
  • data_pin Serial Data GPIO pin.
  • clock_pin Shift Clock GPIO pin.
  • latch_pin Latch / Storage Clock GPIO pin.
  • num_chips Number of cascaded 8-bit chips (1 to 8).

Returns:

SYN_OK on success.


function syn_shiftreg_out_set_bit

Set logical state of a single pin in the shift register chain.

void syn_shiftreg_out_set_bit (
    SYN_ShiftRegOut * sr,
    uint16_t bit_index,
    bool state
) 

Parameters:

  • sr Shift register context.
  • bit_index Pin index (0 to num_chips*8 - 1).
  • state Logical state.

function syn_shiftreg_out_set_bit_order

Set bit order mode.

void syn_shiftreg_out_set_bit_order (
    SYN_ShiftRegOut * sr,
    bool msb_first
) 

Parameters:

  • sr Shift register context.
  • msb_first True for MSB-first, false for LSB-first.

function syn_shiftreg_out_set_enable

Enable or disable outputs via Output Enable (OE) pin.

void syn_shiftreg_out_set_enable (
    SYN_ShiftRegOut * sr,
    bool enable
) 

Parameters:

  • sr Shift register context.
  • enable True to enable outputs (OE LOW).

function syn_shiftreg_out_set_oe_pin

Configure optional Output Enable (OE) pin.

void syn_shiftreg_out_set_oe_pin (
    SYN_ShiftRegOut * sr,
    SYN_GPIO_Pin oe_pin
) 

Parameters:

  • sr Shift register context.
  • oe_pin Output Enable GPIO pin.

function syn_shiftreg_out_write_byte

Set raw byte for a specific chip in the chain.

void syn_shiftreg_out_write_byte (
    SYN_ShiftRegOut * sr,
    uint8_t chip_index,
    uint8_t val
) 

Parameters:

  • sr Shift register context.
  • chip_index Chip index (0 to num_chips-1).
  • val 8-bit byte value.


The documentation for this class was generated from the following file src/syntropic/drivers/syn_shiftreg.c