Skip to content

Commit 519948c

Browse files
committed
updated TWI in libsam (from Arduino 1.6.6)
1 parent ed26aac commit 519948c

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

1.0.2/system/libsam/include/twi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ extern void TWI_SetClock( Twi *pTwi, uint32_t dwTwCk, uint32_t dwMCk );
7171

7272
extern void TWI_ConfigureSlave(Twi *pTwi, uint8_t slaveAddress);
7373

74+
extern void TWI_Disable(Twi *pTwi);
75+
7476
extern void TWI_Stop(Twi *pTwi);
7577

7678
extern void TWI_StartRead(

1.0.2/system/libsam/source/twi.c

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,8 @@ void TWI_ConfigureMaster( Twi* pTwi, uint32_t dwTwCk, uint32_t dwMCk )
100100

101101
/* SVEN: TWI Slave Mode Enabled */
102102
pTwi->TWI_CR = TWI_CR_SVEN ;
103-
/* Reset the TWI */
104-
pTwi->TWI_CR = TWI_CR_SWRST ;
105-
pTwi->TWI_RHR ;
106103

107-
/* TWI Slave Mode Disabled, TWI Master Mode Disabled. */
108-
pTwi->TWI_CR = TWI_CR_SVDIS ;
109-
pTwi->TWI_CR = TWI_CR_MSDIS ;
104+
TWI_Disable(pTwi);
110105

111106
/* Set master mode */
112107
pTwi->TWI_CR = TWI_CR_MSEN ;
@@ -156,15 +151,7 @@ void TWI_ConfigureSlave(Twi *pTwi, uint8_t slaveAddress)
156151
{
157152
uint32_t i;
158153

159-
/* TWI software reset */
160-
pTwi->TWI_CR = TWI_CR_SWRST;
161-
pTwi->TWI_RHR;
162-
163-
/* Wait at least 10 ms */
164-
for (i=0; i < 1000000; i++);
165-
166-
/* TWI Slave Mode Disabled, TWI Master Mode Disabled*/
167-
pTwi->TWI_CR = TWI_CR_SVDIS | TWI_CR_MSDIS;
154+
TWI_Disable(pTwi);
168155

169156
/* Configure slave address. */
170157
pTwi->TWI_SMR = 0;
@@ -178,6 +165,27 @@ void TWI_ConfigureSlave(Twi *pTwi, uint8_t slaveAddress)
178165
assert( (pTwi->TWI_CR & TWI_CR_SVDIS)!= TWI_CR_SVDIS ) ;
179166
}
180167

168+
/**
169+
* \brief Disables the TWI.
170+
* \param pTwi Pointer to an Twi instance.
171+
*/
172+
void TWI_Disable(Twi *pTwi)
173+
{
174+
assert( pTwi ) ;
175+
176+
uint32_t i;
177+
178+
/* TWI software reset */
179+
pTwi->TWI_CR = TWI_CR_SWRST;
180+
pTwi->TWI_RHR;
181+
182+
/* Wait at least 10 ms */
183+
for (i=0; i < 1000000; i++);
184+
185+
/* TWI Slave Mode Disabled, TWI Master Mode Disabled*/
186+
pTwi->TWI_CR = TWI_CR_SVDIS | TWI_CR_MSDIS;
187+
}
188+
181189
/**
182190
* \brief Sends a STOP condition on the TWI.
183191
* \param pTwi Pointer to an Twi instance.

0 commit comments

Comments
 (0)