shift register works
[bort-panel.git] / pins.c
CommitLineData
3bacb654
IS
1#include <stdlib.h>
2#include <fcntl.h>
3#include <signal.h>
4#include <unistd.h>
5#include <string.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <time.h>
9
10#include <sys/types.h>
11#include <sys/gpio.h>
12#include <sys/ioctl.h>
13
14#include "pins.h"
15
16#define UP(N) set_pin(N, 1)
17#define DOWN(N) set_pin(N, 0)
18
19#define HI(N) set(N, 1)
20#define LO(N) set(N, 0)
21
a315fde8
IS
22void kd2() {
23 usleep(10000);
24}
25
26void kdh() {
27 usleep(5000);
28}
29
30void kd1() {
31 usleep(1);
32}
33
34void test_pins() {
35 for(;;) {
36 HI("clk");
37 HI("clkinh");
38 LO("shld");
39 HI("clr");
40 kd1();
41 LO("clk");
42 LO("clkinh");
43 LO("shld");
44 LO("clr");
45 kd1();
46 }
47}
48
49/* call when clk is hi */
50void tick(int n) {
51 int i = 0;
52
53 for(; i < n; i++) {
54 LO("clk");
55 kd2();
56 HI("clk");
57 kd2();
58 }
59}
60
61void clear() {
62 HI("clk");
63 LO("clkinh");
64 kdh();
65 LO("clr");
66 kdh();
67 LO("clk");
68 kdh();
69 HI("clr");
70 kdh();
71 HI("clk");
72 kd2();
73}
74
3bacb654 75int main(int argc, char *argv[]) {
a315fde8
IS
76
77 signal(SIGINT, inth);
78
3bacb654 79 pins_init();
a315fde8 80// config_pins();
3bacb654
IS
81 pincnt();
82
3bacb654
IS
83 pcfg(1, 6, -1, INPUT | PULLDOWN, "ser");
84 pcfg(1, 13, 0, OUTPUT, "clk");
85 pcfg(1, 15, 0, OUTPUT, "shld");
86 pcfg(0, 27, 0, OUTPUT, "clr");
a315fde8 87 pcfg(1, 2, 0, OUTPUT, "clkinh");
3bacb654 88
a315fde8
IS
89 LO("clk");
90 HI("clkinh");
91 HI("clr");
92 LO("shld");
93
94 sleep(1);
95for(;;){
96 LO("clk");
97 HI("clkinh");
98 HI("clr");
99 LO("shld");
100 kd2();
101 kd2();
102 clear();
103
104 tick(4);
105 LO("clk");
106 LO("shld");
107 kd2();
108 HI("clk");
109 kdh();
110 HI("clkinh");
111 kdh();
112 LO("clk");
113
114 LO("shld");
115 kdh();
116 kdh();
117 HI("clk");
118 kd2();
119 tick(2);
120 LO("clk");
121 LO("clkinh");
122 kd2();
123 HI("clk");
124 kd2();
125 tick(10);
126}
3bacb654 127}