@ -81,6 +81,7 @@ uint8 IINCHIP_WRITE(uint16 addr,uint8 data)
# elif (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_SPI_MODE__)
# elif (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_SPI_MODE__)
//SPI MODE I/F
//SPI MODE I/F
IINCHIP_ISR_DISABLE ( ) ;
IINCHIP_ISR_DISABLE ( ) ;
# ifndef __ARDUINO__
DDRB = 0x07 ; // MISO=input, etc.=output
DDRB = 0x07 ; // MISO=input, etc.=output
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
PORTB = 0x01 ; // CS=1, waiting for SPI start
PORTB = 0x01 ; // CS=1, waiting for SPI start
@ -88,6 +89,9 @@ uint8 IINCHIP_WRITE(uint16 addr,uint8 data)
SPSR = 0x01 ; // SPI2X=0
SPSR = 0x01 ; // SPI2X=0
PORTB = 0x00 ; // CS=0, SPI start
PORTB = 0x00 ; // CS=0, SPI start
# else
PORTB = PORTB & ~ CS_PIN ; // CS=0, SPI start
# endif // ifndef __ARDUINO__
SPDR = 0xF0 ;
SPDR = 0xF0 ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = ( uint8 ) ( ( addr & 0xFF00 ) > > 8 ) ;
SPDR = ( uint8 ) ( ( addr & 0xFF00 ) > > 8 ) ;
@ -96,8 +100,12 @@ uint8 IINCHIP_WRITE(uint16 addr,uint8 data)
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = data ;
SPDR = data ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
# ifndef __ARDUINO__
PORTB = 0x01 ; // SPI end
PORTB = 0x01 ; // SPI end
// CS=1, waiting for SPI start
// CS=1, waiting for SPI start
# else
PORTB = PORTB | CS_PIN ; // SPI end
# endif // ifndef __ARDUINO__
IINCHIP_ISR_ENABLE ( ) ;
IINCHIP_ISR_ENABLE ( ) ;
# else
# else
# error "unknown bus type"
# error "unknown bus type"
@ -129,6 +137,7 @@ uint8 IINCHIP_READ(uint16 addr)
# elif (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_SPI_MODE__)
# elif (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_SPI_MODE__)
//SPI MODE I/F
//SPI MODE I/F
IINCHIP_ISR_DISABLE ( ) ;
IINCHIP_ISR_DISABLE ( ) ;
# ifndef __ARDUINO__
DDRB = 0x07 ; // MISO=input, etc.=output
DDRB = 0x07 ; // MISO=input, etc.=output
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
PORTB = 0x01 ; // CS=1, waiting for SPI start
PORTB = 0x01 ; // CS=1, waiting for SPI start
@ -136,6 +145,9 @@ uint8 IINCHIP_READ(uint16 addr)
SPSR = 0x01 ; // SPI2X=0
SPSR = 0x01 ; // SPI2X=0
PORTB = 0x00 ; // CS=0, SPI start
PORTB = 0x00 ; // CS=0, SPI start
# else
PORTB = PORTB & ~ CS_PIN ; // CS=0, SPI start
# endif // ifndef __ARDUINO__
SPDR = 0x0F ;
SPDR = 0x0F ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = ( uint8 ) ( ( addr & 0xFF00 ) > > 8 ) ;
SPDR = ( uint8 ) ( ( addr & 0xFF00 ) > > 8 ) ;
@ -145,8 +157,12 @@ uint8 IINCHIP_READ(uint16 addr)
SPDR = 0x00 ; // write dummy data
SPDR = 0x00 ; // write dummy data
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
data = SPDR ; // read data
data = SPDR ; // read data
# ifndef __ARDUINO__
PORTB = 0x01 ; // SPI end
PORTB = 0x01 ; // SPI end
// CS=1, waiting for SPI start
// CS=1, waiting for SPI start
# else
PORTB = PORTB | CS_PIN ; // SPI end
# endif // ifndef __ARDUINO__
IINCHIP_ISR_ENABLE ( ) ;
IINCHIP_ISR_ENABLE ( ) ;
# else
# else
# error "unknown bus type"
# error "unknown bus type"
@ -178,6 +194,7 @@ uint16 wiz_write_buf(uint16 addr,uint8* buf,uint16 len)
for ( ii = 0 ; ii < len ; ii + + )
for ( ii = 0 ; ii < len ; ii + + )
{
{
# ifndef __ARDUINO__
DDRB = 0x07 ; // MISO=input, etc.=output
DDRB = 0x07 ; // MISO=input, etc.=output
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
PORTB = 0x01 ; // CS=1, waiting for SPI start
PORTB = 0x01 ; // CS=1, waiting for SPI start
@ -185,6 +202,9 @@ uint16 wiz_write_buf(uint16 addr,uint8* buf,uint16 len)
SPSR = 0x01 ; // SPI2X=0
SPSR = 0x01 ; // SPI2X=0
PORTB = 0x00 ; // CS=0, SPI start
PORTB = 0x00 ; // CS=0, SPI start
# else
PORTB = PORTB & ~ CS_PIN ; // CS=0, SPI start
# endif // ifndef __ARDUINO__
SPDR = 0xF0 ;
SPDR = 0xF0 ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = ( uint8 ) ( ( ( addr + ii ) & 0xFF00 ) > > 8 ) ;
SPDR = ( uint8 ) ( ( ( addr + ii ) & 0xFF00 ) > > 8 ) ;
@ -193,8 +213,12 @@ uint16 wiz_write_buf(uint16 addr,uint8* buf,uint16 len)
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = buf [ ii ] ;
SPDR = buf [ ii ] ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
# ifndef __ARDUINO__
PORTB = 0x01 ; // SPI end
PORTB = 0x01 ; // SPI end
// CS=1, waiting for SPI start
// CS=1, waiting for SPI start
# else
PORTB = PORTB | CS_PIN ; // SPI end
# endif // ifndef __ARDUINO__
}
}
IINCHIP_ISR_ENABLE ( ) ;
IINCHIP_ISR_ENABLE ( ) ;
# else
# else
@ -226,6 +250,7 @@ uint16 wiz_read_buf(uint16 addr, uint8* buf,uint16 len)
uint16 iii = 0 ;
uint16 iii = 0 ;
for ( iii = 0 ; iii < len ; iii + + )
for ( iii = 0 ; iii < len ; iii + + )
{
{
# ifndef __ARDUINO__
DDRB = 0x07 ; // MISO=input, etc.=output
DDRB = 0x07 ; // MISO=input, etc.=output
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
// PB3(MISO), PB2(MOSI), PB1(SCK), PB0(/SS)
PORTB = 0x01 ; // CS=1, waiting for SPI start
PORTB = 0x01 ; // CS=1, waiting for SPI start
@ -233,6 +258,9 @@ uint16 wiz_read_buf(uint16 addr, uint8* buf,uint16 len)
SPSR = 0x01 ; // SPI2X=0
SPSR = 0x01 ; // SPI2X=0
PORTB = 0x00 ; // CS=0, SPI start
PORTB = 0x00 ; // CS=0, SPI start
# else
PORTB = PORTB & ~ CS_PIN ; // CS=0, SPI start
# endif // ifndef __ARDUINO__
SPDR = 0x0F ;
SPDR = 0x0F ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
SPDR = ( uint8 ) ( ( ( addr + iii ) & 0xFF00 ) > > 8 ) ;
SPDR = ( uint8 ) ( ( ( addr + iii ) & 0xFF00 ) > > 8 ) ;
@ -245,8 +273,12 @@ uint16 wiz_read_buf(uint16 addr, uint8* buf,uint16 len)
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
while ( ( SPSR & 0x80 ) = = 0x00 ) ;
buf [ iii ] = SPDR ; // read data
buf [ iii ] = SPDR ; // read data
//}
//}
# ifndef __ARDUINO__
PORTB = 0x01 ; // SPI end
PORTB = 0x01 ; // SPI end
// CS=1, waiting for SPI start
// CS=1, waiting for SPI start
# else
PORTB = PORTB | CS_PIN ; // SPI end
# endif // ifndef __ARDUINO__
}
}
IINCHIP_ISR_ENABLE ( ) ;
IINCHIP_ISR_ENABLE ( ) ;
# else
# else