Beispiel #1
0
int Avr1200Bus::Reset()
{
	UserDebug(UserApp2, "Avr1200Bus::Reset() I\n");

	At90sBus::RefreshParameters();

	int k;
	for (k = 0; k < 4; k++)
	{
		SPIBus::Reset();

		WaitMsec(50);	// Almeno 20msec dai datasheet AVR atmel

		UserDebug(UserApp2, "Avr1200Bus::Reset() ** SendDataByte\n");

		SendDataByte(EnableProg0);
		SendDataByte(EnableProg1);
		RecDataByte();
		SendDataByte(0);

		if ( ReadDeviceCode(0) == 0x1E )
			break;
	}

	return OK;
}
Beispiel #2
0
void WriteText(char * napis)
{
    while(*napis){
                SendDataByte(*napis);
                napis++;
        }
}
Beispiel #3
0
void LedMatrixBall::Update()
{
  for (Ball *iBall = _balls, *eBall = _balls + kBalls ; iBall < eBall ; ++iBall)
  {
    iBall->Update() ;
  }

  for (unsigned short idx = 0 ; idx < LedMatrix::kSize ; ++idx)
  {
    unsigned char x, y ;

    LedMatrix::IdxToCoord(idx, x, y) ;

    unsigned char r = 0 ;
    unsigned char g = 0 ;
    unsigned char b = 0 ;
    
    for (Ball *iBall = _balls, *eBall = _balls + kBalls ; iBall < eBall ; ++iBall)
    {
      unsigned char bx = iBall->X() >> LedMatrix::kShiftX ;
      unsigned char by = iBall->Y() >> LedMatrix::kShiftY ;

      char dx = bx - x ;
      char dy = by - y ;

      if (dx < 0) dx = -dx ;
      if (dy < 0) dy = -dy ;

      if ((dx <= 1) && (dy <= 1))
      {
	unsigned char d = dx + dy ;
	r = iBall->R(d) ;
	g = iBall->G(d) ;
	b = iBall->B(d) ;
	break ;
      }
    }

    SendDataByte(g) ;
    SendDataByte(r) ;
    SendDataByte(b) ;
  }
}
Beispiel #4
0
void AtMegaBus::WriteProgPage(long addr, UBYTE const *data, long page_size, long timeout)
{
	long k;
	long first_loc = -1;		//first location different from 0xFF

	if (page_size <= 0)
		page_size = write_page_size;

	//align addr to page boundary
	addr &= ~(page_size - 1);	//0xFFFFFF00

	for (k = 0; k < page_size; k++, data++)
	{
		if (first_loc < 0 && *data != 0xFF)
			first_loc = addr + k;

		WriteProgByte(k, *data);
	}

	SendDataByte(WriteProgPageMem);
	SendDataByte(addr >> 9);		//send word address
	SendDataByte(addr >> 1);
	SendDataByte(0);

	THEAPP->SetLastProgrammedAddress(addr + page_size - 1);

	if (enable_flashpage_polling)
	{
		for (k = timeout; k > 0; k--)
		{
			if ( ReadProgByte(first_loc) != 0xFF )
				break;
		}
	}
	else
		WaitMsec( THEAPP->GetMegaPageDelay() );
}