Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
Diff: trial.cpp
- Revision:
- 16:33c17c62840e
- Parent:
- 15:20f7f737c256
- Child:
- 17:0b241aa1f5b6
--- a/trial.cpp Mon Jun 25 17:43:40 2018 +0000 +++ b/trial.cpp Sat Jun 30 12:28:18 2018 +0000 @@ -18,21 +18,28 @@ // generate visual stimulus visualOut.setEnabled(false); - vis_dur_ms = 0; - vis_onset_ms = 0; + vis_dur_us = 0; + vis_onset_us = 0; switch (task.mode.value) { case Pair: - vis_onset_ms = task.pre_min_ms.value; - vis_dur_ms = task.vis_avg_ms.value; + vis_onset_us = ms_to_us(task.pre_min_ms.value); + vis_dur_us = ms_to_us(task.vis_avg_ms.value); visualOut.setEnabled(true); - visualOut.setOnset(ms_to_us(vis_onset_ms)); - visualOut.setDuration(ms_to_us(vis_dur_ms)); + visualOut.setOnset(vis_onset_us); + visualOut.setDuration(vis_dur_us); + rewardOut.setOnset(ms_to_us(task.reward_on_ms.value)); + rewardOut.setDuration(ms_to_us(task.reward_dur_ms.value)); break; case Report: case Associate: + assignRandomStim(task); visualOut.attachTurnOnCallback(&events::gate); - assignRandomStim(task); + // fallthrough + case Motion: + case MotionAlt: + rewardOut.setOnset(0); + rewardOut.setDuration(ms_to_us(task.reward_dur_ms.value)); break; } @@ -65,13 +72,13 @@ visualOut.setDuration(duration); visualOut.setOnset(onset); - vis_dur_ms = (duration + 500)/1000; - vis_onset_ms = (onset + 500)/1000; + vis_dur_us = duration; + vis_onset_us = onset; } else { // no pulse visualOut.setEnabled(false); - vis_dur_ms = 0; - vis_onset_ms = 0; + vis_dur_us = 0; + vis_onset_us = 0; } } @@ -110,8 +117,8 @@ IO::write("wait%u",waiting); - if (visualOut.isEnabled()) { - IO::write(";visual(onset%u,duration%u)",vis_onset_ms,vis_dur_ms); + if (visualOut.isEnabled() && (response != Responses::Reset)) { + IO::write(";visual(onset%u,duration%u)",vis_onset_us,vis_dur_us); } trialtime_t zero = (response == Responses::Reset)? starting : cuestarting;