Phatline

MIOS32_DONT_SERVICE_SRIO_SCAN & Shiftregistors

4 posts in this topic

i have a small 25keys keyboard here (alesis proton x25), i managed to get the keys velocity sensitive to working, the connector is 1:1 to the DIO-Matrix ---lucky me!

 

but i run into the problem that the code uses:

#define MIOS32_DONT_SERVICE_SRIO_SCAN 1

which disables my normal Shiftregisters for Encoder I cant use the J10 or J5 for it, because they have to less pins, and they are already used for other stuff anyway...

 

How can i use the Shiftregistors?  ... i have 4 DIN and 4 DOUT Registor in addition to the MB-DIO-Matrix

 

I read that in for example the MB-KB code:

/////////////////////////////////////////////////////////////////////////////
// This hook is called after the shift register chain has been scanned
/////////////////////////////////////////////////////////////////////////////
void APP_SRIO_ServiceFinish(void)
{
  // -> keyboard handler
  KEYBOARD_SRIO_ServiceFinish();

  // standard SRIO scan has been disabled in programming_models/traditional/main.c via MIOS32_DONT_SERVICE_SRIO_SCAN in mios32_config.h
  // start the scan here - and retrigger it whenever it's finished
  APP_SRIO_ServicePrepare();
  MIOS32_SRIO_ScanStart(APP_SRIO_ServiceFinish);
}

i dont know what that mean? should it still working then?

 

 i found out, that i still can activate LEDs, and i get the DIN-States, however i dont get any ENC Values

 

The Hardware itself is functional since i debugged it with tutorials/015_enc_absolute

 

i am pretty sure that something in here, break the enc routine:

void APP_SRIO_ServicePrepare(void){

	  // select next column, wrap at 16
  if( ++selected_row >= MATRIX_NUM_ROWS ) {
    selected_row = 0;

    // increment timestamp for velocity delay measurements
    ++timestamp;
  }

  // selection pattern (active selection is 0, all other outputs 1)
  u16 selection_mask = ~(1 << (u16)selected_row);

  // transfer to DOUTs
#if MATRIX_DOUT_SR1
  MIOS32_DOUT_SRSet(MATRIX_DOUT_SR1-1, (selection_mask >> 0) & 0xff);
#endif
#if MATRIX_DOUT_SR2
  MIOS32_DOUT_SRSet(MATRIX_DOUT_SR2-1, (selection_mask >> 8) & 0xff);
#endif}

}






void APP_SRIO_ServiceFinish(void) {
  // check DINs
#if MATRIX_DIN_SR
  // the DIN scan was done with previous row selection, not the current one:
  int prev_row = selected_row ? (selected_row - 1) : (MATRIX_NUM_ROWS - 1);

  u8 sr = MATRIX_DIN_SR;
  MIOS32_DIN_SRChangedGetAndClear(sr-1, 0xff); // ensure that change won't be propagated to normal DIN handler
  u8 sr_value = MIOS32_DIN_SRGet(sr-1);

  // determine pin changes
  u8 changed = sr_value ^ din_value[prev_row];

  if( changed ) {
    // add them to existing notifications
    din_value_changed[prev_row] |= changed;

    // store new value
    din_value[prev_row] = sr_value;

    // store timestamp for changed pin on 1->0 transition
    u8 sr_pin;
    u8 mask = 0x01;
    for(sr_pin=0; sr_pin<8; ++sr_pin, mask <<= 1) {
      if( (changed & mask) && !(sr_value & mask) ) {
	din_activated_timestamp[prev_row*8 + sr_pin] = timestamp;
      }
    }
  }

#endif

  // standard SRIO scan has been disabled in programming_models/traditional/main.c via MIOS32_DONT_SERVICE_SRIO_SCAN in mios32_config.h
  // start the scan here - and retrigger it whenever it's finished
  APP_SRIO_ServicePrepare();
  MIOS32_SRIO_ScanStart(APP_SRIO_ServiceFinish);
}

 

Edited by Phatline

Share this post


Link to post
Share on other sites

or could J19 (SPI2) reused, for a second "J8/J9" like SR "Chain"? (has this already some one done, which app?)

J16 cant be used because of:

Quote

J16 is normaly connected to a SD Card

Core32-J19.png.f6a6dea65a1843b875bfb849a

Quote

J19 doesn't support DMA transfers, so that MIOS32_SPI_TransferBlock() will consume CPU time (but the callback handling does work).

so maybe not...

&&

Quote

MIOS32_spi.c says:

//! J19 provides SPI + two RCLK lines at 5V.
//! It's some kind of general purpose SPI, and used to communicate with
//! various MBHP modules, such as MBHP_AOUT* and MBHP_AINSER*

 

 

 

....By the way this is the Keyboard Layout...:

Key-board.thumb.jpg.d79b8b20881f037164ce

 

and thats the midibox stuff... its getting pretty full in there ;)

phton.thumb.jpg.424dd115bc05930dd565ddee

 

Edited by Phatline

Share this post


Link to post
Share on other sites

THX that solved it!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now