1.1 --- a/shift.c Sun Mar 24 01:01:32 2013 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,124 +0,0 @@
1.4 -#include <ubb/ubb.h>
1.5 -#include <stdio.h>
1.6 -#include <time.h>
1.7 -
1.8 -/* Pin assignments:
1.9 - *
1.10 - * M74HC595B1R
1.11 - *
1.12 - * QB |----| VCC UBB_VDD
1.13 - * QC | | QA
1.14 - * QD | | SI UBB_DAT2
1.15 - * QE | | G UBB_DAT0
1.16 - * QF | | RCK UBB_DAT1
1.17 - * QG | | SCK UBB_CLK
1.18 - * QH | | SCLR UBB_CMD
1.19 - * UBB_GND GND |----| QH' UBB_DAT3
1.20 - */
1.21 -
1.22 -#define SHIFT_SI UBB_DAT2
1.23 -#define SHIFT_QH UBB_DAT3
1.24 -#define SHIFT_SCLR UBB_CMD
1.25 -#define SHIFT_SCK UBB_CLK
1.26 -#define SHIFT_G UBB_DAT0
1.27 -#define SHIFT_RCK UBB_DAT1
1.28 -
1.29 -struct timespec tSCKs = {0, 15},
1.30 - tWH = {0, 15},
1.31 - tWL = {0, 15};
1.32 -
1.33 -void shift_in(uint8_t v)
1.34 -{
1.35 - uint8_t mask;
1.36 -
1.37 - for (mask = 0x80; mask; mask >>= 1)
1.38 - {
1.39 - if (v & mask)
1.40 - {
1.41 - printf("1");
1.42 - SET(SHIFT_SI);
1.43 - }
1.44 - else
1.45 - {
1.46 - printf("0");
1.47 - CLR(SHIFT_SI);
1.48 - }
1.49 -
1.50 - nanosleep(&tSCKs, NULL);
1.51 - SET(SHIFT_SCK);
1.52 - nanosleep(&tWH, NULL);
1.53 - CLR(SHIFT_SCK);
1.54 - }
1.55 -
1.56 - printf("\n");
1.57 -}
1.58 -
1.59 -uint8_t shift_out()
1.60 -{
1.61 - uint8_t mask, result = 0;
1.62 -
1.63 - for (mask = 0x80; mask; mask >>= 1)
1.64 - {
1.65 - if (PIN(SHIFT_QH))
1.66 - {
1.67 - result |= mask;
1.68 - printf("1");
1.69 - }
1.70 - else
1.71 - printf("0");
1.72 -
1.73 - nanosleep(&tSCKs, NULL);
1.74 - SET(SHIFT_SCK);
1.75 - nanosleep(&tWH, NULL);
1.76 - CLR(SHIFT_SCK);
1.77 - }
1.78 -
1.79 - printf("\n");
1.80 - return result;
1.81 -}
1.82 -
1.83 -int main(int argc, char *argv[])
1.84 -{
1.85 - uint8_t result = 0;
1.86 -
1.87 - if (ubb_open(0) < 0) {
1.88 - perror("ubb_open");
1.89 - return 1;
1.90 - }
1.91 -
1.92 - ubb_power(1);
1.93 - printf("Power on.\n");
1.94 -
1.95 - OUT(SHIFT_SI);
1.96 - OUT(SHIFT_RCK);
1.97 - OUT(SHIFT_SCLR);
1.98 - OUT(SHIFT_SCK);
1.99 - OUT(SHIFT_G);
1.100 - IN(SHIFT_QH);
1.101 -
1.102 - CLR(SHIFT_SCK);
1.103 - CLR(SHIFT_RCK);
1.104 -
1.105 - /* Clear the register. */
1.106 -
1.107 - CLR(SHIFT_SCLR);
1.108 - SET(SHIFT_SCK);
1.109 - nanosleep(&tWL, NULL);
1.110 - CLR(SHIFT_SCK);
1.111 - SET(SHIFT_SCLR);
1.112 -
1.113 - /* Shift in a value. */
1.114 -
1.115 - shift_in(0xa6);
1.116 -
1.117 - /* Shift out the value. */
1.118 -
1.119 - result = shift_out();
1.120 -
1.121 - printf("Result: %x\n", result);
1.122 -
1.123 - printf("Closing...\n");
1.124 - ubb_close(0);
1.125 -
1.126 - return 0;
1.127 -}