~ruther/avr-shift-registers

ref: 1f2a92a06212f4f39cef70035f3250a2ae43e640 avr-shift-registers/src/sr/shift_register.c -rw-r--r-- 920 bytes
1f2a92a0 — František Boháček fix: code 5 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "seduce.h"
#include "shift_register_internal.h"
#include <util/delay.h>
#include <stdlib.h>

void avr_shift_register_destroy(ShiftRegisterHandle shiftRegisterHandle)
{
    free((ShiftRegister*) shiftRegisterHandle);
}

void avr_shift_register_clock_pulse(ShiftRegisterHandle shiftRegisterHandle)
{
    ShiftRegister* sr = (ShiftRegister*) shiftRegisterHandle;
    
    data_position_set_port(sr->clockPulse);
    _delay_ms(1);
    data_position_reset_port(sr->clockPulse);
}

void avr_shift_register_enable_clock(ShiftRegisterHandle shiftRegisterHandle)
{
    ShiftRegister* sr = (ShiftRegister*) shiftRegisterHandle;
    data_position_set_port(sr->clockEnable);

    sr->clockEnabled = 1;
}

void avr_shift_register_disable_clock(ShiftRegisterHandle shiftRegisterHandle)
{
    ShiftRegister* sr = (ShiftRegister*) shiftRegisterHandle;
    data_position_reset_port(sr->clockEnable);

    sr->clockEnabled = 0;
}