Jump to content

latigid on

Frequent Writer
  • Posts

    2,516
  • Joined

  • Last visited

  • Days Won

    147

Posts posted by latigid on

  1. sr_dout_r1= is for 8x matrices
    sr_dout_r2= is for 16x matrices

    I suppose you only use 8x8 matrices, thus keep sr_dout_r1 for the second DOUT.

    Here's how you address one DOUT PCB:
    sr_dout_r1=1
    sr_dout_r1=2
    sr_dout_r1=3
    sr_dout_r1=4

    and here's how you address the next DOUT:
    sr_dout_r1=5
    sr_dout_r1=6
    ...

  2. Hi Adam,

    Everything works, unless it doesn't :innocent:. Yes, you should be able to use a controller keyboard and route the USB MIDI to another port for example.

    Try here; in essence the hardware is the same, only the FET switch that senses current doesn't feature in the wCore/USB.

    http://midibox.org/forums/topic/18906-usb-host-support-for-mbhp_core_stm32f4/#comment-165136

    As noted, there are a few other jumper settings on the 407v breakout. I've read a few things in passing that require a different pull-up or so depending if the device is self-powered or not.

    Have fun!
    Andy

  3. Hi,

     

    3 minutes ago, ssp said:

    n=<1..8>Specifies the matrix number which should be configured; it can range from 1..8 ( this i dont understand)

    Defines the matrix to be addressed. You could have one matrix for 7-seg digits and another as a simple LED dot matrix. Each one needs a unique address, otherwise MIOS wouldn't know what one to turn on when assigned.

     

    Quote

    rows=<4|8|16>Sets the number of rows which should be scanned: (this i dont understand)

    Simple case: 8 rows is typical. 4 rows will repeat the selection pulses. 16 rows would need two SRs for 16 selection pulses. Use rows-8 unless you need a 16x16 matrix.

     

    Quote

    This is think I understand

    sr_dout_sel1=<0..16> Sets the first DOUT shift register which should output the row selection signals ( if this =1 then this means the 7 segments goto sr=1)

    Determine where the common pin of your LED segments go. Then connect them to this SR in order. If it is the first SR in the chain, then sr_dout_sel1=1. If it is the nth SR in the chain, then sr_dout_sel1=n

     

    Quote

    sr_dout_r1=<0..16>Sets the first DOUT shift register of the LED matrix row. (if r1=1 then the first shift register on the doutx4 pcb is number 1)

    r1 refers to red1, for the case where you're defining an RGB matrix. Then you have g1 and b1, and also r2, g2 and g2 if you want a 16x16 matrix.

     

    Quote

    Where do i assign the common cathodes? as they would link to J4 the second shift register that has no pullup resistors in just bridges.

    Not pull-up resistors, these are series resistors to limit the current and they probably should be bridges to sink more current for the common cathodes. So assign the sr_dout_sel1=n where those bridges are. 

    If you have common cathodes, then 

    inverted_sel=0

    is probably correct. At least that is the case for matrices that I have configured (not including those with sink drivers!)

     

    Quote

    I also looked at this schematic and it blew my mind!!  http://ucapps.de/mbhp/mbhp_blm_map.pdf

    Tell me about it!

    Have fun!
    Andy

  4. Could be anything from incomplete NGC file, dodgy breadboard or wiring, corrupt SD card (saving often doesn't work well, upload always worked better for me) etc. etc. 

    Draw a functional map of how it should work and see if you connected the dots properly. Adapt the NGC file to suit your hardware and again just playing with it might help.

  5. Just now, ssp said:

    DOUT_MATRIX n=1   rows=8  inverted_sel=0  inverted_row=0  mirrored_row=0 \
                       sr_dout_sel1= 0 sr_dout_sel2= 0  sr_dout_r1= 0 sr_dout_r2= 0  sr_dout_g1= 0 sr_dout_g2= 0  sr_dout_b1= 0 sr_dout_b2= 0
    DOUT_MATRIX n=2   rows=8  inverted_sel=0  inverted_row=0  mirrored_row=0 \
                       sr_dout_sel1= 0 sr_dout_sel2= 0  sr_dout_r1= 0 sr_dout_r2= 0  sr_dout_g1= 0 sr_dout_g2= 0  sr_dout_b1= 0 sr_dout_b2= 0

    Define the shift registers connected to the "sel" and "dout" parts, at the moment they all = 0 and so no data are sent.

  6. It's too hard to follow your text sorry. Can you provide the actual wiring that you use and the type of 7-seg displays? How many shift registers are you using and is this accounted for in the .NGC?

    To light up an LED you need a current source (high side) and a current sink (low side).

    For common cathode (CC) displays, the segments are sourced from DOUT pins driven high and "sinked" also into a DOUT pin that is driven low. If the sink pin is high, then the potential is the same on both sides of the LED and so no current flows and the segment remains off. The pattern updates with each RC1 pulse for each LED individually, defined by the pin used for CC. I am not 100% familiar with the logic here, but inverted=1 probably means "to turn this digit on, turn the DOUT pin off"-

    For common anode (CA) displays, the digit is sourced from the DOUT pin and the segments sinked into DOUT pins. Note that the .pdf says

    Common Anode (inverted_sel=0, inverted_row=0)

    i.e. not inverted! 

     

    Try a simpler setup first of all. Just use a simple single LED that you know the polarity of (i.e. test with a multimeter diode mode) and make sure you can get the LED DIGIT pattern working with that LED.

  7. Thanks for the report; the matrix scan would be useful, but it does look somehow like the bottom two rows are connected?

    If the rest of the SRIO chain is fine probably the issue is with the output side.

    I would check the cable for shorts once more. Plug a double-row pinheader in and check continuity for adjacent pins starting in the bottom-left corner 1-2 (bottom right if you view from the pin side) but also the top pin to the next in the series 2-3 etc.

    2 4 ...
    1 3
    notch this side

    The rows are on 8-pin header J5 and the corresponding side of the 24-pin header. Check the male pin headers too.

    For soldering:

    Disconnect the IDC24/16/8 cable and power. Are there shorts on adjacent pins of IC18 on lemec_R? Pins 1,2,17 and 18 would be of interest. 
    On IC17, check for shorts on pins 6,7 and 8 especially.
    On the JA board, the pinout for the LED matrices has row 1 on pin 5 and row 2 on pin 2 (there's a silkscreen indication for pin 1). Check that there are no shorts there especially.

    With _NG and probably best with no .NGC loaded, you can use the MIOS terminal command
     

    set dout x 1

    where x is the shift register pin and 1 turns it on. Count the number of SRs in the chain *8 to set the pins of IC17 The idea is to see if you can control the 74HC595 pins independently. You can also use this to test the matrix: turn on row one and then the columns in turn with the subsequent 8 SR pins.

    Good luck!
    Andy

  8. Hope it works out!

    I can't say anything about whether the connections are correct, but here are some thoughts on the layout.

    2020-01-13.thumb.jpg.fabb6062bdf179fcfe0

    Watch the clearance. It should ideally be as large as possible; often I work with ~0.4mm trace width and 0.5mm spacing (1mm trace-to-trace). Take particular care around unmasked copper such as through-hole pads (e.g. on the 2x8)

    Circled upper-left: the corner can be avoided by routing from the left/bottom left of the pad.

    Circles right: angles a bit messed. Neatest is to use 45° angles for everything.

    • Like 1
  9. Hi Niels,

     

    The power situation is fairly complex and there could be more than one source of noise. Some setups have no issues, some do. With MIDI obviously we have optoisolation so things are different there.

    The power distribution in the SEQ could be better e.g. by improving the return current path (certain Molex connectors on the lemec boards/USB PCB are meant for this). I think that the LED matrices introduce some digital noise as they switch. I'm not sure if this the source of your noise or whether it is the more commonly observed phenomenon encountered when connecting USB audio devices. Could be that your USB +5V from the computer is not designed for the current that you draw from it or is inherently noisy. Peter tested a laptop and USB power bank, which were both quieter than even a phone charger, but a PC tower had a much noisier +5V line. He could filter out some of that noise but it was still worse than the laptop. His Eurorack PSU is transformer based with linear regulators and uses a copper bussboard. I would consider this system superior to a switching PSU and a flying busboard.

    I would tend towards the powered USB hub like TK. uses for the SEQ. Another user still had issues with their hub but then one might imagine that that PSU was also noisy. Very hard to guess. There are also solutions to galvanically isolate USB and could be worth a try? Some are quite cheap and some much more expensive. I can't guarantee anything though, so it might be throwing money at the problem without a satisfactory result.

    For the Euroceiver ground lift, the RS-485 standard recommends to keep the 0V reference connected, even though the power supplies on either end could be mutually floating. Imagine an extreme case where you have a long signal cable and a device either end. You have a massive antenna and a real "ground loop" if the power supplies are connected. In our case, we can have two different power supplies and we keep the signalling within the common-mode range by referencing to a common potential (0V). Without J0 jumpered, the signals may become more susceptible to data corruption as the differential voltages drift apart. You might notice that the setup works in your studio but not at a gig for example.

    Instead of leaving J0 unjumpered you could try to connect a low-value resistor (say 10R) of suitable power rating across it. This might attenuate the noise that you hear.

    Best regards,
    Andy

    • Like 1
  10. @TK. cool!

     

    21 hours ago, Elektruck said:

    Hi Thorsten, 

    Thanx very much for the fast reply, I'm sorry I'm not that fast.... But I think the Hz/V calibration works like it should now, although you really need a unipolar CV output. And I didn't notice any difference in the calibration procedure but maybe you just changed the code and not the procedure?!.... The renaming (Aout > CV 1t/m4) and the GP7 uni/bi polardisplay button is indeed more convenient and looking good!

    I didn't remove the resistors yet, but I measured the following after the Hz/V calibration:

    C2 on the sequencer gave me -1V,  E2=0V,  C3=3V,  E3=5V .   If I add 5 volt to this (changing from bipolar to unipolar) C2=4V,  E2=5V and C4=8V and that's is exactly what it should be so that's why I think the calibration is correct. It is so confusing cause the CV input range of the ms20 is from 0 to 8 Volts, so the ms20 starts playing on E2/0V, and the highest reachable note in bipolar mode is only 1 octave higher E3/5V, and within this octave the ms20 jumps through 4 octaves. That's the difference between lineair and exponential, I was never good at this stuff, I hope you people understand me...

    Thanks again for all the help and the new release, looks very promissing, 4 CV modules is superb and track labeling and all other stuff is just great.

    When removing the offset resistors, consider that the LEDs on the octal PCB will be driven by a higher voltage (current). So consider at a minimum doubling the LED resistor values or even swap the LEDs on unipolar channels to  different colour (with appropriate resistors).

  11. I think you're doing great! :)

    MB_NG is very flexible and comprehensive and you just need to know where to look. I have used it mostly to prototype/test designs for other systems and have never built a controller based on it. I would also say that I (still) don't fully understand the syntax and just muddle my way through the examples. That said, the manual chapter that I linked should serve as a complete documentation source for you. I think your blog-posting style is fine if it serves as a waypoint, no problem! I hope that you don't expect me to answer all of your questions though, because I think that it is your job to learn as you go, and probably the easiest way is just to experiment with the hardware. This is my experience anyway; because I did not write and do not understand the code structures, I need to apply them in hardware and learn by doing. So if you change this parameter you will get that result, which translates something abstract (unintelligible code structures) into something tangible (LCD messages with the desired padding and string format).

    Still, if I can point you in the right direction I will (and anyone else should also feel free to do so!).

    Chin up! All good!
    Andy

  12. 7 hours ago, ssp said:

    I have been working on my layout for my 3 digit 7 segment displays i have ordered.

    The values shown by my plugin are not the usual 0-127, what i need are.

    if you move the pot all the way to the left its max value is -99

    if you move the pot to the far right max value is 99

    with the centre value being 0, or in this case just the centre line of the mide segment digit 2

    this picture hopefully explains it better.

    This is >128 values though, so you will need to use NRPN.

     

    7 hours ago, ssp said:

    I am trying to get to grips with the matrix information, i understand the connection pdf on the dout boards as i have used them before.

    I am also stuck on this section here:

    DOUT_MATRIX n=1   rows=8   sr_dout_r1=1  inverted_row=0  mirrored_row=0  sr_dout_sel1=2  inverted_sel=0
    DOUT_MATRIX n=2   rows=8   sr_dout_r1=3  inverted_row=0  mirrored_row=0  sr_dout_sel1=4  inverted_sel=0

    dout_matrix n=1 (this is the first matrix/sr) rows=8 (are the first 8 pins?), sr_dout_r1=1 (this is shift register 1) the common cathode is on the next section so this is shown is sr_dout_sel1=2 if i am correct.

    i dont understand the syntax in this though, can someone explain it for me and i can then carry on writing the rest of the code

    thanks

    Again uCapps.de has all of the syntax explained:

    Quote

    DOUT_MATRIX

    The DOUT_MATRIX command configures LED matrices which are connected between multiple DOUT shift registers.

    Usecases:

    • Already with 2 DOUT shift registers it's possible to control 64 LEDs. One DOUT is used to select the column, the second DOUT to set the row pattern. By using the led_emu_id_offset parameter they behave like common EVENT_LED elements and can be controlled individually. This saves some hardware! (only 2 DOUT shift registers instead of 8 to drive 64 LEDs).
      Other useful hardware configurations: with 1 DOUT assigned to the column, and two assigned to the row, up to 128 LEDs can be controlled from 3 DOUT shift registers. With two DOUTs assigned to the column, and two assigned to the row, up to 256 LEDs can be controlled from 4 DOUT shift registers.
    • Actually each matrix provides three separate "row layers", called r, g, b (red, green, blue). You get the message: this allows you to control multicolour LEDs!
    • LED Rings and Meters - see also the LED_MATRIX_PATTERN configuration below. The led_matrix_pattern can be passed from a control element (e.g. EVENT_ENC) to the LED matrix in order to output a pattern based on the event value.
    • LED Digits (7-segment displays) are controlled from a DOUT_MATRIX as well. Here are some interconnection diagrams with the appr. .NGC configuration examples:

    Available configuration parameters:

    DOUT_MATRIX Parameter Description
    n=<1..8> Specifies the matrix number which should be configured; it can range from 1..8
    rows=<4|8|16> Sets the number of rows which should be scanned:
    • rows=4: 4 selection pulses are output by the DOUT register specified with sr_dout_sel1. The pulses are available twice: at D7:D4 and D3:D0.
      This configuration allows to scan up to 4x8 LEDs with two DOUTs, or 4x16 LEDs with three DOUTs.
    • rows=8: 8 selection pulses are output by the DOUT register specified with sr_dout_sel1. The pulses are available at D7:D0
      This configuration allows to scan up to 8x8 LED with two DOUTs, or 8x16 LEDs with three DOUTs.
    • rows=16: 16 selection pulses are output by the DOUT registers specified with sr_dout_sel1 and sr_dout_sel2. The pulses are available at D7:D0 of each register.
      This configuration allows to scan up to 16x8 LEDs with three DOUTs, or 16x16 LEDs with four DOUTs.
    inverted=<1|0> DOUT selection lines will be inverted with inverted=1. This is required if the LEDs of the matrix have been connected in the opposite order:
    • inverted=0: Cathodes are connected to the DOUT selection lines, see also this schematic.
    • inverted=1: Inverting sink drivers have been added to the DOUT register.
    • inverted_sel=1 and inverted_row=1: Anodes are connected to the DOUT selection lines (swapped polarity)
    inverted_row=<1|0> DOUT row patterns can be inverted with inverted_row=1
    sr_dout_sel1=<0..16> Sets the first DOUT shift register which should output the row selection signals.
    sr_dout_sel2=<0..16> Sets the second DOUT shift register which should output the row selection signals in a row=16 setup.
    Set this parameter to 0 if a second DOUT is not required.
    sr_dout_r1=<0..16> Sets the first DOUT shift register of the LED matrix row.
    sr_dout_r2=<0..16> Sets the (optional) second DOUT shift register of the LED matrix row.
    sr_dout_g1=<0..16>
    sr_dout_g2=<0..16>
    These parameters allow to drive duo-colour or RGB LEDs by using a second set of DOUTs connected to the green LEDs.
    sr_dout_b1=<0..16>
    sr_dout_b2=<0..16>
    These parameters allow to drive RGB LEDs by using a third set of DOUTs connected to the blue LEDs.
    mirrored_row=<1|0> The pins of the DOUT rows can be mirrored. This happens only for the shift register value itself. Means: if two DOUT shift registers are assigned to the row, they won't be swapped. If this is desired, just change the sr_dout_r1/sr_dout_r2 assignments.
    led_emu_id_offset=<1..4095> With a value >0, the LED matrix will listen on EVENT_LED events instead of EVENT_LED_MATRIX, starting with the specified ID. A matrix of 8x8 LED can emulate 64 LEDs with individual event assignments this way.
    In order to avoid conflicts with LEDs which are directly connected to DOUT pins (and which are accessed with LED:1 .. LED:256), it's recommended specify emulated ids outside this range, e.g. led_emu_id_offset=1001.
    lc_meter_port=<USB1..USB4|IN1..IN4> Special option for the Logic/Mackie Control emulation. It allows to transfer incoming Poly Preasure events (which are used by the protocol to trigger the meters) to LED bars. An usage example can be found in following template (search for "meter"): logictrl.ngc

     

    Please note that all assigned shift registers can't be used for other purposes anymore! E.g. if only 4 rows are scanned, and accordingly only 4 pins are used to select the columns, the remaining 4 pins of the shift register can't be used to control 4 LEDs directly!

     

  13. This is no longer Liquid Crystal but segment displays :)

    Quote

     DOUT_MATRIX

    The DOUT_MATRIX command configures LED matrices which are connected between multiple DOUT shift registers.

    Usecases:

    • Already with 2 DOUT shift registers it's possible to control 64 LEDs. One DOUT is used to select the column, the second DOUT to set the row pattern. By using the led_emu_id_offset parameter they behave like common EVENT_LED elements and can be controlled individually. This saves some hardware! (only 2 DOUT shift registers instead of 8 to drive 64 LEDs).
      Other useful hardware configurations: with 1 DOUT assigned to the column, and two assigned to the row, up to 128 LEDs can be controlled from 3 DOUT shift registers. With two DOUTs assigned to the column, and two assigned to the row, up to 256 LEDs can be controlled from 4 DOUT shift registers.
    • Actually each matrix provides three separate "row layers", called r, g, b (red, green, blue). You get the message: this allows you to control multicolour LEDs!
    • LED Rings and Meters - see also the LED_MATRIX_PATTERN configuration below. The led_matrix_pattern can be passed from a control element (e.g. EVENT_ENC) to the LED matrix in order to output a pattern based on the event value.
    • LED Digits (7-segment displays) are controlled from a DOUT_MATRIX as well. Here are some interconnection diagrams with the appr. .NGC configuration examples:

     

×
×
  • Create New...