Сообщение от
Вольд
Уточняю вопрос. Достаточно ли однажды записать
SteppersConfig_Pru1MemoryTransfer(
STEPPER1_PRU1_dir := Dir,
STEPPER1_PRU1_stepper_accel_ramp := Accel,
STEPPER1_PRU1_stepper_decel_ramp := 200000000,
STEPPER1_PRU1_stepper_max_speed := 200000,
STEPPER1_PRU1_stepper_min_speed := 0,
STEPPER1_PRU1_stepper_quantity := Quantity,
STEPPER1_PRU1_stepper_enable := TRUE
);
чтобы эти значения постоянно передавались.
Что значит однажды?
При вызове SteppersConfig_Pru1MemoryTransfer(), в PRU передаются значения переменных блока SteppersConfig_Pru1MemoryTransfer.
Запись
Код:
SteppersConfig_Pru1MemoryTransfer(
STEPPER1_PRU1_dir := Dir,
STEPPER1_PRU1_stepper_accel_ramp := Accel,...
Это абсолютно то же самое, что и
Код:
SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_dir := Dir;
SteppersConfig_Pru1MemoryTransfer.STEPPER1_PRU1_stepper_accel_ramp := Accel;
SteppersConfig_Pru1MemoryTransfer();
Иными словами, запись SteppersConfig_Pru1MemoryTransfer(STEPPER1_PRU1_di r := Dir,) не несёт в себе какого-то магического "отныне STEPPER1_PRU1_dir будет отслеживать значение переменной Dir". STEPPER1_PRU1_dir и Dir это независимые переменные, поэтому, если нужно передавать новое значение Dir в PRU, то нужно и выполнять присваивание в переменную STEPPER1_PRU1_dir.