Example #1
0
// Delay for some usecs.
void hal_delay_us(cyg_uint32 delay)
{
#if 0
    int i;
    for( i = 0; i < delay; i++ );

#else
    cyg_uint32 now, last, diff, ticks;

    // The timer actually runs at 1.25 ticks per micrsecond.
    // Adjust the supplied delay to compensate.
    
    delay *= 4;
    delay /= 5;
    
    hal_clock_read(&last);
    diff = ticks = 0;

    while (delay > ticks) {
	hal_clock_read(&now);

	// Cope with wrap-around of timer
	if (now < last)
	    diff = ((_period - last) + now);
	else
	    diff = (now - last);

	last = now;

	ticks += diff;
    }
#endif
}
Example #2
0
/* Delay for some number of useconds */
externC void hal_delay_us(cyg_uint32 us)
{
	cyg_uint32 old_dec, new_dec;
	long ticks;
	cyg_uint32 diff, max;

	cyg_uint32 StatusReg = tmr->control;
	if (!(StatusReg & TIMER_ENABLE)) {
		hal_clock_initialize(CYGNUM_HAL_RTC_PERIOD);
		old_dec = 0;
	} else
		hal_clock_read(&old_dec);
 
	// Note: the system constant CYGNUM_HAL_RTC_PERIOD corresponds to 10,000us
	// Scale the desired number of microseconds to be a number of decrementer ticks
	ticks = ((long long)us * CYGNUM_HAL_RTC_PERIOD) / 10000;

	max = tmr->loadreg;
	
	while (ticks > 0) {
		do {
			hal_clock_read(&new_dec);
		} while (old_dec == new_dec);

		if (old_dec > new_dec)
			diff = (max - old_dec + new_dec + 2);
		else
			diff = (new_dec - old_dec);

		old_dec = new_dec;
		ticks -= diff;
	}
}
Example #3
0
void fastPoll( void )
	{
	RANDOM_STATE randomState;
	BYTE buffer[ RANDOM_BUFSIZE ];
	cyg_uint32 clockTicks;

	initRandomData( randomState, buffer, RANDOM_BUFSIZE );

	hal_clock_read( &clockTicks );

	endRandomData( randomState, 1 );
	}
Example #4
0
int main(void)
{
	int i;
	FILE *f;
	//char s[] = "Hejsan!\n";
	//fwrite(s,strlen(s),1,f)

	f = fopen("/dev/ser1", "w");
	stdout = f;			// Redirect stdout

	printf("Hello, eCos world!\n");

	mount(CYGDAT_IO_FLASH_BLOCK_DEVICE_NAME_1,"/","jffs2");

	while(1)
	{
		i = hal_clock_read();
	}

	fclose(f);
	return 0;
}