You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sending a megaFM firmware via amidi causes the update to fail, because timing is not upheld. Sending firmware sysexes usually requires to wait a certain time between two sysexes (so the flash can be written).
F0 data data data data data data data data data F7
<1 sec pause>
F0 data data data data data data data data data F7
...
however, it does send:
F0 data data data data data
<1 sec pause>
data data data data F7 F0 data data data data
<1 sec pause>
...
This is because the usb ISR stops reading midi packets from usb (so they get queued in the usb host) once a queue gets full, but is not informed when the queue gets non-full again.
The text was updated successfully, but these errors were encountered:
Fixes#93.
Essentially, when an UART queue becomes full, the USB task stops sending.
When the queue becomes non-full again, however, it did not start sending again,
until another USB interrupt was received for an unrelated reason. This caused
timing issues that break flashing firmwares via sysex, for example.
Sending a megaFM firmware via
amidi
causes the update to fail, because timing is not upheld. Sending firmware sysexes usually requires to wait a certain time between two sysexes (so the flash can be written).is supposed to send:
however, it does send:
This is because the usb ISR stops reading midi packets from usb (so they get queued in the usb host) once a queue gets full, but is not informed when the queue gets non-full again.
The text was updated successfully, but these errors were encountered: