/* #include #include #include #include static void isr_bdma0( void ) __attribute__ ((interrupt ("IRQ"))); static uint8 iomode; void iis_init( uint8 mode ) { iomode = mode; if( iomode == IIS_POLLING ) { IISPSR = ...; IISMOD = ...; IISFCON = ...; IISCON = ...; } if( iomode == IIS_DMA ) { IISPSR = ...; IISMOD = ...; IISFCON = ...; IISCON = ...; bdma0_init(); bdma0_open( isr_bdma0 ); } } static void isr_bdma0( void ) { IISCON &= ~1; I_ISPC = BIT_BDMA0; } inline void iis_putSample( int16 ch0, int16 ch1 ) { while( ... ); IISFIF = ch0; IISFIF = ch1; } inline void iis_getSample( int16 *ch0, int16 *ch1 ) { ... } void iis_play( int16 *buffer, uint32 length, uint8 loop ) { uint32 i; int16 ch1, ch2; if( iomode == IIS_POLLING ) for( i=0; i