Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php on line 8

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parserutils.php on line 202

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parserutils.php on line 205

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parserutils.php on line 314

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parserutils.php on line 454

Strict Standards: Declaration of cache_instructions::retrieveCache() should be compatible with cache::retrieveCache($clean = true) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/cache.php on line 291

Deprecated: Function split() is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 146

Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 236

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 390

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 390

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 387

Strict Standards: Only variables should be passed by reference in /home/aqq20189/public_html/embedders.org/kurt/wiki/doku.php on line 69

Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/actions.php on line 128
sources:spi0 [embedders WiKi ]
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/template.php on line 222
 

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/parser.php on line 66

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/lexer.php on line 292

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 22

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 44

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 208

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 236

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 290

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 323

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/handler.php on line 560

Deprecated: Assigning the return value of new by reference is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/parser/xhtml.php on line 980
/**
* @file	spi.c
* @brief	SPI functions
*
* Implement SPI inteface communications
*
* @author      Rustem Kalimullin
* @par E-mail:
*              hellos@mail.ru
* @par Copyright:
*              (c) Kurt, 2005
*/
 
 
#include "common.h"
 
#define SPI_PORT_WR  (P3OUT)  //!< Output port
#define SPI_PORT_RD  (P3IN)   //!< Input port
#define SPI_PORT_DIR (P3DIR)
#define SPI_PORT_SEL (P3SEL)  //!< Port options
#define SPI_DO (1<<1)         //!< Output pin mask
#define SPI_DI (1<<2)         //!< Input pin mask
#define SPI_CK (1<<3)         //!< Clock pin mask
 
//---------------------------------------------------------
//! Send @a data to serial line. Word length in @a bits
unsigned int spi_write_bits( unsigned int data, unsigned int bits )
{
	if( (bits > 16) || (bits == 0) ) return 0xFFFF;
 
	for( unsigned int i=16-bits; i > 0; i-- ) data <<= 1;  // Align data word to left
 
	unsigned int read = 0;
	do {
 
		if( data & 0x8000 ) {
			SPI_PORT_WR |= SPI_DO;
		} else {
			SPI_PORT_WR &= ~SPI_DO;
		}
 
		SPI_PORT_WR |= SPI_CK;
		for( unsigned int i=3; i; --i ) continue;
		SPI_PORT_WR &= ~SPI_CK;
 
		data <<= 1;
		read <<= 1;
		if( SPI_PORT_RD & SPI_DI ) read |= 1;
 
	} while( --bits );
 
	return read;
}
 
//---------------------------------------------------------
//! Enable hardware SPI
void spi_enable(void)
{
	U0CTL  |= SWRST;
	SPI_PORT_SEL |= (SPI_DO | SPI_DI | SPI_CK );  // enable SPI option
	SPI_PORT_DIR |= (SPI_DO | SPI_CK);            // output pins
	SPI_PORT_DIR &= ~(SPI_DI);                    // input pins
	U0ME   |= USPIE0;                             // Enable USART0 SPI mode
	U0CTL  &= ~SWRST;
}
 
//---------------------------------------------------------
//! Disable hardware SPI
void spi_disable(void)
{
	U0CTL  |= SWRST;
	SPI_PORT_SEL &= ~(SPI_DO | SPI_DI | SPI_CK ); // disable SPI option
	SPI_PORT_DIR |= (SPI_DO | SPI_CK);            // output pins
	SPI_PORT_DIR &= ~(SPI_DI);                    // input pins
	U0ME   &= ~USPIE0;                            // Disable USART0 SPI mode
	U0CTL  &= ~SWRST;
}
 
 
//---------------------------------------------------------
//! Init hardware SPI
void spi_init( void )
{
	U0CTL   = CHAR | SYNC | MM | SWRST;        // 8-bit SPI Master
#ifdef KR_SPI_FULLSPEED	
	U0TCTL  = CKPL+SSEL0+SSEL1+STC;            // ACLK, 3-pin mode
	U0BR0   = 0x02;                            // UCLK = SMCLK
#else
	U0TCTL  = CKPL+SSEL1+SSEL0+STC;            // SMCLK, 3-pin mode
	U0BR0   = 0x04;                            // UCLK/4
#endif	
	U0BR1   = 0x00;
	U0MCTL  = 0x00;                            // no modulation
	spi_enable();
}
 
//---------------------------------------------------------
//! Send @a data byte to serial line.
unsigned char spi_write( unsigned char data )
{
	unsigned int tot;
	tot = 0xFFF;
	do {
		if( 0 == --tot ) return 0xFF;
	} while( !(U0IFG & UTXIFG0) );  // USART0 TX buffer ready?
 
	U0TXBUF = data;
	tot = 0xFFF;
	do {
		if ( 0 == --tot ) return 0xFF;
	} while( !(U0TCTL & TXEPT) );   // USART0 Transmit complete?
	return U0RXBUF;
}
 
//---------------------------------------------------------
//! Receive byte from serial line.
unsigned char spi_read( void )
{
	return spi_write(0x00);
}
 

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/template.php on line 738
sources/spi0.txt · Последние изменения: 2021/10/09 14:22 kurt
 

Strict Standards: Only variables should be passed by reference in /home/aqq20189/public_html/embedders.org/kurt/wiki/doku.php on line 77