SM010 Programmer’s Reference

Извините, этот техт доступен только в “English”. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

SSSR Labs SM010 Matrixarchate
Firmware v. 1.2 and later
Programmer's reference

I2C control specification (Teletype mode)
-------------------------

I2C Addresses
0xB8 (Unit 1, Default)
0xB9 (Unit 2)
0xBA (Unit 3)

Bit fields legend
x - ignored bits
ccc = column address (left to right)
rrrr = row address (top to bottom)
t = Current program if 1
ppppppp - program number (63 = setup)
llllllll - low data byte
hhhhhhhh - high data byte

Bit order for row is from left to right (Low 0..7)
-------------------------------------------
| BITS    | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| COLUMNS | H | G | F | E | D | C | B | A |
-------------------------------------------
 
Bit order for column is from top to bottom (Low 0..7, High 0..7)
-------------------------------------------------------------------------------------------
| BYTES   |                   1                   |                   2                   |
| BITS    |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 |
| ROWS    |  8 |  7 |  6 |  5 |  4 |  3 |  2 |  1 | 16 | 15 | 14 | 13 | 12 | 11 | 10 |  9 |
-------------------------------------------------------------------------------------------

I²C command codes
-----------------
Perform Sequencer Step:
  Code
  11111000 (0xF8)
  
  Example:
  00-->B8: F8
  (Go to the next step in the sequence)


Sequencer Reset:
  Code
  11111101 (0xFD)
  
  Example:
  00-->B8: FD
  (Go to the first step in the sequence)


Program Change:
  Code     Program
  11000000 XXnnnnnn (0xC0 ..)
  
  Example:
  00-->B8: C0 0A
  (Switch to program 11. Visually numbered 01-60 or 1A-8D, logically 00-59)


Switch Off:
  Code     Address  program 
  10000000 0rrrrccc tppppppp (0x80 .. ..)
  
  Example:
  00-->B8: 80 14 FF
  (Switch off crosspoint "03E" in current program. Visually numbered 01A-16H, logically 0-127)


Switch On:
  Code     Address  program 
  10010000 0rrrrccc tppppppp (0x90 .. ..)
  
  Example:
  00-->B8: 90 08 FF
  (Switch on crosspoint "02A" in current program. Visually numbered 01A-16H, logically 0-127)
  

