Важная информация

User Tag List

Страница 5 из 26 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 254

Тема: Вывод изображения ретрокомпьютера на TFT-матрицу ("народный контроллер")

  1. #41
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Продолжу свой неторопливый монолог )
    Все в том исходнике очень непрямо, потому что после авторов прошивка кучу раз в разных местах патчилась разными людьми по принципу костыля. То есть делались некие заплатки под какие-то сложные случаи, из-за этого какие-то другие режимы работать переставали.
    Собственно, методом костыля и глубоко не вникая эту прошивку можно подтянуть под свои нужды; часть параметров там правится прямо в описании (maindef.h, struct.h, pcb*.h), некоторые общие для всех режимов параметры можно принудительно выставить в функции инициализации (там в скелете любой программы для, наверное, любого контроллера, есть функция начальной инициализации и функция с "главным циклом"), например, я там выбираю источник VGA при включении, соотношение сторон 4:3, четкость =0.
    Сам код я сейчас умышленно не привожу, это только создаст неразбериху. Когда отлажусь, выложу здесь все диффы вместе в комментариями, а пока только на пальцах расскажу суть того, что там можно "подкрутить".

    Далее. Из сломанной функции подстройки контрастности, которая на ВГА рисовала мне "синеву", пришлось исключить вычисления, связанные с гамма-коррекцией, ибо они завязаны на целый набор слабопонятных параметров и странных таблиц, понять которые в нерабочем виде невозможно. Поэтому для ВГА были приняты те же простые и прозрачные формулы, что и для прочих режимов, это вернуло нормальный белый цвет - а всякие "карамельно-бежевые" и "вырви-глаз-синие" режимы на спеке не нужны, даже не могу придумать, где можно их использовать.

    Еще один важный момент для Спека - правильные пропорции экрана. Достигаются корректировкой горизонтального пиксельклока, сделать это можно прямо из меню, но проблема в том, что сохранение в eeprom в этой прошивке работает как-то... в общем не работает оно. Починить не смог, а сброс на средние значения при пропадании сигнала или смене режима решил просто отключением автоподстройки клока и жестким прописанием нужного "среднего значения" IHTotal прямо в таблице режимов. Тогда нужный режим включается с нужными пропорциями и подстраивается только центровка.
    Этим я добился идеальной правильной картинки пентагона с RGBI-VGA в режиме 60гц

    А вот дальше танцы с бубном. Начал я тестить режим 50гц с RGBI-VGA. Он определялся то как 640x350_50Hz, то как 640x400_56Hz, то как 720x400_56Hz. Случайным образом. Это при том, что последних двух режимов на 56 гц НЕТ в таблице режимов.
    Пропатчил первый режим, чтобы получить весь бордюр (верх и низ), а также правильные пропорции, после бубна он у меня вписался как 640х550_50Hz:
    Код:
        //--------------------------------------------------
        // Preset Modes
        //--------------------------------------------------
        {   // Mode 0 : 640 x 480 x 50 Hz
            0 | _SYNC_HN_VN | _SYNC_HP_VN | _SYNC_HN_VP | _SYNC_HP_VP,          // Polarity Flags,
            640, 550,                                                           // InputWidth, InputHeight,
            315, 500,                                                           // IHFreq in kHz, IVFreq in Hz,
            _HFREQ_TOLERANCE, _VFREQ_TOLERANCE,                                 // IHFreqTolerance in kHz, IVFreqTolerance in Hz,
            800, 525,                                                           // IHTotal, IVTotal,
            144, 25,                                                            // IHStartPos, IVStartPos,
        },
    Но проблема в том, что включается он примерно один раз из пяти, откуда берутся левые режимы в других случаях - не пойму.
    Выстриг из таблицы все то, что касалось разрешений 640x400 и 720x400 - а они все равно включаются (
    IgorR76, были ли проблемы включения "несуществующих" режимов кривой детекции ? Как их победить ?

  2. Эти 3 пользователя(ей) поблагодарили valerium за это полезное сообщение:

    ALS (22.07.2021), andykarpov (25.07.2021), digibear (22.07.2021)

  3. #42
    Master Аватар для IgorR76
    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    651
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    156
    Поблагодарили
    94 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    valerium, нестабильного определения режимов не наблюдал.
    Количество точек по горизонтали — понятие относительное, так как сигнал аналоговый. Главное тут — частота строк. У Вас сейчас задана 31.5кГц. В ретрокомпах — 15.6 кГц.
    Далее. Количество строк в кадре 312 или 320. Видимых — 288...302.
    Ну и толерантность задайте побольше.
    Прошивка умеет два варианта определения параметров входного сигнала — measure mode и preset mode. Я использую measure. Поэтому число пикселей по горизонтали обычно меняется при включении другого источника. А вот определяемое кол-во строк растра всегда стабильное. Как и частоты разверток.
    Для своих целей я поотключал всю автоматику в определении входного сигнала. И при подключении нового компьютера вручную в прошивке подправляю/прописываю настройки. И ни разу не было проблем с нестандартным сигналом.

  4. Эти 3 пользователя(ей) поблагодарили IgorR76 за это полезное сообщение:

    andykarpov (25.07.2021), digibear (22.07.2021), valerium (22.07.2021)

  5. #43
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    Прошивка умеет два варианта определения параметров входного сигнала — measure mode и preset mode. Я использую measure. Поэтому число пикселей по горизонтали обычно меняется при включении другого источника. А вот определяемое кол-во строк растра всегда стабильное. Как и частоты разверток.
    Для своих целей я поотключал всю автоматику в определении входного сигнала. И при подключении нового компьютера вручную в прошивке подправляю/прописываю настройки. И ни разу не было проблем с нестандартным сигналом.
    Что-то не могу сориентироваться. В той прошивке в функции выбора режима вначале ищется режим в preset mode (по таблице), потом ищется по ней же acceptive mode, а потом идет поиск режимов пользователя (по идее ранне запомненных в eeprom). А вот никакого режима замера и настройки не нашел.. Все обращения по замерам часто используются только для определения стабильно установившегося режима - и все. Может у меня версия сильно не та ? (вечером смогу всю конкретику описать).
    Ну или может есть пример кода для настройки режима в measure mode ?

  6. #44
    Master Аватар для IgorR76
    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    651
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    156
    Поблагодарили
    94 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    valerium, я теперь и сам не могу найти. Ковырял это давно, и всё лишнее просто поудалял. Было что-то связанное с дефайнами из Global.h (PRESET/USER_MODE_TYPE). Это влияло и на сохранение вычисленного режима. Но себе я оставил только ручной режим, который каждый раз определяется при включении, и после этого не проверяется его изменение. То есть моник один раз настроился, и уже не погаснет до выключения питания, даже если отключить входной сигнал (типа fpv-monitor). Как старый элт телек. Но и во флешку не сохраняется. Для пользователя, конечно, неудобно, а для ремонта незаменимо.

  7. #45
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    valerium, я теперь и сам не могу найти. Ковырял это давно, и всё лишнее просто поудалял. Было что-то связанное с дефайнами из Global.h (PRESET/USER_MODE_TYPE). Это влияло и на сохранение вычисленного режима. Но себе я оставил только ручной режим
    Я пока примерно так же поборол. Хоть и не люблю костыльный метод, но зажал нос и, краснея, начал рушить труды предшествующих программеров ))
    Оставил в таблице режимов только два нужных мне режима, в функции выбора оставил только режим выбора PRESET_MODE, то есть выбираем по таблице, а если не нашлось ничего, то на выходе принудительно присваиваем тот самый режим 640x550_50Hz. Фрагмент подбора acceptive mode убрал, поиск в юзерских режимах eeprom тоже убрал. В итоге эти два режима работают.

    Теперь весь эксперимент детально (это не готовое решение, это именно эксперимент).
    1. Тестовый комп - Sizif-512 ревизии A, тайминги пентагона на 320 строк. По сути дела просто пентагон.
    2. Матрица AUO B156XTN02.2 1366x768, LVDS, 1 канал, 6 бит. 16:9, у меня работает в режиме с полями по бокам. Это не лучший выбор, а просто то, что было свободного на эксперименты.
    3. RGBI-VGA с прошивкой 1.0.2 и режимами 60гц (обрезан верх на 32 тв-строки) и 48/50гц (скандаблер, полное дублирование всех строк спека).
    4. Народный контроллер на PCB800099
    5. Программатор Ремизова на ардуино нано c 328p (Не знаю, кто этот добрый человек. Но разработка классная. Здоровья ему и долгих лет).

    Прошивка изначально та самая, которую выкладывал digibear.

    Исправления.
    core\code\main.c - в конце функции инициализации выставляем источник VGA, режим 4:3 и sharpness=0, иначе границы цветов имеют излишне контрастные переходы

    Скрытый текст

    Код:
    void CMainSystemInitial(void)
    {
    ...
    	_SET_INPUT_SOURCE(_SOURCE_VGA);	//set default source to VGA
    	SET_DISPLAYMODE (_DISPMODE_43);	//set display ratio to 4:3
    	SET_PEAKING_CORING (0);		//set sharpness=0
    }
    [свернуть]


    pcb\Pcb_RTD3580D_LCDTV_DEMO_PCB5.h - файл параметров для версии на PCB800099.
    отключил ненужные входы, лого при старте, засыпание при отсутствии сигнала

    Скрытый текст

    Код:
    //--------------------------------------------------
    // Function Supported's define
    //--------------------------------------------------   
    #define _VGA_SUPPORT                    _ON
    #define _HDMI_SUPPORT                   _OFF
    #define _TMDS_SUPPORT                   _OFF
    #define _VIDEO_SUPPORT                  _ON
    #define _VIDEO_AV_SUPPORT               _OFF
    #define _VIDEO_SV_SUPPORT               _OFF
    #define _VIDEO_TV_SUPPORT               _OFF
    #define _VIDEO_YUV_SUPPORT              _OFF
    #define _VIDEO_SCART_SUPPORT            _OFF
    #define _YPBPR_SUPPORT                  _OFF
    
    ...
    
    #define _SLEEP_FUNC                            _DISABLE
    #define _LOGO_ENABLE                           _DISABLE
    [свернуть]



    Panel\PNL_LVDS_1366x768_si6.h - файл описания своей матрицы, создается из болванки для LVDS-матрицы или любого аналогичного файла. Параметры под свою матрицу предварительно нагуглил. В этот файл добавил описание Panel8 и раскомментарил/дополнил нужные поля в шаблоне.

    Скрытый текст

    Код:
    //1366x768
    // DTD line  18 21 50 A0 51 00 1B 30 40 90 13 00 00 00 00 00 00 1C
    code PanelType Panel8 =
    {
    	// Panel Style
        _PANEL_LVDS |		//_PANEL_TTL,_PANEL_HZ,_PANEL_LVDS,_PANEL_RSDS
        //_AUTOCALC_PIXCLK |
        _LVDS_MAP2 |		//_LVDS_MAP1,_LVDS_MAP2
        _DISP_18_BIT | 		//_DISP_24_BIT,_DISP_18_BIT
        //_RSDS_GC_SWAP |
        //_RSDS_HL_SWAP |
        //_RSDS_PN_SWAP |
        0x00,                            
    
    	// Panel Configuration
    	//_DHS_MASK |
    	//_DISP_EO_SWAP |
    	//_DISP_RB_SWAP |
    	//_DISP_ML_SWAP |
    	_DISP_SINGLE_PORT |	//_DISP_SINGLE_PORT,_DISP_DOUBLE_PORT
    	//_DVS_INVERT |
    	//_DHS_INVERT |
    	//_DEN_INVERT |
    	0x00,
    
    
    	32,            // Display Horizontal Start Position
    	1366,          // Display Horizontal Width
    
    	1424,          // Display Horizontal Total Clock Number in One Display Line
    
    	1424,          // Display Horizontal Total Clock Number in One Display Line for CVBS PAL
    	1424,          // Display Horizontal Total Clock Number in One Display Line for CVBS NTSC
    
    	12,            // Display Vertical Start Position
    	768,           // Display Vertical Height
    
    	772,           // Display Vertical Total Line Number in One Frame
    
    	16,            // Display H Sync Width
    	3,             // Display V Sync Height
    
    	85,          // Typical Pixel Clock in MHz
    
    	1100,		// H Sync Max Freq Unit in 0.1 kHZ
    	100,		// H Sync Min Freq Unit in 0.1 kHZ
    	880,		// V Sync Max Freq Unit in 0.1 HZ
    	490,		// V Sync Min Freq Unit in 0.1 HZ
    
        // TTL setting   
        //(2 << 4) |  // Delay
        //(1 << 1) |  // DCLK output enable
        0x00,         // DCLK Polarity
    
    };
    
    ...
    // Select panel
    BYTE idata ucPanelSelect = 8;
    
    
    //--------------------------------------------------
    code PanelType *Panel[] = 
    {
         &Panel0,  // 640x480
         &Panel1,  // 800x600
         &Panel2,  // 800x480
         &Panel3, // 1024x768
         &Panel4, // 1280x800
         &Panel5, // 1440x800
         &Panel6, // 1680x1050
         &Panel7, // 1680x1050
         &Panel8, // 1366x768
    };
    [свернуть]



    Panel\panel.h - по сути ненужный файл, т.к. просто нужен для включения в себя описание указанного файла конкретной матрицы и можно обойтись без него, но я сохранил структуру, добавил панель № 120 и условие включения ее файла при компиляции

    Скрытый текст

    Код:
    ...
    #define _PNL_LVDS_1366x768_si6                  120
    ...             
    #define   _PANEL_TYPE 				 _PNL_LVDS_1366x768_si6
    ...
    #if(_PANEL_TYPE == _PNL_LVDS_1366x768_si6)
    #include "Panel\PNL_LVDS_1366x768_si6.h"
    #endif
    ...
    [свернуть]



    core\code\adjust_customer.c
    здесь в функции CAdjustContrast для режима VGA навернута какая-то дичь, взаимодействующая с установками цветовой температуры, но что-то в ней пошло не так и она работает только для синего канала и неправильно. Поэтому функции подстройки контрастности и яркости были упрощены и теперь вот такие:

    Скрытый текст

    Код:
    //--------------------------------------------------
    // Description  : Adjust color precessing brightness
    // Input Value  : None
    // Output Value : None
    //--------------------------------------------------
    void CAdjustBrightness(void)
    {
    	pData[0] = (0x80 + stConBriData.Brightness - 78);
    	pData[1] = (0x80 + stConBriData.Brightness - 78);
    	pData[2] = (0x80 + stConBriData.Brightness - 78);
    	CAdjustSetBrightness();
    	CAdjustBacklight();
    }
    
    //--------------------------------------------------
    // Description  : Adjust color processing contrast
    // Input Value  : None
    // Output Value : None
    //--------------------------------------------------
    void CAdjustContrast(void)
    {
    	pData[0] = (0x80 + stConBriData.Contrast - 38);
    	pData[1] = (0x80 + stConBriData.Contrast - 38);
    	pData[2] = (0x80 + stConBriData.Contrast - 38);
    	CAdjustSetContrast();
    }
    [свернуть]


    core\code\auto.c - функции автоподстройки режима. Здесь пришлось бороться с тем, что параметр clock (пиксельклок для выводимой картинки) необходимо подгонять в каждом режиме под свое значение, чтобы получить квадратные пиксели спека и правильное соотношение сторон ("правильные окружности"). Автоподстройка (ф-я CAutoDoAutoConfig) изначально настраивает фазу, затем настраивает clock (видимо стараясь вписать все точки, проецируя их на рабочую область матрицы), затем опять фазу, а затем центрует, настраивая H-Position и V-Position. Для телека это, наверное, нормально. Но не для спековского монитора. Настройка clock из меню помогает до смены режима и/или выключения, затем снова автоподстройка - и снова все уехало. Поэтому из нее была оставлена только настройка фазы и центровка. Значение пиксельклока берется как константа IHTotal из таблицы режимов, и если оно подобрано вручную, то без подстройки clock все сразу будет правильного размера. Закостыленную функцию здесь привожу целиком - так меньше слов )

    Скрытый текст

    Код:
    BYTE CAutoDoAutoConfig(void)
    {
        BYTE result, phasetemp, watchdogtemp;
    
    	bDoAutoConfigFlag = _TRUE;
        CScalerRead(_WATCH_DOG_CTRL0_0C, 1, &watchdogtemp, _NON_AUTOINC);
        CScalerSetByte(_WATCH_DOG_CTRL0_0C, 0x00);
    
        // Save current phase
    	phasetemp = stModeUserData.Phase;
    
        // Clear the HW auto status to prevent some un-expected event happened
        CScalerSetByte(_AUTO_ADJ_CTRL1_7D, 0x00);
        CMiscClearStatusRegister();
        result  = CAutoDoAutoPosition();
    
        if(result == _ERROR_SUCCESS)
        {
        stModeUserData.Clock = stModeInfo.IHTotal;	//IHTotal sets the default pixelclock, can be tuned in VGA mode table (modetable.h)
        CAdjustAdcClock(stModeUserData.Clock, 2);
    
           result  = CAutoDoAutoPosition();
            if(result != _ERROR_SUCCESS)
                    {
                        stModeUserData.HPosition = stModeInfo.IHStartPos;
                        stModeUserData.VPosition = stModeInfo.IVStartPos;
                        CAdjustHPosition();
                        CAdjustVPosition();
                    }
        }
        else
        {
            stModeUserData.HPosition = stModeInfo.IHStartPos;
            stModeUserData.VPosition = stModeInfo.IVStartPos;
            CAdjustHPosition();
            CAdjustVPosition();
        }
    
        if((result == _ERROR_SUCCESS) || (result == _ERROR_ABORT))
        {
    
            // Save auto result
            CEepromSaveModeData(stModeInfo.ModeCurr);
            CAdjustUpdateCenterData();
            CEepromSaveCenterModeData(stModeInfo.ModeCurr);
        }       
    	bDoAutoConfigFlag = _FALSE;
        CScalerSetByte(_WATCH_DOG_CTRL0_0C, watchdogtemp);
        CMiscClearStatusRegister();
    
        return result;
    }
    [свернуть]



    core\header\modetable.h - описание режимов входного ВГА-сигнала, это самое главное и самое гибкое.
    Здесь оставил только два режима, это 640x480_60Hz и 640x480_50Hz (точнее, не 480, а гораздо больше - 320 строк пентагона дают 640 строк после скандаблера, я видимых оставил 550).
    Здесь тот самый IHTotal и определяет значение пиксельклока, который портился при автоподстройке.

    Скрытый текст

    Код:
    //--------------------------------------------------
    // Preset Mode
    //--------------------------------------------------
    enum PresetModeDef
    {
    	    _MODE_640x480_50HZ = 0,         	// Mode 00: 640x480_50Hz
    	    _MODE_640x480_60HZ,             	// Mode 01:
    	    // end
            _MAX_PRESET_MODE,
    };
    
    ....
    
    ModeTableType code tINPUTMODE_PRESET_TABLE[_MAX_PRESET_MODE] =
    {
        //--------------------------------------------------
        // Preset Modes
        //--------------------------------------------------
        {   // Mode 0 : 640 x 480 x 50 Hz
            0 | _SYNC_HN_VN | _SYNC_HP_VN | _SYNC_HN_VP | _SYNC_HP_VP,          // Polarity Flags,
            640, 550,                                                           // InputWidth, InputHeight,
            315, 500,                                                           // IHFreq in kHz, IVFreq in Hz,
            _HFREQ_TOLERANCE, _VFREQ_TOLERANCE,                                 // IHFreqTolerance in kHz, IVFreqTolerance in Hz,
            784, 575,                                                           // IHTotal, IVTotal,
            144, 54,                                                            // IHStartPos, IVStartPos,
        },
    
        {   // Mode 1 : 640 x 480 x 60 Hz
            0 | _SYNC_HN_VN | _SYNC_HP_VN | _SYNC_HN_VP | _SYNC_HP_VP,          // Polarity Flags,
            640, 480,                                                           // InputWidth, InputHeight,
            315, 600,                                                           // IHFreq in kHz, IVFreq in Hz,
            _HFREQ_TOLERANCE, _VFREQ_TOLERANCE,                                 // IHFreqTolerance in kHz, IVFreqTolerance in Hz,
            880, 525,                                                           // IHTotal, IVTotal,
            144, 35,                                                            // IHStartPos, IVStartPos,
        },
    };
    
    ....
    
    #if(_DISP_INFO_BY_MODE == _ON)
    DisplayTableType code tDISPLAY_PRESET_TABLE[_MAX_PRESET_MODE] =
    {
        //--------------------------------------------------
        // Preset Modes
        //--------------------------------------------------
        {   // Mode 0 : 640 x 480(550) x 50 Hz
            1472,                                                               // DHTotal,
            1280, 1024,                                                         // DHWidth, DVHeight,
        },
    
    
        {   // Mode 1 : 640 x 480 x 60 Hz
            1472,                                                               // DHTotal,
            1280, 1024,                                                         // DHWidth, DVHeight,
        },
    };
    #endif  // End of #if(_DHTOTAL_BY_MODE == _ON)
    [свернуть]


    core\code\mode.c - определение и выбор режима VGA (и не только, но в нашем случае все урезано до VGA)
    Упрощено до выбора готового режима из таблицы в режиме _PRESET_MODE_TYPE. Убран подбор "приемлемого режима" (просто уже не из чего выбирать) и пользовательского режима (_USER_MODE_TYPE), по задумке авторов ранее сохраненного в eeprom. Для борьбы с неправильным выбором режима на выходе значение принудительно заткнуто тем режимом, которые криво выбирался - _MODE_640x480_50HZ (на самом деле 550 строк).

    Скрытый текст

    Код:
    //--------------------------------------------------
    // Description  : Search mode for VGA
    // Input Value  : None
    // Output Value : Mode number
    //--------------------------------------------------
    BYTE CModeSearchModeVGA(void)
    {
    	BYTE modecnt;
    	
    	SET_MODE_SEARCH_TYPE(_PRESET_MODE_TYPE);	///!set preset mode type
    	
    	for (modecnt = 0; modecnt < _MAX_PRESET_MODE; modecnt++) 
    	{
    		if (CModeComparePresetModeVGA(modecnt))
    		{
    				return modecnt;
    		}
    	}
    
    
    	//default mode if no preset found
    	modecnt = _MODE_640x480_50HZ;
    	return modecnt;
    }
    [свернуть]

    Функция CModeSearchAcceptiveModeVGA убрана целиком, ибо мешает компиляции.





    core\code\sync.c - здесь есть функция bCNoCheckSyncMode, которая для ряда больших режимов отключает какую-то проверку режима синхронизации (не вникал, для чего). Она мешала тем, что описания этих режимов уже не было в коде и компиляция просто не выполнялась. Поэтому функция заглушена одной строкой return _FALSE )))

    Скрытый текст

    Код:
    bit bCNoCheckSyncMode(void)
    {
    /*
        if ((_GET_INPUT_SOURCE()==_SOURCE_VGA) && 
                                                (stModeInfo.ModeCurr == (_MODE_1440x900_60HZ_RB) ||
                                                 stModeInfo.ModeCurr == (_MODE_1440x900_60HZ)    ||
                                                 stModeInfo.ModeCurr == (_MODE_1440x900_75HZ)    ||
                                                 stModeInfo.ModeCurr == (_MODE_1024x768_72HZ)    ||
                                                 stModeInfo.ModeCurr == (_MODE_1024x768_70HZ)))
            return _TRUE;
    
        if ((_GET_INPUT_SOURCE()==_SOURCE_DVI) && 
                                                (stModeInfo.ModeCurr == (_MODE_1440x900_60HZ_RB) ||
                                                 stModeInfo.ModeCurr == (_MODE_1440x900_60HZ)))//    ||
                                               //  stModeInfo.ModeCurr == (_MODE_1024x768_72HZ)    ||
                                                 //stModeInfo.ModeCurr == (_MODE_1024x768_70HZ)))
            return _TRUE;
    */
        return _FALSE;
    }
    [свернуть]


    Все, больше костылей не нужно. Спасибо, что дочитали )

    Нажмите на изображение для увеличения. 

