コード例 #1
0
ファイル: main.c プロジェクト: InSoonPark/asf
/**
 * \brief Fractal Algorithm with FPU optimization.
 */
static int draw_mandel_with_fpu(void)
{
  t_cpu_time timer;
  while (i_wfpu<HEIGHT/2+1)
  {
    cpu_set_timeout( cpu_us_2_cy(DELAY_US,pcl_freq_param.cpu_f), &timer );
    while(j_wfpu<WIDTH)
    {
      z_wfpu = 0;
      zi_wfpu = 0;
      inset_wfpu = 1;
      while (k_wfpu<iter_wfpu)
      {
        /* z^2 = (a+bi)(a+bi) = a^2 + 2abi - b^2 */
		newz_wfpu = (z_wfpu*z_wfpu)-(zi_wfpu*zi_wfpu) + x_wfpu;
		newzi_wfpu = 2*z_wfpu*zi_wfpu + y_wfpu;
        z_wfpu = newz_wfpu;
        zi_wfpu = newzi_wfpu;
		if(((z_wfpu*z_wfpu)+(zi_wfpu*zi_wfpu)) > 4)
		{
		  inset_wfpu = 0;
		  colour_wfpu = k_wfpu;
		  k_wfpu = iter_wfpu;
		}
        k_wfpu++;
      };
      k_wfpu = 0;
      // Draw Mandelbrot set
      if (inset_wfpu)
      {
       et024006_DrawPixel(j_wfpu,i_wfpu+OFFSET_DISPLAY,BLACK);
       et024006_DrawPixel(j_wfpu,HEIGHT-i_wfpu+OFFSET_DISPLAY,BLACK);
      }
      else
      {
        et024006_DrawPixel(j_wfpu,
		i_wfpu+OFFSET_DISPLAY,
		BLUE_LEV((colour_wfpu*255) / iter_wfpu )+
		GREEN_LEV((colour_wfpu*127) / iter_wfpu )+
		RED_LEV((colour_wfpu*127) / iter_wfpu ));
        et024006_DrawPixel(j_wfpu,
		HEIGHT-i_wfpu+OFFSET_DISPLAY,
		BLUE_LEV((colour_wfpu*255) / iter_wfpu )+
		GREEN_LEV((colour_wfpu*127) / iter_wfpu )+
		RED_LEV((colour_wfpu*127) / iter_wfpu ));
      }
      x_wfpu += xstep_wfpu;
      j_wfpu++;
    };
    j_wfpu = 0;
    y_wfpu += ystep_wfpu;
    x_wfpu = xstart_wfpu;
    i_wfpu++;
    if( cpu_is_timeout(&timer) )
    {
      return 0;
    }
  };
  return 1;
}
コード例 #2
0
ファイル: mmi_task.c プロジェクト: InSoonPark/asf
static void mmi_ms_display( void )
{
  uint32_t i;
  for( i=0 ; i<MS_N_PROGRESS_BAR ; i++ )
  {
    if( ms_progress_bar_level[i] != 0 )
    {
      if( ms_progress_bar_type[i] == BLUE )
        et024006_DrawFilledRect(80+3 + i*(17+2), 180+3, 17, 10, BLUE_LEV(ms_progress_bar_level[i]) );
      else
        et024006_DrawFilledRect(80+3 + i*(17+2), 180+3, 17, 10, RED_LEV(ms_progress_bar_level[i]) );
      ms_progress_bar_level[i] -= 1;
    }
  }
}
コード例 #3
0
ファイル: device_audio_task.c プロジェクト: Mazetti/asf
//!
//! @brief This function displays the a bargraph indicating the state of the audio buffers and
//! the PPM deviation between the incoming USB audio sampling frequency and the output DAC sampling frequency.
//!
static void mmi_activity_display( bool init, uint32_t fifo_cnt )
{
  static char tmp[20];
  static int32_t  ppm;
  #define TIMER_MMI            1000   // Unit is in ms.
  static t_cpu_time mmi_timer;
  static uint32_t old_fcpu_hz = 0;
  static uint32_t mmi_activity_state=0;
  static uint32_t i;

  if( init )
  {
     // Display PPM window
     et024006_PrintString("PPM", (const unsigned char *)&FONT8x8, 22, 70+4, BLUE, -1);
     display_box(50, 70, 40, 16, WHITE, BLACK);

     et024006_PrintString("HID", (const unsigned char *)&FONT8x8, 122, 70+4, BLUE, -1);
     display_box(150, 70, 40, 16, WHITE, BLACK);

     et024006_PrintString("CPU", (const unsigned char *)&FONT8x8, 222, 70+4, BLUE, -1);
     display_box(250, 70, 40, 16, WHITE, BLACK);

     et024006_PrintString("Buffers", (const unsigned char *)&FONT8x8, 0, 50+4, BLUE, -1);
     display_box(50, 50, 195, 16, WHITE, BLACK);
     cpu_set_timeout( cpu_ms_2_cy(TIMER_MMI, FCPU_HZ), &mmi_timer );
     goto mmi_end;
  }

  if( !cpu_is_timeout(&mmi_timer) )
     goto mmi_end;

  switch( mmi_activity_state )
  {
  case 0:
     i = 0;
     mmi_activity_state = 1;
     // no break here

  case 1:
     if( i>=USB_STREAM_BUFFER_NUMBER )
     {
        mmi_activity_state = 10;
        break;
     }
     if( i<fifo_cnt )
        et024006_DrawFilledRect(50+3 + i*(10+2), 50+3, 10, 10, BLUE_LEV(15) );
     else
        et024006_DrawFilledRect(50+3 + i*(10+2), 50+3, 10, 10, WHITE );
     i++;
     break;

  case 10:
     ppm = usb_stream_ppm_get();
     sprintf( tmp, "%4ld", ppm );
     et024006_PrintString(tmp, (const unsigned char *)&FONT8x8, 50+4, 70+4, BLUE, WHITE);
     mmi_activity_state = 20;
     break;

  case 20:
     if( old_fcpu_hz==FCPU_HZ )
     {
        mmi_activity_state = 30;
        break;
     }
     else
        mmi_activity_state = 21;
     // No break here

  case 21:
     old_fcpu_hz=FCPU_HZ;
     sprintf( tmp, "%ld", (uint32_t)FCPU_HZ/1000000);
     et024006_PrintString(tmp, (const unsigned char *)&FONT8x8, 250+4, 70+4, BLUE, WHITE);
     mmi_activity_state = 30;
     break;

#if (defined __GNUC__)
  case 30:
     sprintf( tmp, "%ld", get_heap_total_used_size() );
     et024006_PrintString(tmp, (const unsigned char *)&FONT8x8, 230, START_Y_DEMO_TEXT+13*FONT_HEIGHT, BLUE, WHITE);
     mmi_activity_state = 31;
     break;

  case 31:
     sprintf( tmp, "%ld", get_heap_curr_used_size() );
     et024006_PrintString(tmp, (const unsigned char *)&FONT8x8, 230, START_Y_DEMO_TEXT+14*FONT_HEIGHT, BLUE, WHITE);
     // No break here
#elif (defined __ICCAVR32__)
  case 30:
     sprintf( tmp, "%ld", get_heap_free_size() );
     et024006_PrintString(tmp, (const unsigned char *)&FONT8x8, 230, START_Y_DEMO_TEXT+14*FONT_HEIGHT, BLUE, WHITE);
     // No break here

#endif

  default:
     // Rearm timer
     cpu_set_timeout( cpu_ms_2_cy(TIMER_MMI, FCPU_HZ), &mmi_timer );
     mmi_activity_state = 0;
     break;
  }

mmi_end:
  return;
}