Example #1
0
/*************************************************************************//**
*****************************************************************************/
void HAL_TimerDelay(uint16_t us)
{
  PRAGMA(diag_suppress=Pa082);

#if F_CPU == 4000000
  us >>= 1;
#elif F_CPU == 8000000
  // Empty
#elif F_CPU == 12000000
  us += (us >> 1);
#elif F_CPU == 16000000
  us <<= 1;
#elif F_CPU == 32000000
  us <<= 2;
#endif

  TCC1.CCB = TCC1.CNT + us;
  if (TCC1.CCB > TCC1.PER)
    TCC1.CCB -= TCC1.PER;

  TCC1.INTFLAGS = TC1_CCBIF_bm;
  while (0 == (TCC1.INTFLAGS & TC1_CCBIF_bm));

  PRAGMA(diag_default=Pa082);
}
Example #2
0
void HAL_TimerDelay(uint16_t us)
{
	PRAGMA(diag_suppress=Pa082);

#if F_CPU == 4000000			// div 2
	us >>= 1;
#elif F_CPU == 8000000			// equal
	// Empty
#elif F_CPU == 12000000			// us = us * 1.5
	us += (us >> 1);
#elif F_CPU == 16000000			// us = us * 2
	us <<= 1;
#elif F_CPU == 24000000			// us = us * 3
	us += (us << 1);
#elif F_CPU == 32000000			// us = us * 4
	us <<= 2;
#endif

	SYSTIMER.CCB				= SYSTIMER.CNT + us;
	
	if(SYSTIMER.CCB > SYSTIMER.PER)
		SYSTIMER.CCB			-= SYSTIMER.PER;

	halTimerDelayInt			= 0;
	SYSTIMER.INTCTRLB			= TC_CCBINTLVL_LO_gc;
	
	while(0 == halTimerDelayInt);

	SYSTIMER.INTCTRLB			= TC_CCBINTLVL_OFF_gc;

	PRAGMA(diag_default=Pa082);
}
Example #3
0
/*************************************************************************//**
*****************************************************************************/
void HAL_TimerDelay(uint16_t us)
{
  PRAGMA(diag_suppress=Pa082);

  OCR4B = TCNT4 + us;
  if (OCR4B > OCR4A)
    OCR4B -= OCR4A;

  TIFR4 = (1 << OCF4B);
  while (0 == (TIFR4 & (1 << OCF4B)));

  PRAGMA(diag_default=Pa082);
}
Example #4
0
void HAL_TimerDelay(uint16_t us)
{
  PRAGMA(diag_suppress=Pa082);

  OCR4B = TCNT4 + us;
  if (OCR4B > OCR4A)
    OCR4B -= OCR4A;

  halTimerDelayInt = 0;
  TIMSK4 |= (1 << OCIE4B);
  while (0 == halTimerDelayInt);
  TIMSK4 &= ~(1 << OCIE4B);

  PRAGMA(diag_default=Pa082);
}
Example #5
0
uint8_t HAL_UartReadByte(void)
{
  uint8_t byte;

  PRAGMA(diag_suppress=Pa082)
  ATOMIC_SECTION_ENTER
    byte = rxFifo.data[rxFifo.head++];
    if (rxFifo.head == rxFifo.size)
      rxFifo.head = 0;
    rxFifo.bytes--;
  ATOMIC_SECTION_LEAVE
  PRAGMA(diag_default=Pa082)

  return byte;
}