X-Git-Url: https://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=bort-panel.git;a=blobdiff_plain;f=seg.h;h=d3c5679bc5aca98596a72fdbb13211e8e4f52c5e;hp=0d6c8a6361c755af2f576fa83b17913910bbfa8d;hb=3bacb654b3471617c2e2ef7c338fef0b497de7fa;hpb=9883c3e41ef4e17fc50a60793a1a8db2bd7e3168 diff --git a/seg.h b/seg.h index 0d6c8a6..d3c5679 100644 --- a/seg.h +++ b/seg.h @@ -4,10 +4,12 @@ #include #include #include +#include #include #include #include +#include #define UP(N) set_pin(N, 1) #define DOWN(N) set_pin(N, 0) @@ -28,10 +30,64 @@ #define DISP_7 0x8e #define DISP_8 0x8f - volatile int g0, g1, g2; +const uint8_t d2seg[] = { + 0x3F + , 0x06 + , 0x5B + , 0x4F + , 0x66 + , 0x6D + , 0x7D + , 0x07 + , 0x7F + , 0x6F + , 0x77 + , 0x7C + , 0x39 + , 0x5E + , 0x79 + , 0x71 +}; + +uint8_t dig(uint8_t d) { + return d2seg[d]; +} + +/*void timer(long usec) { + sigset_t sigs; + int s; + + sigemptyset(&sigs); + sigaddset(&sigs, SIGALRM); + + ualarm(usec, 0); + sigwait(&sigs, &s); +}*/ + +/*void timer(long usec) { + struct timespec t; + t.tv_nsec = usec; + t.tv_sec = 0; + + nanosleep(&t, NULL); +}*/ + void kd() { + + asm("movs r0, #0"); + + for(int i = 0; i < 10; i++) { + asm("movs r0, #10\n\t" + "1: subs r0, r0, #1\n\t" + "bne 1b"); + } + +/* volatile int t = 0; + + while(t != 80000) + t++; */ /* struct timespec ts, rem; ts.tv_sec = 0; @@ -40,8 +96,7 @@ void kd() { rem.tv_sec = 0; rem.tv_nsec = 0; - nanosleep(&ts, &rem); - */ + nanosleep(&ts, &rem); */ } int name2dev(char *s) { @@ -59,6 +114,16 @@ int name2dev(char *s) { return g2; else if (! strncmp(s, "clk", GPIOPINMAXNAME)) return g2; + else if (! strncmp(s, "ser2", GPIOPINMAXNAME)) + return g1; + else if (! strncmp(s, "clk-sr", GPIOPINMAXNAME)) + return g1; + else if (! strncmp(s, "shld", GPIOPINMAXNAME)) + return g1; + else if (! strncmp(s, "clr", GPIOPINMAXNAME)) + return g0; + + else { printf("no gpio pin w/ name %s, exiting..\n", s); exit(2); @@ -108,6 +173,10 @@ void set_pin(char *name, int state) { void config_pins() { struct gpio_pin_set *ser, *oe, *rclk, *srclk, *srclr, *dio, *clk; + /* ??? XXX wtf */ + system("gpioctl gpio2 6 set out clk"); + system("gpioctl gpio2 8 set out dio"); + ser = calloc(1, sizeof(struct gpio_pin_set)); oe = calloc(1, sizeof(struct gpio_pin_set)); rclk = calloc(1, sizeof(struct gpio_pin_set)); @@ -227,4 +296,3 @@ void blink(int c, int ms) { } } -