Open ahshokry opened 4 years ago
example/example.rst:75: [broken] https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf: 404 Client Error: Not Found for url: https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf
getting_started/hardware_requirement.rst:26: [broken] http://www.huamaosoft.cn/bluetooth.asp?id=1: HTTPConnectionPool(host='www.huamaosoft.cn', port=80): Max retries exceeded with url: /bluetooth.asp?id=1 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))
If requested data length isn't integer multiple of (FIFO - THRE), the interrupt of I2S will be masked.
Let's assume FIFO = 16, THRE = 3, and requested data length is 20 bytes.
First,
i2s_tx_master_tx_ISR_proc
willcall i2s_tx_master_write_samples
with sample_cnt = (16 - 3) = 13. Second,i2s_tx_master_write_samples
will updatesample_cnt
to be 0, so the loop will exit.Upon receiving FIFO interrupt,
i2s_tx_master_tx_ISR_proc
will calli2s_tx_master_write_samples
again withsample_cnt = 13
.i2s_tx_master_write_samples
will updatesample_cnt
to be 13 - 7 (20 requested - 13 sent the previous round) = 6i2s_tx_master_write_samples
will find thatdev->xfr_len == *size
, so it will incrementsys_cnt
and call application callback.i2s_tx_master_tx_ISR_proc
will iterate one more time becausesample_cnt
didn't reach zero yet. Now, the conditionif (dev->sys_cnt == dev->usr_cnt)
will be true, so the interrupt will be masked.