File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -70,8 +70,8 @@ void gamepad_init_shift(digitalio_digitalinout_obj_t *data_pin,
7070 common_hal_digitalio_digitalinout_switch_to_output (clock_pin , 0 , DRIVE_MODE_PUSH_PULL );
7171 gamepad_singleton -> pins [1 ] = clock_pin ;
7272
73- common_hal_digitalio_digitalinout_switch_to_output (clock_pin , 1 , DRIVE_MODE_PUSH_PULL );
73+ common_hal_digitalio_digitalinout_switch_to_output (latch_pin , 1 , DRIVE_MODE_PUSH_PULL );
7474 gamepad_singleton -> pins [2 ] = latch_pin ;
7575
76- gamepad_singleton -> kind = GAMEPAD_KIND_PINS ;
76+ gamepad_singleton -> kind = GAMEPAD_KIND_SHIFT ;
7777}
Original file line number Diff line number Diff line change @@ -54,32 +54,21 @@ void pressed_pins(gamepad_obj_t *self) {
5454
5555
5656void pressed_shift (gamepad_obj_t * self ) {
57- static volatile uint8_t i = 8 ;
58- static volatile uint8_t clock = 0 ;
57+ uint8_t bit = 1 ;
5958 digitalio_digitalinout_obj_t * data_pin = self -> pins [0 ];
6059 digitalio_digitalinout_obj_t * clock_pin = self -> pins [1 ];
6160 digitalio_digitalinout_obj_t * latch_pin = self -> pins [2 ];
6261
63- if (clock == 0 ) {
64- common_hal_digitalio_digitalinout_set_value (clock_pin , 1 );
65- clock = 1 ;
66- return ;
67- }
68-
69- if (i == 8 ) {
70- common_hal_digitalio_digitalinout_set_value (latch_pin , 0 );
71- i = 9 ;
72- } else if (i == 9 ) {
73- common_hal_digitalio_digitalinout_set_value (latch_pin , 1 );
74- i = 0 ;
75- } else {
62+ common_hal_digitalio_digitalinout_set_value (latch_pin , 1 );
63+ for (int i = 0 ; i < 8 ; ++ i ) {
64+ common_hal_digitalio_digitalinout_set_value (clock_pin , 0 );
7665 if (common_hal_digitalio_digitalinout_get_value (data_pin )) {
77- self -> pressed |= ( 1 << i ) ;
66+ self -> pressed |= bit ;
7867 }
79- i += 1 ;
68+ bit <<= 1 ;
69+ common_hal_digitalio_digitalinout_set_value (clock_pin , 1 );
8070 }
81- common_hal_digitalio_digitalinout_set_value (clock_pin , 0 );
82- clock = 0 ;
71+ common_hal_digitalio_digitalinout_set_value (latch_pin , 0 );
8372}
8473
8574
You can’t perform that action at this time.
0 commit comments