Skip to content

Commit 7f81e15

Browse files
committed
Merge remote-tracking branch 'origin/main' into main
2 parents 38f6b9c + 927d5a0 commit 7f81e15

File tree

1 file changed

+9
-14
lines changed
  • ports/raspberrypi/common-hal/pulseio

1 file changed

+9
-14
lines changed

ports/raspberrypi/common-hal/pulseio/PulseIn.c

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,7 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
6262
self->len = 0;
6363
save_self = self;
6464

65-
// Set everything up.
66-
rp2pio_statemachine_obj_t state_machine;
67-
68-
bool ok = rp2pio_statemachine_construct(&state_machine,
65+
bool ok = rp2pio_statemachine_construct(&self->state_machine,
6966
pulsein_program, sizeof(pulsein_program) / sizeof(pulsein_program[0]),
7067
1000000,
7168
NULL, 0,
@@ -80,29 +77,26 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
8077
false,
8178
true, 32, true, // RX auto-push every 32 bits
8279
false); // claim pins
83-
pio_sm_set_enabled(state_machine.pio,state_machine.state_machine, false);
84-
self->state_machine.pio = state_machine.pio;
85-
self->state_machine.state_machine = state_machine.state_machine;
86-
self->state_machine.sm_config = state_machine.sm_config;
87-
self->state_machine.offset = state_machine.offset;
80+
81+
pio_sm_set_enabled(self->state_machine.pio,self->state_machine.state_machine, false);
8882
pio_sm_clear_fifos(self->state_machine.pio,self->state_machine.state_machine);
8983
last_level = self->idle_state;
9084
level_count = 0;
9185
result = 0;
9286
buf_index = 0;
9387

94-
pio_sm_set_in_pins(state_machine.pio,state_machine.state_machine,pin->number);
95-
common_hal_rp2pio_statemachine_set_interrupt_handler(&state_machine,&common_hal_pulseio_pulsein_interrupt,NULL,PIO_IRQ0_INTE_SM0_RXNEMPTY_BITS);
88+
pio_sm_set_in_pins(self->state_machine.pio,self->state_machine.state_machine,pin->number);
89+
common_hal_rp2pio_statemachine_set_interrupt_handler(&(self->state_machine),&common_hal_pulseio_pulsein_interrupt,NULL,PIO_IRQ0_INTE_SM0_RXNEMPTY_BITS);
9690

9791
// exec a set pindirs to 0 for input
98-
pio_sm_exec(state_machine.pio,state_machine.state_machine,0xe080);
92+
pio_sm_exec(self->state_machine.pio,self->state_machine.state_machine,0xe080);
9993
// exec the appropriate wait for pin
10094
if (self->idle_state == true) {
10195
pio_sm_exec(self->state_machine.pio,self->state_machine.state_machine,0x2020);
10296
} else {
10397
pio_sm_exec(self->state_machine.pio,self->state_machine.state_machine,0x20a0);
10498
}
105-
pio_sm_set_enabled(state_machine.pio, state_machine.state_machine, true);
99+
pio_sm_set_enabled(self->state_machine.pio, self->state_machine.state_machine, true);
106100
}
107101

108102
bool common_hal_pulseio_pulsein_deinited(pulseio_pulsein_obj_t *self) {
@@ -114,8 +108,9 @@ void common_hal_pulseio_pulsein_deinit(pulseio_pulsein_obj_t *self) {
114108
return;
115109
}
116110
pio_sm_set_enabled(self->state_machine.pio, self->state_machine.state_machine, false);
117-
pio_sm_unclaim(self->state_machine.pio, self->state_machine.state_machine);
111+
common_hal_rp2pio_statemachine_deinit(&self->state_machine);
118112
m_free(self->buffer);
113+
reset_pin_number(self->pin);
119114
self->pin = NO_PIN;
120115
}
121116

0 commit comments

Comments
 (0)