aboutsummaryrefslogtreecommitdiffstats
path: root/fw/can.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-10-23 19:44:16 -0400
committerSam Anthony <sam@samanthony.xyz>2025-10-23 19:44:16 -0400
commit94cdc9ec4e75fc5e55deb394eda4820ba672e3e4 (patch)
treecf0762794d78324cd508cf5e80b5a13351965d63 /fw/can.c
parent04fbfdb4fd6bf4118b88867d852e3b29d139c800 (diff)
downloadcan-gauge-interface-94cdc9ec4e75fc5e55deb394eda4820ba672e3e4.zip
enable CLKOUT
Diffstat (limited to 'fw/can.c')
-rw-r--r--fw/can.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fw/can.c b/fw/can.c
index 2998631..6518f91 100644
--- a/fw/can.c
+++ b/fw/can.c
@@ -12,6 +12,8 @@
// Oscillator startup timeout
#define STARTUP_TIME 128u
+#define TX_RETRIES 10u
+
// Register addresses
typedef enum {
// Config and status
@@ -288,6 +290,7 @@ canTx(const CanFrame *frame) {
// Send
bitModify(REG_TXB0CTRL, TXREQ, TXREQ);
+ k = 0u;
do {
ctrl = read(REG_TXB0CTRL);
if (ctrl & TXERR) {
@@ -295,9 +298,9 @@ canTx(const CanFrame *frame) {
bitModify(REG_TXB0CTRL, TXREQ, 0); // cancel transmission
return FAIL;
}
- } while (ctrl & TXREQ); // transmission in progress
+ } while ((ctrl & TXREQ) && (++k <= TX_RETRIES)); // transmission in progress
- return OK;
+ return (k <= TX_RETRIES) ? OK : FAIL;
}
void