Update column:
  Code     Address  program  data_low data_high
  10110000 0xxxxccc tppppppp llllllll hhhhhhhh (B0 .. .. .. ..)
  
  Example:
  00-->B8: B0 03 00 0F C0
  (Update program 01, column D, turn switches 1, 2, 3, 4, 9, 11 ON, all others OFF.
  

Update row:
  Code     Address  program  data_low data_high
  10110000 1xxxrrrr tppppppp llllllll xxxxxxxx (B0 .. .. .. ..)
  
  Example:
  00-->B8: B0 83 10 5C 00
  (Update program 17, row 4, turn switches B, D, E, G ON, all others OFF.


Request memory location:
  Code     Addr_L   Addr_H
  10100000 LLLLLLLL HHHHHHHH (A0 .. ..)
  (returns 1-byte data)
  
  Example:
  00-->B8: A0 FF 03
  00<--B8: 02 (Request settings byte (0x03ff), return value 0x02)


Update memory location:
 Code Addr_L Addr_H Data 11010000 LLLLLLLL HHHHHHHH DDDDDDDD (D0 .. .. ..)

 Example: 00-->B8: A0 FE 03 08
 (Set brightness (0x03FE) to medium (0x08)


Request column
  Code     Address  program
  11110101 0xxxxccc tppppppp (F5 .. ..)
  (returns 2-byte data)
  
  Example:
  00-->B8: F5 00 FF
  00<--B8: 40 02
  (Request column A of the current program with only Switches 07A and 10A enabled)


Request row
  Code Address program 11110101 1xxxrrrr tppppppp (F5 .. ..)
  (returns 2-byte data)

  Example:
  00-->B8: F5 8F FF
  00<--B8: FF 00
  (Request row 16 of the current program with All switches A-H enabled)


Memory allocation
----------------
0x000: Patch memory block, Program 01 (16 bytes)
0x010: Patch memory block, Program 02 (16 bytes)
...
0x3B0: Patch memory block, Program 60 (16 bytes)
0x3C0: Reserved (48 bytes)
...
0x3F0: Sequencer memory block (8 bytes)
...
0x3F8: Reserved
0x3F9: Reserved
0x3FA: Reserved
0x3FB: Reserved
0x3FC: Reserved
0x3FD: Reserved
0x3FE: Brightness Byte
0x3FF: Settings Byte
------ END OF EEPROM ------


Logical switch addresses (as shown on the matrix)
-------------------------------------------------
| A01 | B01 | C01 | D01 | E01 | F01 | G01 | H01 |
-------------------------------------------------
| A02 | B02 | C02 | D02 | E02 | F02 | G02 | H02 |
-------------------------------------------------
| A03 | B03 | C03 | D03 | E03 | F03 | G03 | H03 |
-------------------------------------------------
| A04 | B04 | C04 | D04 | E04 | F04 | G04 | H04 |
-------------------------------------------------
| A05 | B05 | C05 | D05 | E05 | F05 | G05 | H05 |
-------------------------------------------------
| A06 | B06 | C06 | D06 | E06 | F06 | G06 | H06 |
-------------------------------------------------
| A07 | B07 | C07 | D07 | E07 | F07 | G07 | H07 |
-------------------------------------------------
| A08 | B08 | C08 | D08 | E08 | F08 | G08 | H08 |
=================================================
| A09 | B09 | C09 | D09 | E09 | F09 | G09 | H09 |
-------------------------------------------------
| A10 | B10 | C10 | D10 | E10 | F10 | G10 | H10 |
-------------------------------------------------
| A11 | B11 | C11 | D11 | E11 | F11 | G11 | H11 |
-------------------------------------------------
| A12 | B12 | C12 | D12 | E12 | F12 | G12 | H12 |
-------------------------------------------------
| A13 | B13 | C13 | D13 | E13 | F13 | G13 | H13 |
-------------------------------------------------
| A14 | B14 | C14 | D14 | E14 | F14 | G14 | H14 |
-------------------------------------------------
| A15 | B15 | C15 | D15 | E15 | F15 | G15 | H15 |
-------------------------------------------------
| A16 | B16 | C16 | D16 | E16 | F16 | G16 | H16 |
-------------------------------------------------


Switch addresses allocation in a patch memory block
--------------------------------------------------------
| OFFS.|                    Bits:                      |
--------------------------------------------------------
|      |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
--------------------------------------------------------
| 0x00 | A08 | A07 | A06 | A05 | A04 | A03 | A02 | A01 |
--------------------------------------------------------
| 0x01 | B08 | B07 | B06 | B05 | B04 | B03 | B02 | B01 |
--------------------------------------------------------
| 0x02 | C08 | C07 | C06 | C05 | C04 | C03 | C02 | C01 |
--------------------------------------------------------
| 0x03 | D08 | D07 | D06 | D05 | D04 | D03 | D02 | D01 |
--------------------------------------------------------
| 0x04 | E08 | E07 | E06 | E05 | E04 | E03 | E02 | E01 |
--------------------------------------------------------
| 0x05 | F08 | F07 | F06 | F05 | F04 | F03 | F02 | F01 |
--------------------------------------------------------
| 0x06 | G08 | G07 | G06 | G05 | G04 | G03 | G02 | G01 |
--------------------------------------------------------
| 0x07 | H08 | H07 | H06 | H05 | H04 | H03 | H02 | H01 |
========================================================
| 0x08 | A16 | A15 | A14 | A13 | A12 | A11 | A10 | A09 |
--------------------------------------------------------
| 0x09 | B16 | B15 | B14 | B13 | B12 | B11 | B10 | B09 |
--------------------------------------------------------
| 0x0A | C16 | C15 | C14 | C13 | C12 | C11 | C10 | C09 |
--------------------------------------------------------
| 0x0B | D16 | D15 | D14 | D13 | D12 | D11 | D10 | D09 |
--------------------------------------------------------
| 0x0C | E16 | E15 | E14 | E13 | E12 | E11 | E10 | E09 |
--------------------------------------------------------
| 0x0D | F16 | F15 | F14 | F13 | F12 | F11 | F10 | F09 |
--------------------------------------------------------
| 0x0E | G16 | G15 | G14 | G13 | G12 | G11 | G10 | G09 |
--------------------------------------------------------
| 0x0F | H16 | H15 | H14 | H13 | H12 | H11 | H10 | H09 |
--------------------------------------------------------


Visual sequencer steps allocation
-----------------------------------------
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
-----------------------------------------
| 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
-----------------------------------------
| 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
-----------------------------------------
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
-----------------------------------------
| 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
-----------------------------------------
| 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
-----------------------------------------
| 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
-----------------------------------------
| 57 | 58 | 59 | 60 | -- | -- | -- | -- |
-----------------------------------------


Sequencer steps allocation in the settings memory block
---------------------------------------------------------
| ADDR  |                    Bits:                      |
---------------------------------------------------------
|       |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
---------------------------------------------------------
| 0X3F0 | 57  | 49  | 41  | 33  | 25  | 17  | 09  | 01  |
| 0x3F1 | 58  | 50  | 42  | 34  | 26  | 18  | 10  | 02  |
| 0x3F2 | 59  | 51  | 43  | 35  | 27  | 19  | 11  | 03  |
| 0x3F3 | 60  | 52  | 44  | 36  | 28  | 20  | 12  | 04  |
| 0x3F4 | xx  | 53  | 45  | 37  | 29  | 21  | 13  | 05  |
| 0x3F5 | xx  | 54  | 46  | 38  | 30  | 22  | 14  | 06  |
| 0x3F6 | xx  | 55  | 47  | 39  | 31  | 23  | 15  | 07  |
| 0x3F7 | xx  | 56  | 48  | 40  | 32  | 24  | 16  | 08  |
---------------------------------------------------------


Brightness byte (0x3fe)
----------------
Allowed brightness value: 1..15


Settings byte (0x3ff)
---------------------------------
| X | X | t | t | p | d | s | s |
---------------------------------
ss: sequencer direction
00 - Forward
01 - Backward
10 - Pendulum
11 - Random

d: display mode
0 - Normal
1 - Graphically assisted

p: program display mode
0 - Decimal
1 - Octal

tt: I2C address for Monome Teletype
00: 0x8B
01: 0x8C
10: 0x8D
11: 0x8B