예제 #1
0
/**
 * \internal Calculate asynchronous baudrate value (UART)
*/
enum status_code _sercom_get_async_baud_val(
		const uint32_t baudrate,
		const uint32_t peripheral_clock,
		uint16_t *const baudval,
		enum sercom_asynchronous_operation_mode mode,
		enum sercom_asynchronous_sample_num sample_num)
{
	/* Temporary variables  */
	uint64_t ratio = 0;
	uint64_t scale = 0;
	uint64_t baud_calculated = 0;
	uint8_t baud_fp;
	uint32_t baud_int = 0;
	uint64_t temp1, temp2;

	/* Check if the baudrate is outside of valid range */
	if ((baudrate * sample_num) > peripheral_clock) {
		/* Return with error code */
		return STATUS_ERR_BAUDRATE_UNAVAILABLE;
	}

	if(mode == SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC) {
		/* Calculate the BAUD value */
		temp1 = ((sample_num * (uint64_t)baudrate) << SHIFT);
		ratio = long_division(temp1, peripheral_clock);
		scale = ((uint64_t)1 << SHIFT) - ratio;
		baud_calculated = (65536 * scale) >> SHIFT;
	} else if(mode == SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL) {
예제 #2
0
int main ()
{
	int a , b,n ;
	char ch,r[100] ;
	
	printf("Enter 1 or 2: ");
	scanf ("%c",&ch);
	
	switch(ch)
	{
		case '1' : 
		
		printf("Enter a: "); scanf("%d",&a);
		printf("Enter b: "); scanf("%d",&b);
		
		long_division(a%b,b,r);
		
		printf("Value of  %d/%d: %d.%s\n",a,b,a/b,r);
		
		break;
		
		
		printf("Enter n: "); scanf("%d",&n);
		
		longest_cycle(n);
		
		case '2' : break;
	}
	
	 
}
예제 #3
0
파일: 14.02.c 프로젝트: NoMan2000/c-prog
int 
main(void)
{
   int quot, rem;

   long_division(40, 3, &quot, &rem);
   printf("40 divided by 3 yields quotient %d ", quot);
   printf("and remainder %d\n", rem);
   return (0);
}