Перейти к содержанию

    

Dikoy

Участник
  • Публикаций

    258
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Dikoy

  • Звание
    Местный

Информация

  • Город
    Богота, Колумбия
  1. Граждане, задаче была не МЕЖСЛОЙНОЕ сопротивление померить, а померить, как изменяется сопротивление дорожки на ОДНОМ слое, если в ней набить металлизированных отверстий. Отверстия сии могут уходить на силовой разъём, например, который обычно не подключён. В итоге отвод глухой, а дырки в проводнике уже есть. И вот как они изменят его сопротивление для протекающего далее тока? Или два слоя, две силовых шины, идентичные, соединены между собой виасами. Ток идёт параллельно в двух слоях - ок, но виасы снижают поперечное сечение шин, причём т.к. они металлизированные, их нельзя считать просто выборкой меди. Ток же в них "стекает" и "вытекает". И было интересно это влияние. Подвести однозначную теорию под эту задачу не получилось - посчитать то что угодно можно, а вот верность результата под сомнением. Тогда и было решено сделать эксперимент. Например, из него чётко видно, что лучше много мелких виасов, чем мало крупных (ну ок, это как раз легко считается) и что для снижения продольного сопротивления лучше отводящие виасы ставить в ряд, а не в шахматном порядке. Так и виасов больше, и потери в проводнике меньше. И да, толщина меди в виасах обычно 0,15 при любой толщине меди слоёв. Плюс покрытие, если есть.
  2. Положил тулсы в папку с сигвином (ну, чтоб не разделять), скорректировал path, вроде, скомпилилось
  3. То есть папку Tools надо отдельно положить по адресу без пробелов? А где этот новый адрес прописывается?
  4. Да, cygwin не прописался в path почему-то... Теперь оно ругается вообще непойми на что... Проект взят с SVN и без проблем собирается на других компьютерах с тем же конфигом, у меня вдруг ругается на мейкфайл... Вообще не могу понять природу проблемы.
  5. Граждане, что хочет эта тварь? Атоллик 9.0.1, стоит в w7x64. При попытке скомпилировать проект выдаёт такую ошибку. "failed to detect operating system. Stop." Поставил ещё cygwin на всякий случай - не помогло. Не понимаю, что ему нужно...
  6. Да это посчитать не сложно. Сопротивление припоя, в общем случае, известно. В моём тесте есть целая дорожка под маской и лужёная. Разница проводимости - слёзы. Расчитайте проводимость слоя припоя, далее можно прикинуть ваши полосы. Но получится совсем фигня ИМХО.
  7. Ну так берёте гербера, модифицируете по желанию, делаете плату, измеряете волновое, делаете сенсацию. Человечество спасибо скажет ;) Я проектирую сильноточные платы и мне важнее активное сопротивление и локальные нагревы. Могу отправить бесплатно плату по РФ, у меня их 8 штук. Не жалко. Если вдруг кому интересно по своему помучить.
  8. Есть дорожка/полигон, и оно пробито виасами с металлизацией. Не важно куда они идут, интересно, как они влияют на сопротивление дороги, ведь их нельзя рассматривать просто как выбитые участки меди. Вроде как ментор умеет считать сопротивление дороги с учётом виасов на ней. Более никто. Также не удалось найти теоретических расчётов, а попытки вывести зависимости самостоятельно дали расхождение мнений. В общем, может секрет Полишинеля раскрою и всё это давно известно науке, но провёл эксперимент. Результаты замера и суть проблемы тут http://forum.ixbt.com/topic.cgi?id=48:12222:107#107 Вывод - виасы вполне участвуют в проводимости, вносят свой немалый процент. Линейное расположение имеет меньшее сопротивление, чем шахматное. И т.д.
  9. У elecrow (https://www.elecrow.com/) часто заказывали платы, подкупал бесплатный цвет. Ну и качество, в последнее время, было нормальное (одно время НЕ зелёные платы приходили с браком, потом вылечилось). По цене тоже хорошо выходило, дешевле конкурентов при равном качестве. В общем, нормальные китайцы и опыт работы с ними был. Понадобилось сделать платы 4 сл. с толстой медью (3+ oz). И спаять. Пошукали по предложениям и только elecrow вызвался сделать плату с медью 3 oz. Это вызвало некоторые сомнения, ибо по технормам плата под такую толщину практически не подходила (прям в обрез проходила, все другие отказались). Но списали на то, что сделают больше плат и отбраковку тупо выкинут. Подобный опыт уже был, когда нужна была толстая плата и отверстия 0,4. Часть деталей надо было дослать из США и РФ, т.к. в китае они не доступны. В общем, вроде пацаны нормальные и что нам надо - делают. Ещё и на 200 баксов дешевле компаний в РФ с 2oz. Всё было согласовано и заказ оплачен 20 мая 2018. Тогда же две посылки выдвинулись в Китай. Итог - в июне нам сообщают, что плата по технормам идёт только на 2oz (фигасе новость!). Скидывают 20 баксов за неудобства (за 3oz мы доплатили 80 баксов). Посылки с деталями застревают на таможне (тут, скорее всего, вина не elecrow всё таки, но они ни словом не обмолвились о таких проблемах на импорт) на ДВА месяца! Только в конце июня проходит российская посылка и в середине июля - американская. Вообще, учтите этот прикол если будете досылать китайцам детали - на импорт китайская таможня работает ужасно. Далее, не запаивают один чип, т.к. "боятся, что не получится". Чип, кстати, в SO-8. Что там могло не получиться, толком не разъяснили. Не установили при сборке несколько разъёмов, тупо забыли. Разъёмы объёмные и паяются только в печи, с полным нагревом. Запаять их паяльником не выйдет - нужен паяльник с топор. Второй раз пихать плату в печь было уже нельзя - стояли электролиты и т.п. Естественно, когда они поняли что накосячили, стали убеждать, что дырки в плате меньшего диаметра и разъём в них не лезет. Мы повелись (футпринт брался с сайта производителя без нашей проверки), однако, получив платы, смогли вставить разъёмы, хоть и туго. Как результат, платы, с горем пополам и не полностью, спаяли к середине августа. Можно было бы соскочить, но срок возврата пайпалом 48 дней и на тот момент уже истёк, + у них были наши детали, не столь дорогие, сколько редкие, и без которых мы не могли бы сделать сборку в другом месте. Поэтому пришлось ждать до конца. Но на этом горести не закончились. На собранных прототипах 2 чипа ОУ (одной модели) оказались мёртвыми - пустышки. Светодиоды были впаяны наоборот. На всех 5-и платах. То есть, помимо допайки не установленных компонентов, мы ещё и делали ремонт. По компенсации elecrow пока отмораживается - проверяют чипы и вот это всё. В общем, платы у них можно заказывать, но сборку - категорически нет. ПС. Не надо писать про кроилово. Основная причина выбора была в толщине меди. Сейчас понимаю, что проще было бы заказать у них платы 3oz, а сборку сделать на месте, но масштабы предстоящего гемора я тогда ещё не представлял.
  10. Цитата(zombi @ Apr 4 2018, 21:43) Да это то понятно. Вы наверное относитесь к людям которые не ищут простых и/или лёгких путей. Но я немного о другом спрашивал. Прерывание таймера может произойти во время выполнения команды длительностью 1,2 или 3 такта. Это где-то учитывается? Здесь скорее "кроилово привело к попадалову" - желание сэкономить время и использовать готовый проект как базу привело к бОльшим трудозатратам, чем сделать то же на СТМ. Но не суть. Работает. То, что мне нужно - делает. Прибор одноразовый, для одного конкретного стенда и то для отладки. Поэтому допустимо немного припустить планку. Так-то железка годная, только писали её неправильно. Там ещё выжать можно и скорости, и ресурса. Нигде это не учитывается. Но предыдущий оратор прав - колебания начала отрисовки на пару тактов ни на что не влияют. Картинка довольно чёткая. Даже на ЭЛТ мониторе выпуска 2001 года. На ЖК ЛОСе, современном, вообще очень чёткая картинка. Видимо, монитор хорошо подстраивается.
  11. Цитата(zombi @ Apr 4 2018, 20:19) где и как происходит выравнивание фронта синхросигнала в зависимости от времени выполнения прерываемой команды? Оооо! Там такая содомия в коде творится! В мейнлупе то же самое происходит - вывод строки сделан в цикле и не дай кришна убрать один ноп! Если б я знал заранее что будет такая жесть, не начинал бы это дело. Написал бы своё на СТМ или использовал ЖК панель. Но попробовал скомпилированный код автора, работает, ок, думаю, допишу вывод своих данных, это не сложно... **** Кстати о содомии. То же самое там происходит и с портом В. Но там всё проще. Меняем ногодрыг на sbi/cbi: Код#define video_off    cbi(DDRB,5)  // DDRB=0x90 #define video_on     sbi(DDRB,5)  // DDRB=0xB0 Убираем по одному нопу после video_on; и до video_off;, т.к. команды sbi/cbi выполняются по 2 такта, а присвоение, преобразуемое в LDI - только 1 такт. Код//Cycle for render line                 i = vga_symbols_per_row;                 while(i--)                 {                     SPDR = pgm_read_byte_near(_ptr1 + (* _ptr++)*vga_symbol_height/2);                     video_on;                     NOP;                 }                 //Delay for draw last symbol                 NOP;                 NOP;                 NOP;                 NOP;                 NOP;                 video_off;
  12. В общем, победил. Код сравнения выполнялся 3+3+2+1+3+3+2+1+1+2+1+1 = 23 (24, 25) циклов. Код//Make Vsync length 2 VGA lines             if ((linecount == 10 )||(linecount == 11 )) {                 //Make here vertical syncronization & HSYNC syncro level on                 PORTD = 0; //vsync_on             } else     {                 //.. & HSYNC syncro level on                 PORTD = 4;// vsync_off             } Переписал его так и уложился в тот же тактаж: Кодhsync_on;     // cbi(PORTD,3) if (linecount == 10 ) cbi(PORTD,2); //PORTD = 0; if (linecount == 12 ) sbi(PORTD,2); //PORTD = 4; Этого хватило. Работает, порты отпустило. Сейчас тело прерывания выглядит вот так. Вдруг кто ещё будет это чудовище повторять. CODE //All VGA sincronize made here.. SIGNAL(SIG_OVERFLOW0) { TCNT0 = TIMER_LIMIT; //reload counter value //******Syncronization Handler******** video_enable_flg = true; //Count number of lines if (++linecount == vga_field_line_count) { // == 525 linecount = 0; //clear pointers for render display buffer raw_render = 0; y_line_render = 0; } hsync_on; // cbi(PORTD,3) if (linecount == 10 ) cbi(PORTD,2); //PORTD = 0; if (linecount == 12 ) sbi(PORTD,2); //PORTD = 4; if (linecount < 45) { //Add to avoid flickering at top display NOP; // 15 nops NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; NOP; video_enable_flg = false; } else { //video_enable_flg = true; //Forming current string for rendering if (++y_line_render == vga_symbol_height) { raw_render++; y_line_render = 0; } else { NOP; // 8 nops NOP; NOP; NOP; NOP; NOP; NOP; NOP; } // } hsync_off; //HSYNC syncro level off sbi(PORTD,3) //******Syncronization Handler******** } В принципе, остаюсь при мнении что перенос синхронизации за if (linecount < 45) позволит ещё сократить время выполнения прерывания, как минимум на 15 тактов, но это потребует подбора нопов в противовесе (после else) а мне лень. Проект и так из "давай быстро прилепим вывод на монитор к стенду" перерос в 2 дня отладки... Но если у кого будет желание - уверен так можно.
  13. Цитата(zombi @ Apr 4 2018, 17:15) формирование синхросигналов VGA на СИ - это жесть Жесть, это на ардуине https://forum.arduino.cc/index.php?topic=102181.0
  14. А есть для авр ассемблера что-то для быстрого подсчёта тактов? Например, от сих и до сих. А то на бумажке считать несколько уныло...
  15. Возможно... Только как это сделать в WINAVR? Запретить сохранять регистр? Ещё мысль: if (linecount < 45) с его нопами можно использовать для Кодif ((linecount == 10 )||(linecount == 11 )) { //Make here vertical syncronization & HSYNC syncro level on PORTD = 0; //vsync_on } else { //.. & HSYNC syncro level on PORTD = 4;// vsync_off Ибо 10 и 11 меньше 45, тогда как минимум 15 нопов экономится. И не будет ли быстрее записать этот код как Кодif (linecount == 10 ) PORTD = 0; //vsync_on if (linecount == 12 ) PORTD = 4;// vsync_off