Последняя редакция схем/плат версии 2.0 - NS_V2_0_rev3_7
Прошивка для 2.0 - NS_V2_0_rev1_7E_Firmware Вкл./Отк. каналов А/В происходит по нажатию соотв. кнопок когда ни одно меню не выбрано, при выборе меню Sync эти кнопки перекл. источник синхронизации.
Для конфигурации DS1085 прошить соответствующей прошивкой МК, передернуть питание, подождать некоторое время пока на экране ЖК не выведется надпись об успешном завершении и выключить осцилл. Адрес DS1085 устанавливается равным 0x59 (89 по десятичной системе).
Данная прошивка просто делает автоматом то что можно сделать вручную из программы на ПК и если настраивать вручную из программы то она не нужна.
Внимание! При конфигурации к I2C не должно быть подключено ничего кроме DS1085.
Схема ревизия 3.2 - NS_3.0_rev_3.2.pdf Схема соединения ЖК с 16-ти битной шиной(только для ревизий ниже 3.2, в 3.2 HC573 уже есть на основной плате) - NS_3.0_HC573.pdf BOM(список компонентов) - BOM_NS3_rev3_2.htm
//---------------------------------------------------------------------------------------------------------- Прошивальщик МК (автор Ильдар) - NSFlashLoader2. Утилита для перепрошивки СР2102 VID/PID под NeilScope3 (автор Ильдар) - NSCP2102Utilite2.rar. Использование данных VID/PID для перепрошивки СР2102 под другие устройства категорически запрещено, они были получены по запросу у Silicon Laboratories Inc. и предназначены для использования только с NeilScope3 или другими версиями NeilScope.
Утилита для теста осциллографа - ns_test_util. Для запуска нужно скачать и установить Python 3.4 и PyQt5, при установке добавляем переменные окружения. Распаковать архив куда нибудь и набрать из этой папки в консоли - "python main.py"
Для последующих обновлений просто запускаем NSFlashLoader, и обновляемся. Джампер при этом трогать уже не нужно.
//---------------------------------------------------------------------------------------------------------- . . . Важные замечания по сборке
На плате не указана перемычка с 10-го вывода(INTRL) 74НС4052(U15) на вывод SWDIO МК, можно и просто подпаять пока на +3.3В в любое удобное переходное отверстие.
Ой, это я тупанул, даже не знаю куда смотрел Значит делаем интерлив на них ! У меня их тоже много ! Только правильно включить надо, чтобы Ron ни на что не влиял.
Сообщение отредактировал LazyCat - Воскресенье, 19.12.2010, 18:54
Ну наверно совсем чтобы не влиял не получится, сейчас будет влиять но практически одинаково на оба канала, так как все ключи в одном корпусе и по идее более менее одинаковы. ---
Это плохо, ведь не зря же в прототипе даже точность резисторов в обвязке AD8132 0.1%, а тут последовательно с ними включены сопротивления ключей ! Как вариант, можно их перенести на вход ОУ, но это не совсем красиво. Но если еще добавить буфер, то будет гораздо лучше, хотя всеравно не то
Quote (LeftRadio)
Предлагаю как то вот так...
Жаль только, что у max4546 ограничительные диоды
Quote (LeftRadio)
Блин посмотрел сколько жрет AD8132, так лучше уже МАХ4212
Если учесть, что в адэшке по сути 2 ОУ, то выходит даже меньше чем у макса
Ну 0.1% я считаю что уже перебор, да и по термостабильности неизвестно какие... Можно конечно оставить переключение в интерлив на строенном ОУ от ЛТ, но они Current Feedback что тоже не добавляет счастья при построении каскада с изм. к. у. на них , может надуманная проблема?
Quote (LazyCat)
Жаль только, что у max4546 ограничительные диоды smile
Да жаль, но если иметь внешний щуп 1/10, то это не так актуально и даже можно снизить коэфициенты деления например до 1/40 и 1/20, что даст диапазон 400Vp-p при 1/20 и щупе 1/10.
Quote (LazyCat)
Если учесть, что в адэшке по сути 2 ОУ, то выходит даже меньше чем у макса
Так может ну их эти АД поставим МАХ4212 и бог с ним с диф. сигналом. Кстати есть предложение сделать на выбор источник реф. джампером, внутр. АЦП или внешний типа MAX6126AASA21 ? ---
Да жаль, но если иметь внешний щуп 1/10, то это не так актуально и даже можно снизить коэфициенты деления например до 1/40 и 1/20, что даст диапазон 400Vp-p при 1/20 и щупе 1/10.
Внешний делитель на щупе - это зло...
Quote (LeftRadio)
Кстати есть предложение сделать на выбор источник реф. джампером, внутр. АЦП или внешний типа MAX6126AASA21 ?
А зачем нам внешний ИОН? Чем плох тот, что в АЦП?
Сообщение отредактировал Муха - Вторник, 21.12.2010, 05:37
Появилась шальная мысль Ставим AD8065 в качестве буфера, затем AD603 в качестве управляемого делителя, сюда же на вывод FDBK заводим сигнал коррекции нуля, а потом ставим MAX4546 для интерлива и дальше сразу АЦП в недифференциальном включении. И это ВСЕ !!!
P.S. совсем забыл сказать, что на входе в каждом канале я бы поставил один делитель 1:20 и один на оба канала MAX4546 !
Сообщение отредактировал LazyCat - Вторник, 21.12.2010, 12:22
Действительно шальная . Мне все же кажется что оставлять АЦП без драйвера не есть хорошо и я считаю наиболее приемлемым такой вариант. Номиналы нужно будет еще уточнять.
Мне все же кажется что оставлять АЦП без драйвера не есть хорошо
В недифференциальном включении это абсолютно излишне. Тем более в этом смысле оба варианта эквивалентны (U31 находится внутри AD603, а R93 - это сопротивление открытого ключа) Неустранимые недостатки все те же (самое интересное можно найти в табл.1 доки на MAX4212). К тому же я подсчитал, что Ваш вариант жрет на 12mA больше и стоит на 22$ больше по дижикеевским ценам Но, Вы автор - Вам виднее !
Сообщение отредактировал LazyCat - Среда, 22.12.2010, 10:07
CY22394(можно CY22393 или CY22395) - 5 программируемых выходов, можно элементарно получить парафазный выход, не более 100ma потребления и стоит на дижикее около $8.
А на Кипариске итого 2,40$. Но как тогда с прошивкой? Ведь её подправить под Кипарис трэба? А я в програмировании дуб дубом . А вариант 2.1_analog мну нравица (потому, что почти усё иость ).
Quote (LazyCat)
самое интересное можно найти в табл.1 доки на MAX4212
Ммм...дааа... Но кто нынче не без грехА? Тем более, если получил даром (дарённому коню в зубы не смотрят). Так я же следовал авторским рекомендациям и потихоньку клянчил детали.
Ничего там такого криминального нет smile У всех ОУ уменьшается полоса при увеличении к.у.
А и вправду - не так страшен чёрт... Да я потом подумал: ну а уж очень кто будет рассматривать столь высокие частоты, на коие тянет верхний предел девайса. Единицы. Так шо для простого смертного (то бишь - мну ) - переживу. Да и проценту эдак 90 данного населения форума - тоже (IMHO, я так предпологаю) столь высокие частоты не больно нужны. Но мне понятна и озабоченность LazyCat. Может в будущем попробую и по LazyCat настаиваемому варианту собирать .
Да я потом подумал: ну а уж очень кто будет рассматривать столь высокие частоты, на коие тянет верхний предел девайса.
Не такие они и сверхвысокие , смотрите, чтобы норм. рассмотреть сигнал нам нужно хотя бы 20-25т. на период исследуемого сигнала, то есть при 100Мвыборок/сек. это всего 4-5Мгц.
Данного ОУ нам вполне хватит, кстати говоря очень неплохой ОУ , жаль только нет вх. SHDN.
Так разговор ведь идет не об ОУ, а об осциллографе. Если можно без существенных затрат сделать аналоговый тракт с приличной полосой, то зачем умышленно ее обрезать и при этом еще оправдываться ? И это ведь только один из всех недостатков предложенной схемы.
Quote (LeftRadio)
чтобы норм. рассмотреть сигнал нам нужно хотя бы 20-25т. на период исследуемого сигнала
Опять Вы про линейную интерполяцию ? А про sin(x)/x забыли ? А ведь она есть уже даже в самых примитивных осциллах !
Quote (LeftRadio)
AD603 заменить будет проблематично
Значит я опять неправильно понял основные критерии при разработке данного проекта
Сообщение отредактировал LazyCat - Среда, 22.12.2010, 20:36
Если можно без существенных затрат сделать аналоговый тракт с приличной полосой, то зачем умышленно ее обрезать и при этом еще оправдываться ?
Я и не оправдываюсь, Вы не правильно поняли .
Поразмышляв и правда склоняюсь к вашему решению(почти ), но думаю вместо 603-го уж лучше AD8330, да и несколько дешевле...
Quote (LazyCat)
А про sin(x)/x забыли ?
Нет не забыли , но осциллограф нужен не только для наблюдения почти идеального синуса, а как раз наоборот.. Хотя я и не отрицаю полезности данной функции. ---
но думаю вместо 603-го уж лучше AD8330, да и несколько дешевле...
Это я не понял. AD8330 стоит на дижикее $9.22 да и жрет 20mA, к тому же ей в пару надо еще AD8132(стоит $3.85 и жрет 12mA). В сумме эта парочка проигрывает по всем показателям.
P.S. sin(x)/x - это из теоремы Котельникова-Найквиста и к идеальному синусу отношения не имеет.
Сообщение отредактировал LazyCat - Четверг, 23.12.2010, 10:36
На дижикее возможно, жрет не намного больше AD603...
Так дижикей я использую как удобный сравнительный справочник и доставать микросхемы лучше другим способом(дешевле будет) А схему включения AD8330 я представляю с трудом. Можно использовать недифференциальный вход(другой через кондер на массу) и при этом для подачи напряжения коррекции нуля использовать дополнительный ОУ или нестандартный резистивный сумматор на входе AD8330(но у нее низкое входное сопротивление). Но не пойму зачем такой огород ?
Quote (LeftRadio)
Не буду спорить, просто можете посмотреть что будет происходить с меандром при включении данной интерполяции.
Это я прекрасно знаю, у меня была курсовая работа по теореме Котельникова !!! Максимум, что может произойти, это феномен Гиббса - программно наведенные выбросы на резких перепадах. Но это только при наличии в сигнале частотных компонент выше частоты Найквиста(половина от частоты дискретизации). В любом случае визуально сигнал после sin(x)/x выглядит значительно лучше, чем при линейной интерполяции при малом числе точек.
Зачем другой вход на массу? На него можно и подать смещение, а вообще у AD8330 для смещения есть еще специальный вход. В принципе я не против AD603, только лично мне проще и дешевле было бы достать AD8330, я ее и предложил на замену только исходя из этих соображений.
Кстати наконец сделал пару фото ЖК, качество правда не очень...
Сразу после инициализации:
Просто заливка одним цветом:
Вывод шрифта 16х8:
Примитивы(точки, линии, прямоугольник):
Ну и напоследок небольшое видео :), правда на ЖК это смотрится лучше, видимо так из-за несовпадения кадров...
К сожалению у меня несколько плохие новости относительно 2.0 и ЖК, не успевает МК и все при двух вкл. каналах выдает на экран 2-3 кадра/сек...Можно конечно попробовать оптимизировать, но в ассемблере я профан :). Вот код считывания и вывода на экран:
это мне совсем не нравится, стираем старую, рисуем новую... А нельзя ли как-то использовать буфер самого диспа для восстановления экрана, а то мы получается 4 раза рисуем точку, когда 2 канала. И потом ты рисуешь, получается, прямо в цикле чтения фифо, тут надо подумать...
Сообщение отредактировал Муха - Четверг, 30.12.2010, 21:29
Так как сейчас идет период сильного потребления спирто-водной смеси, то я не готов сейчас обсуждать работу с ЖК, но в Новом Году, надеюсь, начнем именно с этого....
Сообщение отредактировал LazyCat - Четверг, 30.12.2010, 23:09
Мельком глянул код, возникли следующие мысли: LCD_DataPort_to_IN(); LCD_DataPort_to_OUT(); выполняем по два раза при прорисовке обоих каналов, предложение следующее - между IN и OUT читать оба канала FIFO сразу, а потом писать в дисплей, на пару операций будет меньше.
И еще Internal oscillator frequency adjust, default is 7.5MHz. В МЭЛТовской инициализации стоит Internal Oscillator Frequency 85% Попробуй поставить не Set_LCD_8B_REG(0x17,0xC1); а Set_LCD_8B_REG(0x17,0x91); И вообще поиграйся с осциллятором
Сообщение отредактировал Муха - Пятница, 31.12.2010, 07:14
Всех еще раз с уже таким близким Новым годом :beer:
Разобрался со скоростью обновления А началось все с того что меня до ужаса задрал Keil со своими глюками, особенно если в проекте несколько си файлов, то можно сразу вешаться В общем установил IAR 7.6 переписал синтаксис и началось... то стек переполняется при добавлении одного массива в XData размером 400 байт, то программа не добирается до main(), а вечно крутится в инициализации по непонятным мне причинам, в общем снес нафиг и совсем отчаялся... Отчаивался, отчаивался а дай думаю поставлю IAR 7.51 которым раньше пользовался... Ну тоже мне немного мозги пополоскал по поводу стека однако потом программа заработала без проблем, да как заработала! Сейчас на глаз при двух работающих каналах кадров 20 - 30 это точно!!! Правда есть и плохая новость сетка под осциллограммами стирается(естественно, ведь осциллограммы очищаются черным цветом), а каждый раз ее перерисовывать представляется крайне не экономно в плане ресурсов...
Хотя попробовал перерисовывать сетку, вполне норм. правда это при учете что нет еще синхронизации и всего остального.
Рисуется сетка точками совершено банальным способом, может у кого будут предложения по оптимизации...
Code
void Draw_grid(void) { ushort i, j;
graf_color = D_ORANGE;
for(i = 25; i < 399; i = i + 25) { for(j = 20; j < 224; j = j + 5)Draw_point(j, i); }
Привет ! Всех с Наступившим Пока голова полностью еще не восстановилась задам только один вопрос по схеме(хотя я ее и не собираюсь повторять). Почему разные пары резиков (R5,R46) (R26,R31) (R35,R39) ?
Переделал алгоритм, теперь сетка не затирается, плюс сделал синхр., пока только по каналу А, скорость обновления практичеески не пострадала, покрайней мере на глаз , правда пришлось обьявить еще два массива размером 500байт каждый. Может есть предложения?
Посмотрел на досуге алгоритм, совсем даже неплохо Но в записи for(counter=8; counter<91; counter++) наверное имелось ввиду <92 И я против массива reverse, но раз уж он есть, то лучше в нем хранить сразу reverse[]>>1
Но в записи for(counter=8; counter<91; counter++) наверное имелось ввиду <92
Да действительно, спасибо.
Quote (LazyCat)
И я против массива reverse, но раз уж он есть, то лучше в нем хранить сразу reverse[]>>1
Это самый быстрый способ переставить биты местами, а сдвиг не всегда нужен, например при отображении двух каналов сдвиг нужен так как 256 точек для каждого канала просто не влезут в экран . В одноканальном режиме можно и не сдвигать что бы получит макс. бит. ---
P.S. И еще напомню программерский трюк : if((a == 0) && (b == 0)) всегда выполняется медленнее, чем if(a || b), т.к. в случае логического И всегда нужно проверять ОБА условия !