-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BACKPORT] stm32f40xxx_i2c isr processing #38
[BACKPORT] stm32f40xxx_i2c isr processing #38
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs flight testing - can you raise a PX4 PR for that?
@dagar to answer your question the delta was typically 68 us. I am not sure that would have been picked up. Some longer operation had deltas of 234 uS - that might be detectable. |
@LorenzMeier PX4/Firmware PR is here PX4/PX4-Autopilot#10714 |
* Documentation/NuttXCCodingStandard.html: Remove requirement to decorate ignored returned values with (void). * sched_mergepending.c: Correct some errors in comments. Co-authored-by: Gregory Nutt <gnutt@nuttx.org>
set CONFIG_PRIORITY_INHERITANCE=y set CONFIG_SEM_PREALLOCHOLDERS=0 or CONFIG_SEM_PREALLOCHOLDERS=8 #24 0x4dcab71 in __assert assert/lib_assert.c:37 #25 0x4d6b0e9 in nxsem_destroyholder semaphore/sem_holder.c:602 #26 0x4d80cf7 in nxsem_destroy semaphore/sem_destroy.c:80 #27 0x4d80db9 in sem_destroy semaphore/sem_destroy.c:120 #28 0x4dcb077 in nxmutex_destroy misc/lib_mutex.c:122 #29 0x4dc6611 in pipecommon_freedev pipes/pipe_common.c:117 #30 0x4dc7fdc in pipecommon_close pipes/pipe_common.c:397 #31 0x4ed4f6d in file_close vfs/fs_close.c:78 #32 0x6a91133 in local_free local/local_conn.c:184 #33 0x6a92a9c in local_release local/local_release.c:129 #34 0x6a91d1a in local_subref local/local_conn.c:271 #35 0x6a75767 in local_close local/local_sockif.c:797 #36 0x4e978f6 in psock_close socket/net_close.c:102 #37 0x4eed1b9 in sock_file_close socket/socket.c:115 #38 0x4ed4f6d in file_close vfs/fs_close.c:78 #39 0x4ed1459 in nx_close_from_tcb inode/fs_files.c:754 #40 0x4ed1501 in nx_close inode/fs_files.c:781 #41 0x4ed154a in close inode/fs_files.c:819 #42 0x6bcb9ce in property_get kvdb/client.c:307 #43 0x6bcd465 in property_get_int32 kvdb/common.c:270 #44 0x5106c9a in tz_offset_restore app/miwear_bluetooth.c:745 #45 0x510893f in miwear_bluetooth_main app/miwear_bluetooth.c:1033 #46 0x4dcf5c8 in nxtask_startup sched/task_startup.c:70 #47 0x4d70873 in nxtask_start task/task_start.c:134 #48 0x4e04a07 in pre_start sim/sim_initialstate.c:52 Signed-off-by: ligd <liguiding1@xiaomi.com>
Due to some errant condition (I2C error or code)
The ISR was being rentered until the end of the
frame. Causing other ISR to not run for 280 uS.
Backport of Alexander Oryshchenko comits
d1cfcab, 643234d, 9b812e3 fixes this condition.
Tested with this file using an arduino nano and a BS170 FET.
DUT was FMUv4 RC15 with 3DR HMC5885+GPS (Both cables connected)
Nano connected as follows:
GND = DUT GND pin 4 I2C Cable
D3 = DUT SDA pin 3 I2C Cable
D2 = DUT SCL pin 2 I2C Cable
BS170 Drain (1) to D3 (DUT SDA)
BS170 Gate (2) to D13
BS170 Source (3) to GND
See PX4/PX4-Autopilot#7968 and PX4/PX4-Autopilot#7951 for reference.
Reset is called as needed and there are no extra interrupts.