ich versuche seit ein paar Tagen 2 4x40 LCDs mit Midibox Seq V4 ans laufen zu bringen. Leider ohne Erfolg.
Ich weiß alle Menüs sind nur für 2 Lines geschrieben, das kann auch so bleiben. Aber ich möchte die Software erweitern und einige Controllerfunktionen für Bitwig implementieren.
Dafür benötige ich mehr Platz auf dem Display.
Ich habe als Core ein STM32F3Discovery.
Leider weiß ich nicht so genau, wo die zwei weiteren E-Pin auf dem Core angeschossen werden.
In der seq_lcd.c steht:
The 2x80 screen is buffered and can be output over multiple LCDs
* (e.g. 2 * 2x40, but also 4 * 2x20)
Um die beiden 4x40 LCD zu betreiben , benötige ich 4 E-Pins wie für die 4 * 2x20 Konfiguration)
Also habe ich erstmal die seq_lcd.c erstmal angepasst.
// can be overruled in mios32_config.h #ifndef LCD_NUM_DEVICES
define LCD_NUM_DEVICES 4
#endif
#ifndef LCD_COLUMNS_PER_DEVICE
define LCD_COLUMNS_PER_DEVICE 20
#endif
Die Folge ist, das ersten 40 Zeichen in 20er Blöcke auf beide LCD in den oberen Reihen geschrieben werden, die letzen 40 Zeichen aber nicht.
Die beiden zusätzlichen E-Pins sind an J10B D0 und D1 angeschlossen. Wenn ich die app_lcd.c richtig gelesen habe, sind die Pins D0 - D7 auf J10B für weitere E-Pins vorgesehen.
MIOS32 wird standardmaessig nur die beiden ersten LCDs initialisieren.
Du muesstest also in SEQ_LCD_Init() noch folgendes einbauen (habe das gerade dementsprechend im SVN repository geaendert):
s32 SEQ_LCD_Init(u32 mode)
{
u8 dev;
// first two LCDs already initialized in main.c
// for the case that more than two LCDs have been configured:
for(dev=2; dev<LCD_NUM_DEVICES; ++dev) {
MIOS32_LCD_DeviceSet(dev);
MIOS32_LCD_Init(0);
}
// switch back to first LCD
MIOS32_LCD_DeviceSet(0);
return 0; // no error
}
Quote
Die beiden zusätzlichen E-Pins sind an J10B D0 und D1 angeschlossen. Wenn ich die app_lcd.c richtig gelesen habe, sind die Pins D0 - D7 auf J10B für weitere E-Pins vorgesehen.
Die Breakpoints werden bei dem optimierten Code nicht immer zuverlaessig funktionieren.
Dahinter steht ja:
// check if if display already has been disabled
if( !(display_available & (1ULL << mios32_lcd_device)) )
return -1;
welchen Wert hat display_available? Ich wuerde 15 (hexadezimal 0xf) erwarten.
Evtl. macht es Sinn, den Breakpoint in SEQ_LCD_Update() zu setzen, bspw. an der Stelle wo MIOS32_LCD_DeviceSet aufgerufen wird - und ab da mal durchsteppen.
Ich habe eine Vermutung: J10B wird ja beim STM32F4 core fuer die optionalen DIN Clock Outputs verwendet, die stehen nun natuerlich im Konflikt mit den LCD Pins (die ja urspruenglich nicht in der Firmware vorgesehen waren).
Ich habe nun seq_cv, seq_hwcfg und seq_file_hw so geaendert, dass die Pins nicht initialisiert werden sollten, wenn im MBSEQ_HW.V4 File “J5_ENABLED” auf 0 gesetzt wurde.
Probiere es mal aus: hole Dir die aktuellen Sourcen aus dem Repository, aendere den Wert fuer J5_ENABLED in Deinem MBSEQ_HW.V4 file auf der SD Karte, und tippe dann “reset” im MIOS Terminal.
Danach sollten die LCDs eigentlich funktionieren. Falls nicht, muesste man ueberpruefen, ob die Pins noch irgendwo anders gesetzt, und nicht ueber die neue Variable “seq_hwcfg_j5_enabled” gegated werden.
Ich habe als Datawheel Encoder einen mit Taster. Betätige ich diesen Taster, zeigt Mios Studio , dass dieser SR Pin nicht hinterlegt ist. Kann ich irgendwo diesen Encoder Button mit einer Funktion hinterlegen? Wenn ja, wo sollte ich das am besten machen? Ist es möglich, dies nur für einen Doppelklick zu ermöglichen, um eine Fehlbedienung zu verhindern?
Ok sind doch mehrere Fragen.
Ich würde diesen Button gerne nutzen, um in mein Bitwig Menü zu gelangen.
Am einfachsten waere es wohl, wenn Du eine bereits vorhandene Funktion, die Du nicht benoetigst, kannibalisierst.
Bspw. den “BUTTON_MIXER”.
Die Pin-Zuweisung wuerdest Du in Deinem MBSEQ_HW.V4 File eintragen (suche dort nach BUTTON_MIXER)
Diese wird dann die SEQ_UI_Button_Mixer() Funktion in seq_ui.c aufrufen… ab dort kannst Du dann weitermachen
Alternativ eine neue Button-Funktion einbauen, doch das waere umstaendlicher - Du koenntest bspw. nach einem geeigneten Stichwort greppen, so weisst Du, welche Files zu aendern sind.