Subversion Repositories svn.mios32

Rev

Rev 1118 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1118 Rev 1932
Line 1... Line 1...
1
// $Id: app.c 1118 2010-10-24 13:54:51Z tk $
1
// $Id: app.c 1932 2014-01-15 22:25:13Z tk $
2
/*
2
/*
3
 * Clock Accuracy Tester
3
 * Clock Accuracy Tester
4
 * See README.txt for details
4
 * See README.txt for details
5
 *
5
 *
6
 * ==========================================================================
6
 * ==========================================================================
Line 125... Line 125...
125
125
126
      u32 bpm = 60000000 / c_d_beat.delay_last;
126
      u32 bpm = 60000000 / c_d_beat.delay_last;
127
      u32 avg = c_midi_clock_ctr ? (c_total_delay / c_midi_clock_ctr) : 0;
127
      u32 avg = c_midi_clock_ctr ? (c_total_delay / c_midi_clock_ctr) : 0;
128
128
129
      MIOS32_MIDI_SendDebugMessage("BPM %d.%d  -  tick min/avg/max = %d.%03d/%d.%03d/%d.%03d\n",
129
      MIOS32_MIDI_SendDebugMessage("BPM %d.%d  -  tick min/avg/max = %d.%03d/%d.%03d/%d.%03d\n",
-
 
130
                   bpm / 1000, bpm % 1000,
-
 
131
                   c_d_tick.delay_min / 1000, c_d_tick.delay_min % 1000,
-
 
132
                   avg / 1000, avg % 1000,
-
 
133
                   c_d_tick.delay_max / 1000, c_d_tick.delay_max % 1000);
-
 
134
-
 
135
      MIOS32_LCD_Clear();
-
 
136
      MIOS32_LCD_CursorSet(0, 0);
-
 
137
      MIOS32_LCD_PrintFormattedString("  BPM    Min    Avg    Max     ");
-
 
138
      MIOS32_LCD_CursorSet(0, 1);
-
 
139
      MIOS32_LCD_PrintFormattedString("%3d.%03d %2d.%03d %2d.%03d %2d.%03d",
130
                   bpm / 1000, bpm % 1000,
140
                      bpm / 1000, bpm % 1000,
131
                   c_d_tick.delay_min / 1000, c_d_tick.delay_min % 1000,
141
                      c_d_tick.delay_min / 1000, c_d_tick.delay_min % 1000,
132
                   avg / 1000, avg % 1000,
142
                      avg / 1000, avg % 1000,
133
                   c_d_tick.delay_max / 1000, c_d_tick.delay_max % 1000);
143
                      c_d_tick.delay_max / 1000, c_d_tick.delay_max % 1000);
134
    }
144
    }
Line 291... Line 301...
291
/////////////////////////////////////////////////////////////////////////////
301
/////////////////////////////////////////////////////////////////////////////
292
static s32 NOTIFY_MIDI_Rx(mios32_midi_port_t port, u8 midi_byte)
302
static s32 NOTIFY_MIDI_Rx(mios32_midi_port_t port, u8 midi_byte)
293
{
303
{
294
  // check for MIDI clock
304
  // check for MIDI clock
295
  if( midi_byte == 0xf8 ) {
305
  if( midi_byte == 0xf8 ) {
296
    mios32_sys_time_t t = MIOS32_SYS_TimeGet();
306
    u32 timestamp = MIOS32_TIMESTAMP_Get();
297
    u32 timestamp = 1000*t.seconds + t.fraction_ms;
-
 
298
307
299
    DelayUpdate(&d_tick, timestamp);
308
    DelayUpdate(&d_tick, timestamp);
300
309
301
    if( (midi_clock_ctr % 24) == 0 )
310
    if( (midi_clock_ctr % 24) == 0 )
302
      DelayUpdate(&d_beat, timestamp);
311
      DelayUpdate(&d_beat, timestamp);
Line 314... Line 323...
314
    return 0; // no error, no filtering
323
    return 0; // no error, no filtering
315
  }
324
  }
316
325
317
  // check for MIDI start or continue
326
  // check for MIDI start or continue
318
  if( midi_byte == 0xfa || midi_byte == 0xfb ) {
327
  if( midi_byte == 0xfa || midi_byte == 0xfb ) {
319
    mios32_sys_time_t t = MIOS32_SYS_TimeGet();
328
    u32 timestamp = MIOS32_TIMESTAMP_Get();
320
    u32 timestamp = 1000*t.seconds + t.fraction_ms;
-
 
321
329
322
    timestamp_midi_start = timestamp;
330
    timestamp_midi_start = timestamp;
323
331
324
    u8 including_min_max = 0;
332
    u8 including_min_max = 0;
325
    DelayInit(&d_tick, including_min_max);
333
    DelayInit(&d_tick, including_min_max);