Search found 300 matches

by jcsbanks
Fri Apr 13, 2018 10:35 pm
Forum: Hardware
Topic: CAn controller
Replies: 9
Views: 3706

Re: CAn controller

Markus, wondering from my trace whether retransmission stops when it goes error passive with TXERR.B 128, since it does not go higher and when I reconnect the second node, the message is then received, so it does not reach bus off. I could not see from SJA1000 manual what would happen with retransmi...
by jcsbanks
Fri Apr 13, 2018 1:18 pm
Forum: Hardware
Topic: CAn controller
Replies: 9
Views: 3706

Re: CAn controller

Interesting. Ignore tx_error_count below as unused, but this is the output of a task that prints these values whenever TXERR.B (transmit error counter) has changed. It missed some samples as I had to put in a vTaskDelay(1) at the end of its loop to keep the watchdog fed, but I see SR.ES changing to ...
by jcsbanks
Thu Apr 12, 2018 12:52 pm
Forum: Hardware
Topic: About the CAN controller.
Replies: 174
Views: 115527

Re: About the CAN controller.

Not tried them because SJA1000 even in Pelican mode only has two x 16 bit or 1 x 32 bit for filters. I'm going to modify the receive interrupt to populate different queues depending on the CAN IDs as I need to receive on at least six different IDs. It seems common to do it in software with faster mi...
by jcsbanks
Tue Apr 10, 2018 3:42 pm
Forum: Hardware
Topic: About the CAN controller.
Replies: 174
Views: 115527

Re: About the CAN controller.

I think you are missing what I put in the post above yours?
by jcsbanks
Wed Mar 28, 2018 8:01 pm
Forum: ESP32 IDF
Topic: RMT - simplest receive example working, but idle_threshold problem
Replies: 13
Views: 4089

Re: RMT - simplest receive example working, but idle_threshold problem

After many more days work on this, I think that the errors I was seeing were buffer full based on experimentation with my own 5ms task to process the RMT receive buffer and the error codes I get. The error codes are undocumented. If the ring buffer were able to be implemented in a task instead of an...
by jcsbanks
Wed Mar 28, 2018 8:56 am
Forum: Hardware
Topic: Is there a way to reset an RMT channel if the buffer has been filled?
Replies: 8
Views: 2807

Re: Is there a way to reset an RMT channel if the buffer has been filled?

Filter threshold is max 255 ticks of 80MHz already. "RMT_RX_FILTER_THRES_CHn In receive mode, channel n ignores input pulse when the pulse width is smaller than this value in APB clock periods." Error codes are undocumented in the status register but the high byte is 03 and the low byte is the count...
by jcsbanks
Tue Mar 27, 2018 8:11 pm
Forum: Hardware
Topic: Is there a way to reset an RMT channel if the buffer has been filled?
Replies: 8
Views: 2807

Re: Is there a way to reset an RMT channel if the buffer has been filled?

periph_module_reset(PERIPH_RMT_MODULE);
rmt_config(&rmt_rx);
rmt_rx_start(rmt_rx.channel, 1);

Finally! This allows recovery from buffer full.

Somewhat brutal to restart the whole RMT module though as would affect other channels.
by jcsbanks
Tue Mar 27, 2018 7:12 pm
Forum: Hardware
Topic: Is there a way to reset an RMT channel if the buffer has been filled?
Replies: 8
Views: 2807

Re: Is there a way to reset an RMT channel if the buffer has been filled?

esp_restart() doesn't even recover it. Only a reset by button.

rmt_memory_rw_rst either alone or inside rmt_rx_start(rmt_rx.channel, 1); changes the error code.
by jcsbanks
Tue Mar 27, 2018 5:39 pm
Forum: Hardware
Topic: Is there a way to reset an RMT channel if the buffer has been filled?
Replies: 8
Views: 2807

Re: Is there a way to reset an RMT channel if the buffer has been filled?

Unable to transmit on channel 0 after receive has filled the buffer.
by jcsbanks
Tue Mar 27, 2018 5:18 pm
Forum: Hardware
Topic: Is there a way to reset an RMT channel if the buffer has been filled?
Replies: 8
Views: 2807

Re: Is there a way to reset an RMT channel if the buffer has been filled?

rmt_rx_stop(rmt_rx.channel);
rmt_config(&rmt_rx);
rmt_driver_install(rmt_rx.channel, 1000, 0);
rmt_driver_uninstall(rmt_rx.channel);
rmt_rx_start(rmt_rx.channel, 1);

This or variations of it do not work.

Go to advanced search