Closed jonnew closed 2 months ago
The analog outputs on the breakout board requires unsigned 16-bit integer data that is interpreted by the hardware as offset binary:
https://open-ephys.github.io/onix-docs/Hardware%20Guide/Datasheets/fmc-analog-io.html#host-to-device-data-frames
However, signed data is used throughout the output node resulting in incorrect values being sent to the hardware:
https://github.com/open-ephys/onix-bonsai-onix1/blob/7ac700fb8a696d4d9f8d97c9d1b85765b9951ca6/OpenEphys.Onix1/BreakoutAnalogOutput.cs#L100
This issue applies to both Volts and S16 output options because they are both ultimately transformed to S16 before being sent.
Volts
S16
Fixed in #213
The analog outputs on the breakout board requires unsigned 16-bit integer data that is interpreted by the hardware as offset binary:
https://open-ephys.github.io/onix-docs/Hardware%20Guide/Datasheets/fmc-analog-io.html#host-to-device-data-frames
However, signed data is used throughout the output node resulting in incorrect values being sent to the hardware:
https://github.com/open-ephys/onix-bonsai-onix1/blob/7ac700fb8a696d4d9f8d97c9d1b85765b9951ca6/OpenEphys.Onix1/BreakoutAnalogOutput.cs#L100
This issue applies to both
Volts
andS16
output options because they are both ultimately transformed toS16
before being sent.