Название:	IMG_20210724_035554.jpg 
Просмотров:	214 
Размер:	35.6 Кб 
ID:	75870Нажмите на изображение для увеличения. 

Название:	IMG_20210724_035533.jpg 
Просмотров:	197 
Размер:	42.4 Кб 
ID:	75869
    (ночное фото мне удается не очень, но параметры режимов вроде видно)

    На очереди - поиграться с режимом 15625/50 гц, может теперь уже потяну эту задачку.
    Последний раз редактировалось valerium; 24.07.2021 в 20:44.

  8. Эти 4 пользователя(ей) поблагодарили valerium за это полезное сообщение:

    ALS (25.07.2021), andykarpov (25.07.2021), crackintosh (09.09.2021), Romych (24.07.2021)

  9. #46
    Master Аватар для IgorR76
    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    651
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    156
    Поблагодарили
    94 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    valerium, отличный результат. Для ретрокомпьютеров большей автоматики и не надо.

    У меня показывает аналогично:
    http://igor76.ru/img/mon.jpg

    Есть планы сделать пресеты под каждую модель компа, но нет времени на это. Быстрее выходит подкрутить циферьки в прошивке.

  10. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  11. #47
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Подключил к народному контроллеру своего тестового Ленина, переделанного в пентагон, т.е. на нем тоже 320 строк. Именно его, потому что у меня это единственный аппарат, где собрана аналоговая выходная часть. Коррекция длины ССИ в нем тоже присутствует.
    Через RGBI-VGA оба режима VGA на 60 и на 50гц работали нормально. Добавил режим на 15,6кгц/50гц, подключил его штатный выход к народному контроллеру - получил красный экран с баннером "NOT SUPPORT".
    Дальше я понял, что многие параметры входного режима мне не до конца ясны.
    Откуда взять, например начальный IHTotal и в каких он единицах измеряется, я не смог понять. В режимах ВГА >=31,5кгц все строилось из цифр, списанных из похожего режима. Потом подгонялось, но для этого хотя бы как-то работало. А вот с телевизионными частотами такой трюк не прокатил. Включал все полярности синхросигналов, толерантность к частотам тоже включал такую, что можно на несколько килогерц в сторону уйти - не помогло.

    IgorR76, можете показать пример параметров входного режима для 15кгц ССИ из структуры tINPUTMODE_PRESET_TABLE ?
    Ну и заодно параметры сопряженного режима отображения (структура tDISPLAY_PRESET_TABLE).

    Ну и еще подумалось - а уровни сигнала ему важны ? Я подал ССИ/КСИ прямо с TTL5-выходов, может они ему из-за высоких напряжений не понравились ?
    Есть идеи ?

  12. #48
    Master Аватар для IgorR76
    Регистрация
    25.12.2017
    Адрес
    г. Москва
    Сообщений
    651
    Спасибо Благодарностей отдано 
    122
    Спасибо Благодарностей получено 
    156
    Поблагодарили
    94 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    valerium, там же рядом со структурой комментарии есть. IHTotal - количество точек (пиксельклоков) в строке, вместе с гашением, без синхроимпульса.
    Уровень синхросигнала любой, от 0.8 до 4в. Не имеет значения.
    Просто поиграйтесь цифрами frontporch,backporch — запоказывает.
    А, и да. Эти параметры связаны с параметрами самой матрицы, заданными в panel.h. Было такое, что чуть двинешь растактовку матрицы, и кино появляется.
    Последний раз редактировалось IgorR76; 26.07.2021 в 12:58.

  13. #49
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IgorR76 Посмотреть сообщение
    А, и да. Эти параметры связаны с параметрами самой матрицы, заданными в panel.h. Было такое, что чуть двинешь растактовку матрицы, и кино появляется.
    А вот это очень важная инфа. Я был уверен, что обработка ввода и вывода - это два независимых процесса (захват со входа в некий кольцевой буфер на одной частоте и вывод на матрицу на другой частоте). Оказывается их частоты действительно как-то взаимосвязаны. У описания панели исправил V sync min freq с 490 на 400 (49гц на 40), больше нет баннера "not support", теперь скалер при подаче сигнала от спека показывает просто черный экран и даже не реагирует на кнопки (power в том числе).
    Спасибо, я стал понимать значительно меньше ))))

  14. Этот пользователь поблагодарил valerium за это полезное сообщение:

    andykarpov (25.07.2021)

  15. #50
    Master Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    761
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    229
    Спасибо Благодарностей получено 
    259
    Поблагодарили
    136 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Спасибо, я стал понимать значительно меньше ))))
    Сижу, кручу его, как школьник крутит аналоговый осциллограф в первый раз )
    Параметры матрицы в других режимах работают, их изменение приводит только к ухудшению.
    В описании режима частоты расширял, как мог, указал полярность сси и кси как Negative, чтоб без вольностей, в tINPUT_DISPLAY_MODE в соотв. записи снизил условное разрешение до 800x600 (totalH x totalV) - это уже почти наугад. Воткнул резистивные делители пополам на оба синхросигнала.
    Сейчас режим детектится относительно стабильно, меню вызывается и показывает правильный режим, но экран черный.. Причем если переключить вход на вга-шный выход, то там ловятся оба режима (и 60гц, и 50гц) стабильно, но экран и в них остается черным! Задирание в максимум яркости-констрастности делает чуть светлой отображаемую часть экрана (4:3 в середине), но картинки нет. Она появляется только после перезапуска контроллера по питанию, когда он сразу определяет вгашный сигнал.

    Кстати. Про frontporch/backporch - а это где ? Кроме EDID я там в таком трактовании эти параметры не увидел, но EDID же нам не нужен. Он разве как-то влияет, кроме информирования компа по DDC ?


    Вот на этом я застрял. Пример бы нужен всех наборов настроек, взаимно корректных..

Страница 5 из 26 ПерваяПервая 123456789 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 2
    Последнее: 11.09.2020, 09:36
  2. Ответов: 60
    Последнее: 19.06.2020, 13:02
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Вывод изображения
    от Shnurkov в разделе Изображение
    Ответов: 5
    Последнее: 10.02.2007, 15:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •