Пример #1
0
void ADS7846_wr_spi(uint_least8_t data)
{
#if defined(SOFTWARE_SPI)
	ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_SPI_MOSI);

	for (uint_least8_t mask = 0x80; mask != 0; mask >>= 1) {
		SCK_LOW();
		if (mask & data) {
			MOSI_HIGH();
		} else {
			MOSI_LOW();
		}
		ADS7846_delay_ms(1);
		SCK_HIGH();
		ADS7846_delay_ms(1);
	}
	SCK_LOW();
	ADS7846_delay_ms(1);
	SCK_HIGH();
	ADS7846_delay_ms(1);
	SCK_LOW();
#else
	SPI.transfer(data);
#endif
	return;
}
Пример #2
0
uint_least8_t ADS7846_rd_spi(void)
{
#if defined(SOFTWARE_SPI)
	ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SPI_MOSI);

	uint_least8_t data = 0;
	MOSI_LOW();
	for (uint_least8_t bit = 8; bit != 0; bit--) {
		ADS7846_delay_ms(1);
		SCK_HIGH();
		ADS7846_delay_ms(1);

		data <<= 1;
		if (MISO_READ()) {
			data |= 1;
		} else {
			//data |= 0;
		}
		SCK_LOW();
	}
	return data;
#else
	return SPI.transfer(0x00);
#endif
}
Пример #3
0
uchar ispEnterProgrammingMode()
{
  uchar check;
  uchar count = 32 ;

  while (count--)
	{
    ispTransmit(0xAC) ;
    ispTransmit(0x53) ;
    check = ispTransmit(0) ;
    ispTransmit(0) ;
    
    if (check == 0x53)
		{
      return 0;
    }

    /* pulse SCK */
    SCK_HIGH() ;     /* SCK high */
    ispDelay();
    SCK_LOW() ;    /* SCK low */
    ispDelay();
  }
  
  return 1;  /* error: device dosn't answer */
}
Пример #4
0
uchar ispTransmit(uchar send_byte)
{

  uchar rec_byte = 0;
  uchar i;
  for (i = 0; i < 8; i++) {

    /* set MSB to MOSI-pin */
    if ((send_byte & 0x80) != 0)
		{
      MOSI_HIGH() ;  /* MOSI high */
    }
		else
		{
      MOSI_LOW() ; /* MOSI low */
    }
    /* shift to next bit */
    send_byte  = send_byte << 1;

    /* receive data */
    rec_byte = rec_byte << 1;
    if (READ_MISO() != 0) {
      rec_byte++;
    }

    /* pulse SCK */
    SCK_HIGH() ;     /* SCK high */
    ispDelay() ;
    SCK_LOW() ;    /* SCK low */
    ispDelay() ;
  }
  return rec_byte;
}
Пример #5
0
void DAC8760::wr_spi(uint_least8_t data)
{
#if defined(SOFTWARE_SPI)
  for(uint_least8_t mask=0x80; mask!=0; mask>>=1)
  {
    SCK_LOW();
    if(mask & data)
    {
      MOSI_HIGH();
    }
    else
    {
      MOSI_LOW();
    }
    SCK_HIGH();
  }
  SCK_LOW();
#else
  SPI.transfer(data);
#endif
  return;
}
Пример #6
0
void MI0283QT9::draw(uint_least16_t color)
{
#if defined(LCD_8BIT_SPI)
//  RS_HIGH(); //data
# else
  //9th bit
  MOSI_HIGH(); //data
  SCK_LOW();
# if !defined(SOFTWARE_SPI) && (defined(__AVR__) || defined(ARDUINO_ARCH_AVR))
  SPCR &= ~(1<<SPE); //disable SPI
  SCK_HIGH();
  SPCR |= (1<<SPE); //enable SPI
# else
  SCK_HIGH();
# endif
#endif

  wr_spi(color>>8);

#if defined(LCD_8BIT_SPI)
//  RS_HIGH(); //data
# else
  //9th bit
  MOSI_HIGH(); //data
  SCK_LOW();
# if !defined(SOFTWARE_SPI) && (defined(__AVR__) || defined(ARDUINO_ARCH_AVR))
  SPCR &= ~(1<<SPE); //disable SPI
  SCK_HIGH();
  SPCR |= (1<<SPE); //enable SPI
# else
  SCK_HIGH();
# endif
#endif

  wr_spi(color);

  return;
}
Пример #7
0
void ispConnect()
{
	init_hw_timer() ;
	
  /* all ISP pins are inputs before */
  /* now set output pins */
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; 		// Enable portA clock
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN ; 		// Enable portB clock
	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; 		// Enable portC clock
	configure_pins( GPIO_Pin_M64_RST, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTC ) ;
	configure_pins( GPIO_Pin_M64_SCK, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTA ) ;
	configure_pins( GPIO_Pin_M64_MOSI, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTB ) ;

  /* reset device */
	RST_LOW() ;   /* RST low */
  SCK_LOW() ;   /* SCK low */

  /* positive reset pulse > 2 SCK (target) */
  ispDelay();
	RST_HIGH() ;   /* RST high */
	clockWait(64) ;
	RST_LOW() ;   /* RST low */
}