Igor Martinovski
/
USBJoystick
N64 to USB HID interface
Diff: main.cpp
- Revision:
- 5:eb93a4f91396
- Parent:
- 4:fee2d61ad6bc
diff -r fee2d61ad6bc -r eb93a4f91396 main.cpp --- a/main.cpp Fri Sep 30 23:16:52 2011 +0000 +++ b/main.cpp Wed Dec 10 14:22:30 2014 +0000 @@ -112,8 +112,8 @@ #define WRITE_EEPROM 0x05 #define RESET_CONTROLLER 0xff -#define T1 22 // Corresponds to 1 us -#define T2 68 // Corresponds to 3 us +#define T1 23 // Corresponds to 1 us +#define T2 69 // Corresponds to 3 us DigitalInOut inout(p14); // Connect controller here // using 220 ohm pull-up @@ -162,7 +162,7 @@ delay(60); sample=inout.read(); if (sample) - byte = byte | (1<<bit); + byte = byte | (128>>bit); bit++; } @@ -170,21 +170,10 @@ } } - /* The for loop here is used to reverse the bits for the x and y values retured - by the controller. I am not entirely sure of the format. I'm missing a bit - somewhere.. Values don't range from -127..128. */ - /* - x=y=0; - for (i=0; i<=7; i++) { - if (controls.array[2] & (1 << i)) - x=x | (1 << (7-i)); - if (controls.array[3] & (1 << i)) - y=y | (1 << (7-i)); - } - data_array[2]=x; - data_array[3]=y; - */ - //data_array[2]= 5; +data_array[2] -= 128; +data_array[3] -= 128; +data_array[4] -= 128; +data_array[5] -= 128; return n; } /* void send_byte(unsigned char byte) is used to send a single @@ -266,17 +255,29 @@ cmd[0]=64; send(cmd,3); receive(controls.array, 8); // Start receiving bit stream - //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]); + joystick.joystick(controls.array[0], controls.array[1], + controls.array[2], controls.array[3], + controls.array[4], controls.array[5], + controls.array[6], controls.array[7] + ); + + + //pc.printf("%d\t%d\t", (uint8_t)controls.array[0],(uint8_t)controls.array[1]); + //pc.printf("%d\t%d\t%d\t%d\t%d\t%d", (int8_t)(controls.array[2]),(int8_t)controls.array[3],(int8_t)controls.array[4],(int8_t)controls.array[5],controls.array[6],controls.array[7]); + //pc.printf("\n"); - for (n=7; n>=0; n--){ - if (controls.array[2] & (1 << n)) + //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]); +/* + for (n=12; n<8; n++){ + if (controls.array[2] & (128 >> n)) pc.printf("1"); else pc.printf("0"); } - //pc.printf("%d %d", (int8_t)(controls.array[2]^= (1 << 7)),controls.array[3]); + pc.printf("%d\t%d\t", (uint8_t)controls.array[0],(uint8_t)controls.array[1]); + pc.printf("%d\t%d\t%d\t%d\t%d\t%d", (int8_t)(controls.array[2]),(int8_t)controls.array[3],(int8_t)controls.array[4],(int8_t)controls.array[5],controls.array[6],controls.array[7]); pc.printf("\n"); -/* + for (n=0; n<16; n++) pc.printf("%d", (1 & ((uint16_t)controls.result[0] >> n))); pc.printf(" "); @@ -306,7 +307,7 @@ //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]); //pc.printf("%d\n",controls.result_32); - joystick.joystick(controls.array[0],controls.array[1], controls.array[2], controls.array[3]); + //joystick.joystick(controls.array[0],controls.array[1], controls.array[2], controls.array[3]); } } \ No newline at end of file