-
Постов
1 241 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Сообщения, опубликованные VladislavS
-
-
Можно. Совершенно штатная ситуация. Правишь схему и делаешь Design\Update PCB Document.
-
-
Хм.. На схеме тоже предлагаете ставить VT1_body, VT1_pin1, VT1_pin2, VT1_pin3 (к примеру)?
Причем тут схема вообще? Мы же о топологии и конструкции говорим, а они вообще без схемы могут существовать.
А кто вам мешает всю эту дурь объединить в сборку и вставлять одной моделью?
Вообще, есть стандарт IDF, где черным по белому написаноПочитал стандарт. Экспортируется только 2D положение компонента на плате плюс верх/низ. Как потом привязываются 3D модели полностью дело программы, которая вставляет 3D-модели. Ну значит примем как давность.
То есть все, что относится к компоненту, ноги, габариты туши в библиотеке и т.п., Вы предлагаете пересчитывать из за того, что у Вас некий STEP в библиотеке, который Вы достали незвестно откуда и спозиционировали его так, чтобы "оно" как-то подошло?Вы так говорите, как будто все свои 3D модели сами сделали. Пусть кинет в меня камень тот кто не брал модели у производителя элементной базы или на SolidWorks-ской площадке 3DContentCentral. А там они ориентированы совершенно по разному. Никогда не поверю, что у вас во всех библиотеках все модели вставлены вот так
Наверное программисты тоже зря в программу эти параметры ввели?
-
Потому что в IDF экспортируются не модели, а компоненты. И не получится разделить, к примеру, конденсатор на тушку и 2 ножки.
Вы мыслите плоско. Кто мешает создать вместо одного компонента несколько по количеству 3D-моделей привязанных к нему?
PS: Вся плата в STEP - это жесть!Я уже устал повторять - не надо, проходите мимо!
-
---------------------------------
Вытащил в STEP только слои TOP и BOTTOM. Вроде всё видно. Заметил ещё, что на сквозных падах металлизация пропала - в разъёмах и крепёжные у меня металлизированные.
-
1. Подтверждаю. Впринципе там дорожка изначально кривая, если ее подправить импорт будет корректным. Но проблема есть, будем изучать ее причины.
А бывают платы без кривых дорожек? :) Платы делают люди, а не роботы. Подчистить действительно можно, на небольших платах
2. Проверить пока не удалось. В SW 2014 похоже CW работает немного криво, он не сохраняет плату в SW... Если есть возможность выслать мне сборку в формате SW 2014, то готов посмотреть что за слои.Завтра попробую что-нибудь придумать. Скорее всего, слои даже в STEP будет видно.
-
Экспортировал. По отдельности. Потом каждый добавил в PCB компонент.
А всю плату целиком в STEP? Наличие 3-4 моделей в компоненте вам же не мешает это сделать? Почему в MCAD что-то по другому должно быть?
-
Почему-то я думал, что такие анализы производятся в время конструирования ДО воплощения на плате.
Когда хочу тогда и моделирую. И до, и во время, и после. Если вам не надо, ну проходите мимо.
Каких моделей? У меня есть компонеты (составные), где по 3-4 STEP модели используются. О какой привязке речь?В STEP же вы их как-то экспортируете? Что тут меняется то? Только то что модели не внутри файла, а снаружи и их можно/нужно подменить.
Рисуйте компонеты сразу с началом осей координат в нужной точке. Или дорабатывайте существующие под свои библиотеки.Это называется
У меня, конечно, всегда было желание все модели иметь с "нулевыми свойствами установки", но никогда не было на это ни времени, ни большой потребности.
-
А оно вам надо? Зачем медь в MCAD?
Если вам не надо, то это не значит что другим не надо. В первом моём примере микрополосковый фильтр. Вот захочу я электродинамический анализ провести, допустим.
Хотите красиво - так натяните картинку на плату!Натягивайте что хотите, каким это боком к MCAD относится?
Так все верно. В IDF нет такого - отдельно компонент, отдельно модель...Вы правильно заметили, начало оси координат должно совпадать с точкой привязки компонента. Как в плане, так и по высоте! И никаих поворотов. Тогда проблем не будет.
То есть, вкладку привязки 3D-модели к футпринту можно зачеркнуть? Ну чтобы проблем вдруг не было.
AD никак не сможет учесть, куда и как сдвинута STEP модель в компоненте, хотя бы по причине того, что 3D Body может быть несколько.Да легко. Если нет реалистичной 3D-модели на компоненте, то ставим привязку по умолчанию. А если 3D-модель есть, то смещаем привязку с учётом её размещения на футпринте. В STEP же это не вызывает трудностей. Какая разница протащу я модели внутри файла (STEP) или отдельно (MCAD)? Ну и для "эстетов" можно сделать чекбокс при экспорте "Использовать информацию о привязке 3D-моделей".
-
Давайте разделим мой месседж на два вопроса.
1. Как медь экспортируется.
Взял первую попавшуюся плату. В архив положил pcb-ку и результат в SolidWorks.
Во-первых, проводник от VD5 пошёл не к переходному отверстию, а куда-то....
Во-вторых, что за слои меди внутри платы? И проводники не лежат на поверхности платы, а уходят внутрь до своего "серединного слоя".
2. Ориентация компонентов.
Я ещё поэкспериментирую. Похоже, на той плате в футпринтах и правда всё к первой ноге привязано.
Но вот почему 3D-модели "крутит" как угодно не понятно. В Altium и CircuitWorks использованы одни и те же 3D-модели. Если я её повернул при установки на футпринт в альтиуме, то почему информация о повороте не дошла до cолида?
Покрутил ещё модели. Пришёл к следующему умозаключению. CurcuitWorwks привязывает начало координат модели к точке привязки заданной в футпринте. Если в альтиуме при привязке модели к футпринту задаётся смещение/поворот, то оно будет потеряно при передаче. То есть, все 3D-модели должны быть сделаны так чтобы ставиться на футпринт "по нулям". Можно, но возьня дополнительная.
-
Вот и разберитесь, почему после привязки резисторы не развернулись на 90, а триммер и транзистор развернуты на 90 градусов. Привязку может и правильно сделали, только вот исходные модели были развёрнуты по разному или третье.
Допускаю, что покрутив привязки моделей по осям можно будет сделать правильное положение. А что со смещением делать? Смотрите как красиво легли проекции 3D-моделей на четвёртом рисунке и как всё в итоге получилось.
Убрали материал между слоями и вот вам два слоя меди. Причем с метализацией в отверстиях.Вы когда-нибудь печатную плату видели живьём?
И что, страшно уже вам только подумать как на многослойки смотреть с таким количеством собственных косяков?Нечего торопится и плодить косяки. Ах ну да, софт кривой и причём всегда.
Покажете мастер-класс?
-
А чего это триммер и транзистор развернуты на 90 градусов? Что у вас там с привязкой по осям то? Или как получится?
У меня что-то с привязкой по осям? Первая, третья и четвёртая картинки, конечно же, не показывают, что все модели установлены правильно?
Два слоя и ничего лишнего, а как вы хотели?Да вообще по разному хотел, но для примера взял самый простой случай и даже на нём косяки. Что будет на многослойках можете сами попробовать.
-
Поэкспериментировал с MCAD-IDX. Взял простую плату.
Два слоя и ничего лишнего
Для контроля делаем экспорт в STEP
Экспортируем в IDX и открываем в CircuitWorks. С виду всё чистенько, все детали на своих местах.
Привязываем те же 3D-модели деталей, которые были на плате. И получаем вот такое
Детали неправильно ориентированы и точка привязки совмещена с 1-ми контактами всех компонентов, хотя на плате они были к центру привязаны. При том что упрощённые модели были правильно установлены.
Посмотрим внимательней на медь.
Кхммм...
А это что за два слоя внутри платы?
А это с просторов интернета. Дорожки гуляют как хотят на всех платах. Пример выше был вычищен от подобного чтобы не отвлекать от других эффектов.
Вот как-то так.
-
Может дело в том, что не там меняете?
Дело в том, что механизма групповой замены этого параметра в редакторе PCB нет.
Для себя проблему решил так, может кому пригодится.
Procedure SetPcbLib; Var Board : IPCB_Board; Component : IPCB_Component; Iterator : IPCB_BoardIterator; Begin Board := PCBServer.GetCurrentPCBBoard; If Board = Nil Then Exit; Iterator := Board.BoardIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eComponentObject)); Iterator.AddFilter_LayerSet(AllLayers); Iterator.AddFilter_Method(eProcessAll); Component := Iterator.FirstPCBObject; While (Component <> Nil) Do Begin Component.SetState_SourceFootprintLibrary('RF(MotherBoard).PcbLib'); Component := Iterator.NextPCBObject; End; Board.BoardIterator_Destroy(Iterator); ShowMessage('Ok!'); End;
-
Да это и не к чему.
Не скажи. Если руками указать каждому элементу, что он из вновьсгенерированной библиотеки, то устанавливается связь и можно редактировать библиотеку и пользоваться Update from PCB Libraries.
А вот группой так не получается сделать.
Нашёл такой вариант. Редактирую футпринт в библиотеке и переименовываю его. На плате выбираю все элементы по старому имени и задаю им новое имя. Происходит обновление из библиотеки, но связь с библиотекой не устанавливается.
Не понятно, почему по одному можно связь с библиотекой установить, а группой через инспектор или лист нет.
-
Похожая проблема. Есть разведённая плата. Схемы и библиотек нет. Делаю Design/Make PCB Library и получаю .PcbLib. Как теперь всем компонентам на плате прописать Library на вновьсозданную? По одному получается, а всем разом?
-
или найдете еще какую либо ошибку
Вся схема одна большая ошибка. Начиная с питания и дальше по всем каскадам.
связь между шинным формирователем и компьютером должна осуществляться только одним проводом, тогда как у меня их 4, не пойму как это реализоватьЕсли эту схему нужно подключить в обычный компьютер, да ещё одним проводом, то наверняка в COM-порт. В описании микроконтроллера читайте про USART. А между микроконтроллером и компьютером поставьте микросхему MAX232.
Можно спросить где сейчас таких "инженеров" готовят?
-
При компиляции файла uart2.c USE_UART2 не определено и вы по сути компилируете пустой файл. В результате не получаете в объектном файле всего что надекларировали в хидере.
-
А на __reverse(uint32_t)ip) будет ругаться?
Да, ничего не меняется, так как ip и есть uint32_t
И как объявлен ip?Как параметр функции-члена класса
void SetIP(uint32_t ip) { w5100_control.SIPR = __reverse(ip); }
-
В intrinsics.h всё одинаково за исключением одной строки к __reverse() не имеющей никакого отношения. Да и вообще__reverse в хидерах не встречается нигде. Зато внутри iccavr.exe встречается. Так что, больше на глюк компилятора смахивает.
А ещё инлайнит за милую душу вот такую функцию в том месте где выдаёт ошибку на обычный __reverse().
inline uint32_t reverse(uint32_t data) { return __reverse(data); }
-
Что-то вы проблему на ровном месте придумали. Чтобы встроить функцию в месте вызова она должна быть определена в той же единице компиляции, где происходит вызов. Грубо говоря, в том же c-файле, либо в подключенном h-файле, что для компилятора по сути одно и то же.
-
Опубликовано · Изменено пользователем IgorKossak
[codebox] для длинного кода · ПожаловатьсяЗдравствуйте.
Переполз с компилятора EW AVR 5.51 на 6.11 и поймал непонятный глюк cо встроенной функцией __reverse().
В 5.51 компилировалось без ошибок. 6.11 ругается на w5100_control.SIPR = __reverse(ip); ошибкой Error[Pa108]: no variant of the generic intrinsic function "" available for the type "unsigned long" D:\!Projects\Reverse_test\6.11\main.cpp 19
При этом в функции reverse() та же функция с теми же типами данных проходит. И дальше по коду return __reverse(x); тоже нормально. И если вместо __reverse() в проблемном месте использовать reverse(), то тоже нормально.
#include <ioavr.h> #include <stdint.h> typedef struct { uint32_t SIPR; // Source IP Address } W5100_CONTROL; //#pragma location=0x8000 __no_init volatile W5100_CONTROL w5100_control; uint32_t reverse(uint32_t data) { return __reverse(data); //Вот так всё хорошо } class W5100 { public: void SetIP(uint32_t ip) { w5100_control.SIPR = __reverse(ip); //Тут проблема // w5100_control.SIPR = reverse(ip); //А вот тут уже всё нормально }; }; W5100 w5100; int main() { w5100.SetIP(0x01020304); uint32_t x=0xAAAAAAAA; return __reverse(x); //Вот так всё хорошо }
Хелп ми :)
Проекты для 5.51 и 6.11 соответственно в архиве прилагаю.
-
Это если надо чтобы линкер какие-нибудь сегменты, кучу например, размещал во внешней памяти. Задача автора читать/писать байт по абсолютному адресу. Для этого либо переменная размещается по абсолютному адресу и используется как переменная
#pragma location=0x8000 volatile __no_init unsigned char var;
Либо можно по указателю доступ делать
unsigned char *mem = 0x8000; *mem = *mem;
-
Вопросы начинающих 2015г
в Altium Designer, DXP, Protel
Опубликовано · Пожаловаться
Связь между схемой и платой не по десигнаторам осуществляется. Уже давно попробовали бы что-ли, чего зря бумагу марать?