tago

Assign J5a/b core ports in .NGC

13 posts in this topic

I want to connect some switches and leds directly to the CORE_STM32F4 via J5a/b ports.

The NG manual shows an example using them as AINs, but not DIN/DOUT. Then i found the tutorial applications (eg polling_j5_pins) which show how to use them on app level.

What i dont get, is there a way to setup these ports and its indivdual pins directly in a .NGC file?

Share this post


Link to post
Share on other sites

Hello Tago

Yes J5 ports are available at .NGC, as analogue input, EVENT_AIN

with "ain_mode=switch" flag you can hook a button on it

You have to enable the input pins with:

Example:

# AIN hardware
AIN enable_mask=110000

will enable the J5A.A0 and J5A.A1 inputs. 

To connect LED I suppose you have to go deeper in mios32.

If you use toggle switch (and not tact switch) you can solve this with a dual pole version, one for the AIN and one for a LED directly powered by the switch.

Best

Zam

Share this post


Link to post
Share on other sites

Hi Zam,

they're tact switches.

I'd like to avoid additional modules for just 2 switches and 2 LEDs. A pity there is no easy way for LEDs.

It means i have to add code in terms of the 'j5_outputs' example to NG app, right?

Share this post


Link to post
Share on other sites

Hey

I can't help for J5 handle at lower level.

Side question, did you already use J10 ?

Best

Zam

Share this post


Link to post
Share on other sites

Posted (edited)

Currently no J10 in use for now. I wanted to keep J10a clear if i later want to add an SCS. Therefor J10b would be available.

But the issue i found was, that you can't have mixed DIN/DOUT on a J10 port. That lead me to the J5 ports. The wiring to core would be a mess for a little board with 2 switches and 2 LEDs.

 

ps. i want to setup two octave up/down buttons with indication LEDs

Edited by tago

Share this post


Link to post
Share on other sites

You can mix IN/OUT at J10, but have to choose for a full row, a and b

So if you want to keep spare for future SCS (at J10a) it's not an option...

I'm sure someone can help you better than me for software side and J5 implementation

Best

Zam

 

 

Share this post


Link to post
Share on other sites

Hi,

i'd like to continue working on my keyboard controller project.

Is there absolutely no way to set up the J5 ports as individual digital IO's in ngc? I'd like to avoid a cumbersome solution modifing the source code. If there is no easy way, then so be it.

 

May i ask if it's possible to simply do the following?

I want to setup J5a to have 2 digital ins and two digital outs.

// init pin 0 and 1 as digital ins (for tact switches)
MIOS32_BOARD_J5_PinInit(0, MIOS32_BOARD_PIN_MODE_INPUT_PU);
MIOS32_BOARD_J5_PinInit(1, MIOS32_BOARD_PIN_MODE_INPUT_PU);


// init pin 2 and 3 as digital outs (for LEDs)
MIOS32_BOARD_J5_PinInit(2, MIOS32_BOARD_PIN_MODE_OUTPUT_PP);
MIOS32_BOARD_J5_PinInit(3, MIOS32_BOARD_PIN_MODE_OUTPUT_PP);

I assume i'd then have J5a:A0..A1 configured as INs and J5a:A2..A3 as OUTs, right?

 

Thank you very much!

 

Share this post


Link to post
Share on other sites

I got the two LEDs working. I assume the switches will work too.

Now i need some help or hints on the implementation of kb_transpose on these elements. In the end i'd like to have octave up/down tact switches with respective indicator LEDs, as seen on many keyboard controllers.

It looks like i can't do it via ngc scripts, because there is no event for J5 digital IOs. There is only EVENT_AIN when configured as analog inputs. Is this right?

But where should i put my custom button handler code in the NG app source? Do i need a new variable for the transpose state or is there already one?

Any ideas?

Thank you very much!

 

Share this post


Link to post
Share on other sites

How can i set/get kb_transpose from within the NG app?

Share this post


Link to post
Share on other sites

Hello

maybe this ?

kb_transpose=<-128..127>  Only valid for EVENT_KB: specifies the transpose value for the played key from -128..127

Best

Zam

Share this post


Link to post
Share on other sites

Hi Zam,

thanks for joining in.

This is from the .ngc manual, right? As far as i understood i have to do it in the ng app itself and can't simply use ngc/ngr.

Unfortunately i've no clue in which function i should put custom event handlers. Should i put it into APP_TICK (app.c) function?

But i'm not sure about it.

 

Share this post


Link to post
Share on other sites

I'd like to know the best place for the button handler and how to get/set kb_transpose values.

Here is some pseudo code.

void APP_Background(void)
{
	int old_transpose = kb_transpose;
	int new_transpose;
	
	// up btn pressed	
	if( MIOS32_BOARD_J5_PinGet(0) == 0) {
		new_transpose = old_transpose + 12;
	}

	// down btn pressed
	if( MIOS32_BOARD_J5_PinGet(1) == 0) {
		new_transpose = old_transpose - 12;
	}

	// transpose and handle LEDs
	if( old_transpose != new_transpose ) {

		kb_transpose = new_transpose;

		if( new_transpose > 0 ) {
			// enable up LED
			// disable down LED 
		} else if (new_transpose < 0 ) {
			// enable down LED
			// disable up LED 
		} else {
			// disable both LEDs
		}
	}
}

 

Share this post


Link to post
Share on other sites

Posted (edited)

There is this line in mbng_kb.c

s8 kb_transpose = (s8)item.custom_flags.KB.kb_transpose;

What is item.custom_flags.KB.kb_transpose ? It looks like the place where the current transpose value is stored. But how can i modify this value myself?

Edit: Where is "item" coming from? I see it declared as "mbng_event_item_t" but not where it is referenced to any object.

Edited by tago

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