@@ -99,16 +99,16 @@ class TwiMasterOrSlave : public TwiMaster
99
99
ETSTimer timer;
100
100
101
101
// Event/IRQ callbacks, so they can't use "this" and need to be static
102
- static void ICACHE_RAM_ATTR onSclChange (void );
103
- static void ICACHE_RAM_ATTR onSdaChange (void );
102
+ static void IRAM_ATTR onSclChange (void );
103
+ static void IRAM_ATTR onSdaChange (void );
104
104
static void eventTask (ETSEvent *e);
105
- static void ICACHE_RAM_ATTR onTimer (void *unused);
105
+ static void IRAM_ATTR onTimer (void *unused);
106
106
107
107
// Allow not linking in the slave code if there is no call to enableSlave
108
108
bool _slaveEnabled = false ;
109
109
110
110
// Internal use functions
111
- void ICACHE_RAM_ATTR onTwipEvent (uint8_t status);
111
+ void IRAM_ATTR onTwipEvent (uint8_t status);
112
112
113
113
public:
114
114
// custom version
@@ -118,8 +118,8 @@ class TwiMasterOrSlave : public TwiMaster
118
118
uint8_t transmit (const uint8_t * data, uint8_t length);
119
119
void attachSlaveRxEvent (void (*function)(uint8_t *, size_t , void *));
120
120
void attachSlaveTxEvent (void (*function)(void *));
121
- void ICACHE_RAM_ATTR reply (uint8_t ack);
122
- void ICACHE_RAM_ATTR releaseBus (void );
121
+ void IRAM_ATTR reply (uint8_t ack);
122
+ void IRAM_ATTR releaseBus (void );
123
123
void enableSlave (void * targetObject);
124
124
};
125
125
@@ -223,7 +223,7 @@ void TwiMasterOrSlave::enableSlave(void* targetObject)
223
223
}
224
224
}
225
225
226
- void ICACHE_RAM_ATTR TwiMaster::busywait (unsigned int v)
226
+ void IRAM_ATTR TwiMaster::busywait (unsigned int v)
227
227
{
228
228
unsigned int i;
229
229
for (i = 0 ; i < v; i++) // loop time is 5 machine cycles: 31.25ns @ 160MHz, 62.5ns @ 80MHz
@@ -466,9 +466,9 @@ void TwiMasterOrSlave::attachSlaveTxEvent(void (*function)(void*))
466
466
}
467
467
468
468
// DO NOT INLINE, inlining reply() in combination with compiler optimizations causes function breakup into
469
- // parts and the ICACHE_RAM_ATTR isn't propagated correctly to all parts, which of course causes crashes.
469
+ // parts and the IRAM_ATTR isn't propagated correctly to all parts, which of course causes crashes.
470
470
// TODO: test with gcc 9.x and if it still fails, disable optimization with -fdisable-ipa-fnsplit
471
- void ICACHE_RAM_ATTR TwiMasterOrSlave::reply (uint8_t ack)
471
+ void IRAM_ATTR TwiMasterOrSlave::reply (uint8_t ack)
472
472
{
473
473
// transmit master read ready signal, with or without ack
474
474
if (ack)
@@ -486,7 +486,7 @@ void ICACHE_RAM_ATTR TwiMasterOrSlave::reply(uint8_t ack)
486
486
}
487
487
488
488
489
- void ICACHE_RAM_ATTR TwiMasterOrSlave::releaseBus (void )
489
+ void IRAM_ATTR TwiMasterOrSlave::releaseBus (void )
490
490
{
491
491
// release bus
492
492
// TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT);
@@ -499,7 +499,7 @@ void ICACHE_RAM_ATTR TwiMasterOrSlave::releaseBus(void)
499
499
}
500
500
501
501
502
- void ICACHE_RAM_ATTR TwiMasterOrSlave::onTwipEvent (uint8_t status)
502
+ void IRAM_ATTR TwiMasterOrSlave::onTwipEvent (uint8_t status)
503
503
{
504
504
twip_status = status;
505
505
switch (status)
@@ -606,7 +606,7 @@ void ICACHE_RAM_ATTR TwiMasterOrSlave::onTwipEvent(uint8_t status)
606
606
}
607
607
}
608
608
609
- void ICACHE_RAM_ATTR TwiMasterOrSlave::onTimer (void *unused)
609
+ void IRAM_ATTR TwiMasterOrSlave::onTimer (void *unused)
610
610
{
611
611
(void )unused;
612
612
twi.releaseBus ();
@@ -656,7 +656,7 @@ void TwiMasterOrSlave::eventTask(ETSEvent *e)
656
656
// Shorthand for if the state is any of the or'd bitmask x
657
657
#define IFSTATE (x ) if (twip_state_mask & (x))
658
658
659
- void ICACHE_RAM_ATTR TwiMasterOrSlave::onSclChange (void )
659
+ void IRAM_ATTR TwiMasterOrSlave::onSclChange (void )
660
660
{
661
661
unsigned int sda;
662
662
unsigned int scl;
@@ -854,7 +854,7 @@ void ICACHE_RAM_ATTR TwiMasterOrSlave::onSclChange(void)
854
854
}
855
855
}
856
856
857
- void ICACHE_RAM_ATTR TwiMasterOrSlave::onSdaChange (void )
857
+ void IRAM_ATTR TwiMasterOrSlave::onSdaChange (void )
858
858
{
859
859
unsigned int sda;
860
860
unsigned int scl;
0 commit comments