Skip to content

Commit 49091cf

Browse files
committed
small acquire/release spi master fix for blocking setFilter and bitModify()
1 parent 6e6e359 commit 49091cf

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/modm/driver/can/mcp2515_impl.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,15 @@ modm::Mcp2515<SPI, CS, INT>::setFilter(accessor::Flash<uint8_t> filter)
123123
{
124124
using namespace mcp2515;
125125

126+
while(!this->acquireMaster()){};
127+
126128
// change to configuration mode
127129
bitModify(CANCTRL, 0xe0, REQOP2);
128130

129131
while ((readRegister(CANSTAT) & 0xe0) != REQOP2);
130132
writeRegister(RXB0CTRL, BUKT);
131133
writeRegister(RXB1CTRL, 0);
132134

133-
while(!this->acquireMaster()){};
134135
uint8_t i, j;
135136
for (i = 0; i < 0x30; i += 0x10)
136137
{
@@ -147,10 +148,10 @@ modm::Mcp2515<SPI, CS, INT>::setFilter(accessor::Flash<uint8_t> filter)
147148
}
148149
chipSelect.set();
149150
}
150-
while(!this->releaseMaster());
151151
chipSelect.set();
152-
153152
bitModify(CANCTRL, 0xe0, 0);
153+
154+
while(!this->releaseMaster());
154155
}
155156

156157
// ----------------------------------------------------------------------------
@@ -430,13 +431,11 @@ template <typename SPI, typename CS, typename INT>
430431
void
431432
modm::Mcp2515<SPI, CS, INT>::bitModify(uint8_t address, uint8_t mask, uint8_t data)
432433
{
433-
while(!this->acquireMaster()){};
434434
chipSelect.reset();
435435
spi.transferBlocking(BIT_MODIFY);
436436
spi.transferBlocking(address);
437437
spi.transferBlocking(mask);
438438
spi.transferBlocking(data);
439-
while(!this->releaseMaster()){}
440439
chipSelect.set();
441440
}
442441

0 commit comments

Comments
 (0)