esp-idf-hal
esp-idf-hal copied to clipboard
Add RMT receiver
Adding receive capability to RMT. I am new to rust so code should be reviewed as it might not represent the rust way of doing things.
How do I run the ci.yml on my fork on my local pc?
How do I run the ci.yml on my fork on my local pc?
https://github.com/nektos/act could work, alternatively, you can keep pushing here and we'll squash the commit history when its ready to merge :).
When testing rmt-transceiver.rs I see the following output.
I (0) cpu_start: Starting scheduler on APP CPU.
I (348) mcpwm_test: Starting APP!
I (348) gpio: GPIO[36]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
W (368) mcpwm_test: Rx Loop
I (368) gpio: GPIO[25]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
E (378) mcpwm_test: Tx Loop
W (868) mcpwm_test: Rx Loop
W (1368) mcpwm_test: Rx Loop
E (1378) mcpwm_test: Tx Loop
W (1868) mcpwm_test: Rx Loop
W (1868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (1868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (1878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (1888) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (1898) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (2378) mcpwm_test: Tx Loop
W (2408) mcpwm_test: Rx Loop
W (2408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (2428) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (2438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (2948) mcpwm_test: Rx Loop
W (2948) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2948) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2958) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (2968) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (2978) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
In theory the transmit time for the RMT signal (total time) should be 3.930 milliseconds. The Tx loop from above has timestamp 378, the 2nd and 3rd RX loop time stamps are 868 and 1368. Not sure why one of those Rx loop timestamps did not pick up the 1st Tx loop? The 2nd Tx Loop and beyond gets picked up by the Rx loop. Strange?
Maybe the problem (or maybe it is not a problem) is with logging. In the screen capture below it shows 2 Rx Loops one right after another (timestamp 2408, 2948) but only one Tx Loop (timestamp 2378). From ten on out I see one Tx Loop and 2 Rx Loops (one with data the other empty) which is correct since Rx Loop is every 500 milliseconds and Tx Loop is every 1 second. I not sure why the screen output should look as it is shown and if it really is a problem.
I (348) mcpwm_test: Starting APP!
I (348) gpio: GPIO[36]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
W (368) mcpwm_test: Rx Loop
I (368) gpio: GPIO[25]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
E (378) mcpwm_test: Tx Loop
W (868) mcpwm_test: Rx Loop
W (1368) mcpwm_test: Rx Loop
E (1378) mcpwm_test: Tx Loop
W (1868) mcpwm_test: Rx Loop
W (1868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (1868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (1878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (1888) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (1898) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (2378) mcpwm_test: Tx Loop
W (2408) mcpwm_test: Rx Loop
W (2408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (2428) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (2438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (2948) mcpwm_test: Rx Loop
W (2948) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2948) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (2958) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (2968) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (2978) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (3378) mcpwm_test: Tx Loop
W (3488) mcpwm_test: Rx Loop
W (3488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (3488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (3498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (3508) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (3518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (4028) mcpwm_test: Rx Loop
E (4378) mcpwm_test: Tx Loop
W (4528) mcpwm_test: Rx Loop
W (4528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (4528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (4538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (4548) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (4558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (5068) mcpwm_test: Rx Loop
E (5378) mcpwm_test: Tx Loop
W (5568) mcpwm_test: Rx Loop
W (5568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (5568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (5578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (5588) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (5598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (6108) mcpwm_test: Rx Loop
E (6378) mcpwm_test: Tx Loop
W (6608) mcpwm_test: Rx Loop
W (6608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (6608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (6618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (6628) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (6638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (7148) mcpwm_test: Rx Loop
E (7378) mcpwm_test: Tx Loop
W (7648) mcpwm_test: Rx Loop
W (7648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (7648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (7658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (7668) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (7678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (8188) mcpwm_test: Rx Loop
E (8378) mcpwm_test: Tx Loop
W (8688) mcpwm_test: Rx Loop
W (8688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (8688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (8698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (8708) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (8718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (9228) mcpwm_test: Rx Loop
E (9378) mcpwm_test: Tx Loop
W (9728) mcpwm_test: Rx Loop
W (9728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (9728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (9738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (9748) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (9758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (10268) mcpwm_test: Rx Loop
E (10378) mcpwm_test: Tx Loop
W (10768) mcpwm_test: Rx Loop
W (10768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (10768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (10778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (10788) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (10798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (11308) mcpwm_test: Rx Loop
E (11378) mcpwm_test: Tx Loop
W (11808) mcpwm_test: Rx Loop
W (11808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (11808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (11818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (11828) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (11838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (12348) mcpwm_test: Rx Loop
E (12378) mcpwm_test: Tx Loop
W (12848) mcpwm_test: Rx Loop
W (12848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (12848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (12858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (12868) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (12878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (13378) mcpwm_test: Tx Loop
W (13388) mcpwm_test: Rx Loop
W (13388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (13388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (13398) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (13408) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (13418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (13928) mcpwm_test: Rx Loop
E (14378) mcpwm_test: Tx Loop
W (14428) mcpwm_test: Rx Loop
W (14428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (14428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (14438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (14448) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (14458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (14968) mcpwm_test: Rx Loop
E (15378) mcpwm_test: Tx Loop
W (15468) mcpwm_test: Rx Loop
W (15468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (15468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (15478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (15488) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (15498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (16008) mcpwm_test: Rx Loop
E (16378) mcpwm_test: Tx Loop
W (16508) mcpwm_test: Rx Loop
W (16508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (16508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (16518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (16528) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (16538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (17048) mcpwm_test: Rx Loop
E (17378) mcpwm_test: Tx Loop
W (17548) mcpwm_test: Rx Loop
W (17548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (17548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (17558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (17568) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (17578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (18088) mcpwm_test: Rx Loop
E (18378) mcpwm_test: Tx Loop
W (18588) mcpwm_test: Rx Loop
W (18588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (18588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (18598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (18608) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (18618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (19128) mcpwm_test: Rx Loop
E (19378) mcpwm_test: Tx Loop
W (19628) mcpwm_test: Rx Loop
W (19628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (19628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (19638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (19648) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (19658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (20168) mcpwm_test: Rx Loop
E (20378) mcpwm_test: Tx Loop
W (20668) mcpwm_test: Rx Loop
W (20668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (20668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (20678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (20688) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (20698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (21208) mcpwm_test: Rx Loop
E (21378) mcpwm_test: Tx Loop
W (21708) mcpwm_test: Rx Loop
W (21708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (21708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (21718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (21728) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (21738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (22248) mcpwm_test: Rx Loop
E (22378) mcpwm_test: Tx Loop
W (22748) mcpwm_test: Rx Loop
W (22748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (22748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (22758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (22768) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (22778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (23288) mcpwm_test: Rx Loop
E (23378) mcpwm_test: Tx Loop
W (23788) mcpwm_test: Rx Loop
W (23788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (23788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (23798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (23808) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (23818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (24328) mcpwm_test: Rx Loop
E (24378) mcpwm_test: Tx Loop
W (24828) mcpwm_test: Rx Loop
W (24828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (24828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (24838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (24848) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (24858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (25368) mcpwm_test: Rx Loop
E (25378) mcpwm_test: Tx Loop
W (25868) mcpwm_test: Rx Loop
W (25868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (25868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (25878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (25888) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (25898) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (26378) mcpwm_test: Tx Loop
W (26408) mcpwm_test: Rx Loop
W (26408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (26408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (26418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (26428) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (26438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (26948) mcpwm_test: Rx Loop
E (27378) mcpwm_test: Tx Loop
W (27448) mcpwm_test: Rx Loop
W (27448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (27448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (27458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (27468) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (27478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (27988) mcpwm_test: Rx Loop
E (28378) mcpwm_test: Tx Loop
W (28488) mcpwm_test: Rx Loop
W (28488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (28488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (28498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (28508) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (28518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (29028) mcpwm_test: Rx Loop
E (29378) mcpwm_test: Tx Loop
W (29528) mcpwm_test: Rx Loop
W (29528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (29528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (29538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (29548) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (29558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (30068) mcpwm_test: Rx Loop
E (30378) mcpwm_test: Tx Loop
W (30568) mcpwm_test: Rx Loop
W (30568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (30568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (30578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (30588) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (30598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (31108) mcpwm_test: Rx Loop
E (31378) mcpwm_test: Tx Loop
W (31608) mcpwm_test: Rx Loop
W (31608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (31608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (31618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (31628) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (31638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (32148) mcpwm_test: Rx Loop
E (32378) mcpwm_test: Tx Loop
W (32648) mcpwm_test: Rx Loop
W (32648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (32648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (32658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (32668) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (32678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (33188) mcpwm_test: Rx Loop
E (33378) mcpwm_test: Tx Loop
W (33688) mcpwm_test: Rx Loop
W (33688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (33688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (33698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (33708) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (33718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (34228) mcpwm_test: Rx Loop
E (34378) mcpwm_test: Tx Loop
W (34728) mcpwm_test: Rx Loop
W (34728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (34728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (34738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (34748) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (34758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (35268) mcpwm_test: Rx Loop
E (35378) mcpwm_test: Tx Loop
W (35768) mcpwm_test: Rx Loop
W (35768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (35768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (35778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (35788) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (35798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (36308) mcpwm_test: Rx Loop
E (36378) mcpwm_test: Tx Loop
W (36808) mcpwm_test: Rx Loop
W (36808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (36808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (36818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (36828) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (36838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (37348) mcpwm_test: Rx Loop
E (37378) mcpwm_test: Tx Loop
W (37848) mcpwm_test: Rx Loop
W (37848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (37848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (37858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (37868) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (37878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (38378) mcpwm_test: Tx Loop
W (38388) mcpwm_test: Rx Loop
W (38388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (38388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (38398) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (38408) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (38418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (38928) mcpwm_test: Rx Loop
E (39378) mcpwm_test: Tx Loop
W (39428) mcpwm_test: Rx Loop
W (39428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (39428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (39438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (39448) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (39458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (39968) mcpwm_test: Rx Loop
E (40378) mcpwm_test: Tx Loop
W (40468) mcpwm_test: Rx Loop
W (40468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (40468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (40478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (40488) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (40498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (41008) mcpwm_test: Rx Loop
E (41378) mcpwm_test: Tx Loop
W (41508) mcpwm_test: Rx Loop
W (41508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (41508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (41518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (41528) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (41538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (42048) mcpwm_test: Rx Loop
E (42378) mcpwm_test: Tx Loop
W (42548) mcpwm_test: Rx Loop
W (42548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (42548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (42558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (42568) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (42578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (43088) mcpwm_test: Rx Loop
E (43378) mcpwm_test: Tx Loop
W (43588) mcpwm_test: Rx Loop
W (43588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (43588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (43598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (43608) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (43618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (44128) mcpwm_test: Rx Loop
E (44378) mcpwm_test: Tx Loop
W (44628) mcpwm_test: Rx Loop
W (44628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (44628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (44638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (44648) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (44658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (45168) mcpwm_test: Rx Loop
E (45378) mcpwm_test: Tx Loop
W (45668) mcpwm_test: Rx Loop
W (45668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (45668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (45678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (45688) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (45698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (46208) mcpwm_test: Rx Loop
E (46378) mcpwm_test: Tx Loop
W (46708) mcpwm_test: Rx Loop
W (46708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (46708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (46718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (46728) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (46738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (47248) mcpwm_test: Rx Loop
E (47378) mcpwm_test: Tx Loop
W (47748) mcpwm_test: Rx Loop
W (47748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (47748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (47758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (47768) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (47778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (48288) mcpwm_test: Rx Loop
E (48378) mcpwm_test: Tx Loop
W (48788) mcpwm_test: Rx Loop
W (48788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (48788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (48798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (48808) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (48818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (49328) mcpwm_test: Rx Loop
E (49378) mcpwm_test: Tx Loop
W (49828) mcpwm_test: Rx Loop
W (49828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (49828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (49838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (49848) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (49858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (50368) mcpwm_test: Rx Loop
E (50378) mcpwm_test: Tx Loop
W (50868) mcpwm_test: Rx Loop
W (50868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (50868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (50878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (50888) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (50898) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (51378) mcpwm_test: Tx Loop
W (51408) mcpwm_test: Rx Loop
W (51408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (51408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (51418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (51428) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (51438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (51948) mcpwm_test: Rx Loop
E (52378) mcpwm_test: Tx Loop
W (52448) mcpwm_test: Rx Loop
W (52448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (52448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (52458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (52468) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (52478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (52988) mcpwm_test: Rx Loop
E (53378) mcpwm_test: Tx Loop
W (53488) mcpwm_test: Rx Loop
W (53488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (53488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (53498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (53508) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (53518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (54028) mcpwm_test: Rx Loop
E (54378) mcpwm_test: Tx Loop
W (54528) mcpwm_test: Rx Loop
W (54528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (54528) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (54538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (54548) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (54558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (55068) mcpwm_test: Rx Loop
E (55378) mcpwm_test: Tx Loop
W (55568) mcpwm_test: Rx Loop
W (55568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (55568) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (55578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (55588) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (55598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (56108) mcpwm_test: Rx Loop
E (56378) mcpwm_test: Tx Loop
W (56608) mcpwm_test: Rx Loop
W (56608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (56608) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (56618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (56628) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (56638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (57148) mcpwm_test: Rx Loop
E (57378) mcpwm_test: Tx Loop
W (57648) mcpwm_test: Rx Loop
W (57648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (57648) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (57658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (57668) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (57678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (58188) mcpwm_test: Rx Loop
E (58378) mcpwm_test: Tx Loop
W (58688) mcpwm_test: Rx Loop
W (58688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (58688) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (58698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (58708) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (58718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (59228) mcpwm_test: Rx Loop
E (59378) mcpwm_test: Tx Loop
W (59728) mcpwm_test: Rx Loop
W (59728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (59728) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (59738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (59748) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (59758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (60268) mcpwm_test: Rx Loop
E (60378) mcpwm_test: Tx Loop
W (60768) mcpwm_test: Rx Loop
W (60768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (60768) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (60778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (60788) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (60798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (61308) mcpwm_test: Rx Loop
E (61378) mcpwm_test: Tx Loop
W (61808) mcpwm_test: Rx Loop
W (61808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (61808) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (61818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (61828) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (61838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (62348) mcpwm_test: Rx Loop
E (62378) mcpwm_test: Tx Loop
W (62848) mcpwm_test: Rx Loop
W (62848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (62848) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (62858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (62868) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (62878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (63378) mcpwm_test: Tx Loop
W (63388) mcpwm_test: Rx Loop
W (63388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (63388) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (63398) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (63408) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (63418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (63928) mcpwm_test: Rx Loop
E (64378) mcpwm_test: Tx Loop
W (64428) mcpwm_test: Rx Loop
W (64428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (64428) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (64438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (64448) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (64458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (64968) mcpwm_test: Rx Loop
E (65378) mcpwm_test: Tx Loop
W (65468) mcpwm_test: Rx Loop
W (65468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (65468) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (65478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (65488) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (65498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (66008) mcpwm_test: Rx Loop
E (66378) mcpwm_test: Tx Loop
W (66508) mcpwm_test: Rx Loop
W (66508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (66508) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (66518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (66528) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (66538) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (67048) mcpwm_test: Rx Loop
E (67378) mcpwm_test: Tx Loop
W (67548) mcpwm_test: Rx Loop
W (67548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (67548) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (67558) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (67568) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (67578) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (68088) mcpwm_test: Rx Loop
E (68378) mcpwm_test: Tx Loop
W (68588) mcpwm_test: Rx Loop
W (68588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (68588) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (68598) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (68608) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (68618) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (69128) mcpwm_test: Rx Loop
E (69378) mcpwm_test: Tx Loop
W (69628) mcpwm_test: Rx Loop
W (69628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (69628) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (69638) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (69648) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (69658) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (70168) mcpwm_test: Rx Loop
E (70378) mcpwm_test: Tx Loop
W (70668) mcpwm_test: Rx Loop
W (70668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (70668) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (70678) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (70688) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (70698) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (71208) mcpwm_test: Rx Loop
E (71378) mcpwm_test: Tx Loop
W (71708) mcpwm_test: Rx Loop
W (71708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (71708) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (71718) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (71728) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (71738) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (72248) mcpwm_test: Rx Loop
E (72378) mcpwm_test: Tx Loop
W (72748) mcpwm_test: Rx Loop
W (72748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (72748) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (72758) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (72768) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (72778) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (73288) mcpwm_test: Rx Loop
E (73378) mcpwm_test: Tx Loop
W (73788) mcpwm_test: Rx Loop
W (73788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (73788) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (73798) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (73808) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (73818) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (74328) mcpwm_test: Rx Loop
E (74378) mcpwm_test: Tx Loop
W (74828) mcpwm_test: Rx Loop
W (74828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (74828) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (74838) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (74848) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (74858) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (75368) mcpwm_test: Rx Loop
E (75378) mcpwm_test: Tx Loop
W (75868) mcpwm_test: Rx Loop
W (75868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (75868) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (75878) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (75888) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (75898) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
E (76378) mcpwm_test: Tx Loop
W (76408) mcpwm_test: Rx Loop
W (76408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (76408) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (76418) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (76428) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (76438) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (76948) mcpwm_test: Rx Loop
E (77378) mcpwm_test: Tx Loop
W (77448) mcpwm_test: Rx Loop
W (77448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (77448) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (77458) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (77468) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (77478) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (77988) mcpwm_test: Rx Loop
E (78378) mcpwm_test: Tx Loop
W (78488) mcpwm_test: Rx Loop
W (78488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (78488) mcpwm_test: level0 = High dur0 = PulseTicks(620) level1 = Low dur1 = PulseTicks(620)
W (78498) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(410)
W (78508) mcpwm_test: level0 = High dur0 = PulseTicks(410) level1 = Low dur1 = PulseTicks(210)
W (78518) mcpwm_test: level0 = High dur0 = PulseTicks(210) level1 = Low dur1 = PulseTicks(0)
W (79028) mcpwm_test: Rx Loop
@MabezDev I think you are following the development of RMT and mcpwm. Would you like to review this and #93 and merge when you think this stuff is in a good shape?
Can someone explain what the Clippy errors mean.
Can someone explain what the Clippy errors mean.
CI was stuck on an old nightly which broke libc, its now fixed with this commit in master https://github.com/esp-rs/esp-idf-hal/commit/5edffdac61bdd29bbb0bf1dd9f929bb94fc742f5. If you rebase this branch on top of master it should fix the errors :).
I am getting build errors that I do not understand why they are happening. These occur in the example file rmt_transceiver.rs
error[E0432]: unresolved import `log`
--> examples/rmt_transceiver.rs:23:5
|
23 | use log::*;
| ^^^ use of undeclared crate or module `log`
error: cannot find macro `error` in this scope
--> examples/rmt_transceiver.rs:94:9
|
94 | error!("Tx Loop");
| ^^^^^
error: cannot find macro `warn` in this scope
--> examples/rmt_transceiver.rs:61:17
|
61 | warn!(
| ^^^^
|
= note: `warn` is in scope, but it is an attribute: `#[warn]`
error: cannot find macro `warn` in this scope
--> examples/rmt_transceiver.rs:52:9
|
52 | warn!("Rx Loop");
| ^^^^
|
= note: `warn` is in scope, but it is an attribute: `#[warn]`
error: cannot find macro `info` in this scope
--> examples/rmt_transceiver.rs:38:5
|
38 | info!("Starting APP!");
| ^^^^
error[E0433]: failed to resolve: use of undeclared crate or module `esp_idf_svc`
--> examples/rmt_transceiver.rs:36:5
|
36 | esp_idf_svc::log::EspLogger::initialize_default();
| ^^^^^^^^^^^ use of undeclared crate or module `esp_idf_svc`
|
help: there is a crate or module with a similar name
|
36 | esp_idf_sys::log::EspLogger::initialize_default();
| ~~~~~~~~~~~
Is there some reason we can't use log in examples?
I am getting build errors that I do not understand why they are happening. These occur in the example file rmt_transceiver.rs
error[E0432]: unresolved import `log` --> examples/rmt_transceiver.rs:23:5 | 23 | use log::*; | ^^^ use of undeclared crate or module `log` error: cannot find macro `error` in this scope --> examples/rmt_transceiver.rs:94:9 | 94 | error!("Tx Loop"); | ^^^^^ error: cannot find macro `warn` in this scope --> examples/rmt_transceiver.rs:61:17 | 61 | warn!( | ^^^^ | = note: `warn` is in scope, but it is an attribute: `#[warn]` error: cannot find macro `warn` in this scope --> examples/rmt_transceiver.rs:52:9 | 52 | warn!("Rx Loop"); | ^^^^ | = note: `warn` is in scope, but it is an attribute: `#[warn]` error: cannot find macro `info` in this scope --> examples/rmt_transceiver.rs:38:5 | 38 | info!("Starting APP!"); | ^^^^ error[E0433]: failed to resolve: use of undeclared crate or module `esp_idf_svc` --> examples/rmt_transceiver.rs:36:5 | 36 | esp_idf_svc::log::EspLogger::initialize_default(); | ^^^^^^^^^^^ use of undeclared crate or module `esp_idf_svc` | help: there is a crate or module with a similar name | 36 | esp_idf_sys::log::EspLogger::initialize_default(); | ~~~~~~~~~~~Is there some reason we can't use log in examples?
Too long to explain... :( please use println!
Would it be possible to rebase this PR for latest master? I just merged next into it so there are lots of changes.
It looks like a lot of changes to rmt.rs I am curious why TransmitConfig was changed to Config. It seemed to be an appropriate name since there is a transmit config and a receive config for the RMT I was implementing ReceiveConfig for the receiver. Should I keep ReceiveConfig or do you have something else in mind.
It looks like a lot of changes to rmt.rs I am curious why TransmitConfig was changed to Config. It seemed to be an appropriate name since there is a transmit config and a receive config for the RMT I was implementing ReceiveConfig for the receiver. Should I keep ReceiveConfig or do you have something else in mind.
By all means keep ReceiveConfig as it is. I've renamed Config back to TransmitConfig. With all the changes, it escaped my mind completely, that the receiver part is coming. :)
Do you think you could rebase your changes on top of latest master? The previous release I've kept in a separate branch, but I don't have the time to push into it new functionality. It is only there for bugfixes that would fix crashes and other gross errors.
@enelson1001 The PR is still reported as having conflicts by github.
Latest error looks like a dodgy rebase, could you take a look @enelson1001?
Looks like we now have the following - line 177
pub type RmtConfig = config::TransmitConfig;
Should this be renamed to TxRmtConfig and also implement RxRmtConfig for receiver
pub type TxRmtConfig = config::TransmitConfig;
pub type RxRmtConfig = config::ReceiveConfig;
drop has been implemented tor transmit, receive has release.
Should the following implementation in transmit be implemented in receive instead of receive release function?
impl<'d, C: RmtChannel> Drop for RmtDriver<'d, C> {
/// Stop transmitting and release the driver.
fn drop(&mut self) {
self.stop().unwrap();
esp!(unsafe { rmt_driver_uninstall(C::channel()) }).unwrap();
}
}
unsafe impl<'d, C: RmtChannel> Send for RmtDriver<'d, C> {}
Looks like we now have the following - line 177
pub type RmtConfig = config::TransmitConfig;Should this be renamed to TxRmtConfig and also implement RxRmtConfig for receiver
pub type TxRmtConfig = config::TransmitConfig; pub type RxRmtConfig = config::ReceiveConfig;drop has been implemented tor transmit, receive has release.
Should the following implementation in transmit be implemented in receive instead of receive release function? impl<'d, C: RmtChannel> Drop for RmtDriver<'d, C> { /// Stop transmitting and release the driver. fn drop(&mut self) { self.stop().unwrap(); esp!(unsafe { rmt_driver_uninstall(C::channel()) }).unwrap(); } } unsafe impl<'d, C: RmtChannel> Send for RmtDriver<'d, C> {}
Yes to both.
Should the rmt examples use
use esp_idf_hal::rmt::TxRmtConfig;
Instead of the following?
use esp_idf_hal::rmt::config::TransmitConfig;
Should the rmt examples use
use esp_idf_hal::rmt::TxRmtConfig;Instead of the following?
use esp_idf_hal::rmt::config::TransmitConfig;
Not so important, both symbols are public.
I am stuck and can't figure out how to resolve these Clippy errors. I used transmitter code as an example but for some reason the same code does not work in receiver. I am using InputPin instead of OutputPin
Any ideas how to resolve these two errors?
MY CODE
/// The RMT receiver.
///
/// Use [`RxRmtDriver::start()`] to receive pulses.
///
/// See the [rmt module][crate::rmt] for more information.
#[cfg(feature = "std")]
use std::convert::TryInto;
use self::config::ReceiveConfig;
//#[derive(Clone, Default)]
#[cfg(feature = "alloc")]
pub struct RxRmtDriver<'d, C: RmtChannel> {
_channel: PeripheralRef<'d, C>,
pub pulse_pair_vec: Vec<PulsePair>,
}
#[cfg(feature = "alloc")]
impl<'d, C: RmtChannel> RxRmtDriver<'d, C> {
/// Initialise the rmt module with the specified pin, channel and configuration.
///
/// To uninstall the driver just drop it.
///
/// Internally this calls `rmt_config()` and `rmt_driver_install()`.
pub fn new(
channel: impl Peripheral<P = C> + 'd,
pin: impl Peripheral<P = impl InputPin> + 'd, <------------------ CLIPPY ERROR HERE
config: &ReceiveConfig,
rx_buffer_size_in_bytes: u32,
) -> Result<Self, EspError> {
let flags = 0;
#[cfg(not(any(esp32, esp32c2)))]
let carrier_en = config.carrier.is_some();
#[cfg(not(any(esp32, esp32c2)))]
let carrier = config.carrier.unwrap_or_default();
let sys_config = rmt_config_t {
rmt_mode: rmt_mode_t_RMT_MODE_RX,
channel: C::channel(),
gpio_num: pin.pin(),
clk_div: config.clock_divider,
mem_block_num: config.mem_block_num,
flags,
__bindgen_anon_1: rmt_config_t__bindgen_ty_1 {
rx_config: rmt_rx_config_t {
idle_threshold: config.idle_threshold,
filter_ticks_thresh: config.filter_ticks_thresh,
filter_en: config.filter_en,
#[cfg(not(any(esp32, esp32c2)))]
rm_carrier: carrier_en,
#[cfg(not(any(esp32, esp32c2)))]
carrier_freq_hz: carrier.frequency.into(),
#[cfg(not(any(esp32, esp32c2)))]
carrier_level: carrier.carrier_level as u32,
#[cfg(not(any(esp32, esp32c2)))]
carrier_duty_percent: carrier.duty_percent.0,
},
},
};
let pulse_pair_size: u32 = rx_buffer_size_in_bytes / 4;
let pulse_pair_vec: Vec<PulsePair> =
Vec::with_capacity(pulse_pair_size.try_into().unwrap());
unsafe {
esp!(rmt_config(&sys_config))?;
esp!(rmt_driver_install(C::channel(), rx_buffer_size_in_bytes, 0))?;
}
Ok(Self {
_channel: channel, <--------- CLIPPY ERROR HERE
pulse_pair_vec,
})
}
The Clippy Errors
Compiling esp-idf-hal v0.39.0 (/home/ed/esp-idf-hal/esp-idf-hal)
error[E0599]: no method named `pin` found for type parameter `impl Peripheral<P = impl InputPin> + 'd` in the current scope
--> src/rmt.rs:956:27
|
941 | pin: impl Peripheral<P = impl InputPin> + 'd,
| --------------------------------------- method `pin` not found for this type parameter
...
956 | gpio_num: pin.pin(),
| ^^^ method not found in `impl Peripheral<P = impl InputPin> + 'd`
|
= help: items from traits can only be used if the type parameter is bounded by the trait
help: the following trait defines an item `pin`, perhaps you need to restrict type parameter `impl Peripheral<P = impl InputPin> + 'd` with it:
|
941 | pin: impl Peripheral<P = impl InputPin> + 'd + gpio::Pin,
| +++++++++++
error[E0308]: mismatched types
--> src/rmt.rs:987:23
|
940 | channel: impl Peripheral<P = C> + 'd,
| --------------------------- this type parameter
...
987 | _channel: channel,
| ^^^^^^^ expected struct `peripheral::PeripheralRef`, found type parameter `impl Peripheral<P = C> + 'd`
|
= note: expected struct `peripheral::PeripheralRef<'d, C>`
found type parameter `impl Peripheral<P = C> + 'd`
Some errors have detailed explanations: E0308, E0599.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `esp-idf-hal` due to 2 previous errors
These are easy. And by the way these are compilation errors, not Clippy lints. Just use the into_ref! macro. Search the esp-idf-hal to see how it is used in the other drivers.
When I run this command
$ export ESP_IDF_VERSION=release/v4.4; export ESP_IDF_SDKCONFIG_DEFAULTS=$(pwd)/.github/configs/sdkconfig.defaults; cargo build --features esp-idf-sys/native --no-default-features --target riscv32imc-esp-espidf -Zbuild-std=std,panic_abort -Zbuild-std-features=panic_immediate_abort
I am getting the following errors
ed@ed-ideacentre-AIO-910-27ISH:~/esp-idf-hal/esp-idf-hal$ export ESP_IDF_VERSION=release/v4.4; export ESP_IDF_SDKCONFIG_DEFAULTS=$(pwd)/.github/configs/sdkconfig.defaults; cargo build --features esp-idf-sys/native --no-default-features --target riscv32imc-esp-espidf -Zbuild-std=std,panic_abort -Zbuild-std-features=panic_immediate_abort
Compiling esp-idf-hal v0.39.0 (/home/ed/esp-idf-hal/esp-idf-hal)
error[E0412]: cannot find type `Vec` in this scope
--> src/rmt.rs:928:25
|
928 | pub pulse_pair_vec: Vec<PulsePair>,
| ^^^ not found in this scope
|
help: consider importing this struct
|
54 | use heapless::Vec;
|
error[E0412]: cannot find type `Vec` in this scope
--> src/rmt.rs:979:29
|
979 | let pulse_pair_vec: Vec<PulsePair> =
| ^^^ not found in this scope
|
help: consider importing this struct
|
54 | use heapless::Vec;
|
error[E0433]: failed to resolve: use of undeclared type `Vec`
--> src/rmt.rs:980:13
|
980 | Vec::with_capacity(pulse_pair_size.try_into().unwrap());
| ^^^ not found in this scope
|
help: consider importing this struct
|
54 | use heapless::Vec;
|
Some errors have detailed explanations: E0412, E0433.
For more information about an error, try `rustc --explain E0412`.
error: could not compile `esp-idf-hal` due to 3 previous errors
If I add the following (since I want to use the heap) then the errors go away
/// The RMT receiver.
///
/// Use [`RxRmtDriver::start()`] to receive pulses.
///
/// See the [rmt module][crate::rmt] for more information.
extern crate alloc; -----------------------------------> ADDED THIS LINE
use alloc::vec::Vec; -----------------------------------> ADDED THIS LINE
use self::config::ReceiveConfig;
use core::convert::TryInto;
use core::ptr;
pub struct RxRmtDriver<'d, C: RmtChannel> {
_channel: PeripheralRef<'d, C>,
pub pulse_pair_vec: Vec<PulsePair>,
}
But then when I run
$ cargo clippy --no-deps --target riscv32imc-esp-espidf -Zbuild-std=std,panic_abort -Zbuild-std-features=panic_immediate_abort -- -Dwarnings
I am getting these errors
Compiling esp-idf-hal v0.39.0 (/home/ed/esp-idf-hal/esp-idf-hal)
error[E0259]: the name `alloc` is defined multiple times
--> src/rmt.rs:919:1
|
58 | extern crate alloc;
| ------------------- previous import of the extern crate `alloc` here
...
919 | extern crate alloc;
| ^^^^^^^^^^^^^^^^^^^ `alloc` reimported here
|
= note: `alloc` must be defined only once in the type namespace of this module
error[E0252]: the name `Vec` is defined multiple times
--> src/rmt.rs:921:5
|
61 | use alloc::vec::Vec;
| --------------- previous import of the type `Vec` here
...
921 | use alloc::vec::Vec;
| ^^^^^^^^^^^^^^^ `Vec` reimported here
|
= note: `Vec` must be defined only once in the type namespace of this module
error: unused import: `alloc::vec::Vec`
--> src/rmt.rs:921:5
|
921 | use alloc::vec::Vec;
| ^^^^^^^^^^^^^^^
|
= note: `-D unused-imports` implied by `-D warnings`
Some errors have detailed explanations: E0252, E0259.
For more information about an error, try `rustc --explain E0252`.
error: could not compile `esp-idf-hal` due to 3 previous errors
What is the correct way to fix "Vec not found in this scope"
I am getting the following error when I try to use esp--idf-hal in a simple project. I have run rustup update but that did not help.
Is there some other update that I need to do?
error[E0658]: deriving `Default` on enums is experimental
--> /home/ed/esp-idf-hal/esp-idf-hal/src/ledc.rs:460:49
|
460 | #[derive(PartialEq, Eq, Copy, Clone, Debug, Default)]
| ^^^^^^^
|
= note: see issue #86985 <https://github.com/rust-lang/rust/issues/86985> for more information
= help: add `#![feature(derive_default_enum)]` to the crate attributes to enable
= note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
For more information about this error, try `rustc --explain E0658`.
error: could not compile `esp-idf-hal` due to previous error
warning: build failed, waiting for other jobs to finish...
Rustup won't update the Xtensa enabled compiler, you'll have to update that manually from here: https://github.com/esp-rs/rust-build/releases/tag/v1.65.0.0
I am getting the following error when I try to use esp--idf-hal in a simple project. I have run rustup update but that did not help. Is there some other update that I need to do?
This is a regression from yesterday. I'll fix ASAP.
Fixed in master.
I have been playing some more with the RMT Receiver and I think I would like to change PulsePair duration0 and duration1 to u16 types. I need the duration value from PulslePair not PulseTicks ( I cannot get the 0 field of PulseTicks because it is private).
In my example I need to compare duration0 and duration1 so the duration's are between a minimum value and a maximum value.
New PulsePair
pub struct PulsePair {
pub level0: PinState,
pub duration0: u16,
pub level1: PinState,
pub duration1: u16,
}
impl PulsePair {
pub fn new(lvl0: u32, dur0: u32, lvl1: u32, dur1: u32) -> Self {
let level0 = match lvl0 {
0 => PinState::Low,
_ => PinState::High,
};
let duration0 = dur0 as u16;
let level1 = match lvl1 {
0 => PinState::Low,
_ => PinState::High,
};
let duration1 = dur1 as u16;
PulsePair {
level0,
duration0,
level1,
duration1,
}
}
}
My partial example
const SHORT_PULSE_MIN: u16 = 196;
const SHORT_PULSE_MAX: u16 = 244;
/*
*********************** SET UP RMT RECEIVER ******************************
*/
let input_pin = peripherals.pins.gpio2;
//let input_pin = peripherals.pins.gpio36;
let rx_rmt_channel: CHANNEL2 = peripherals.rmt.channel2;
let rx_config = ReceiveConfig::new().idle_threshold(700u16);
let mut rx = RxRmtDriver::new(rx_rmt_channel, input_pin, &rx_config, 1000)?;
let _rx_start = rx.start().unwrap();
let _receive_task = thread::spawn(move || loop {
//println!("Rx Loop");
// See sdkconfig.defaults to determine the tick time value ( default is one tick = 10 milliseconds)
// Set ticks_to_wait to 0 for non-blocking
let ticks_to_wait = 0;
let length = rx.get_rmt_items(ticks_to_wait).unwrap();
let mut sync_count: u8 = 0;
let mut sync_found = false;
if length != 0 {
for n in 0..length / 4 {
let lo_time = rx.pulse_pair_vec[n as usize].duration0;
let hi_time = rx.pulse_pair_vec[n as usize].duration1;
let is_lo_time_sync_pulse = (lo_time > SYNC_PULSE_MIN) & (lo_time < SYNC_PULSE_MAX);
let is_hi_time_sync_pulse = (hi_time > SYNC_PULSE_MIN) & (hi_time < SYNC_PULSE_MAX);
Is this the correct way to go or is there a better way?
I am testing latest master (I think). In my project Cargo.toml i have the following.
[dependencies]
esp-idf-sys = { version = "0.31.9", features = ["binstart"] }
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal" }
crossbeam-channel = "0.5"
But when I try and compile I get the following error (I am not using SPI at the moment)
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
--> /home/ed/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/5667be9/src/spi.rs:361:54
|
361 | let max_transfer_size = Self::new_internal::<SPI1>(sclk, sdo, sdi, dma)?;
| ^^^^ explicit generic argument not allowed
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
--> /home/ed/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/5667be9/src/spi.rs:377:54
|
377 | let max_transfer_size = Self::new_internal::<SPI>(sclk, sdo, sdi, dma)?;
| ^^^ explicit generic argument not allowed
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
For more information about this error, try `rustc --explain E0632`.
error: could not compile `esp-idf-hal` due to 2 previous errors
First question: With the Caro.toml file set as stated above, Am I using the latest MASTER?
Second question: Do you see this error on your builds?
And thanks for finishing the RMT receive. It would have taken me another month, probably more to implement the changes you made. I still have a lot to learn.
First question: With the Caro.toml file set as stated above, Am I using the latest MASTER?
Yes.
Second question: Do you see this error on your builds?
No. You are seeing this because your toolchain is too old. With that said, I'll remove the turbofish when calling internal_new as it is not actually necessary.
And thanks for finishing the RMT receive. It would have taken me another month, probably more to implement the changes you made. I still have a lot to learn.
I would appreciate if you test the changed code though. I don't have a setup for testing the RMT stuff.