rmatveev

Members
  • Публикации

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

  • Посещение

Репутация

1 Обычный

О rmatveev

  • Звание
    Осваивающийся

Информация

  • Город
    Москва

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    источники питания
  1. Какой-то странный код генерирует Atmel Studio 7

    Освежу тему: я тут попробовал поисследовать то, как описаны регистры в стандартных хедерах, которые были в стандартной инсталляции Atmel Studio (iom48pa): PORTD++; 67a: 8b b1 in r24, 0x0b ; 11 67c: 8f 5f subi r24, 0xFF ; 255 67e: 8b b9 out 0x0b, r24 ; 11 ADCSRA++; 680: f8 01 movw r30, r16 682: 80 81 ld r24, Z 684: 8f 5f subi r24, 0xFF ; 255 686: 80 83 st Z, r24 _SFR_IO8(0x7A)++; 688: f7 01 movw r30, r14 68a: 80 81 ld r24, Z 68c: 8f 5f subi r24, 0xFF ; 255 68e: 80 83 st Z, r24 _SFR_MEM8(0x7A)++; 690: f8 01 movw r30, r16 692: 80 81 ld r24, Z 694: 8f 5f subi r24, 0xFF ; 255 696: 80 83 st Z, r24 Как можно видеть - с PORTD (в хедере определяется как _SFR_IO8) компилятор работает правильно. А вот с ADCSRA (в хедере _SFR_MEM8) - нет: используются инструкции LD и ST вместо IN и OUT. Причем, даже если я прямо в коде укажу регистр через _SFR_IO8 (как и PORTD), то это не помогает. Вероятно, это связано с тем, что PORTD находится в нижней памяти, а ADCSRA - в верхней, насколько я помню - там есть различия в доступе, в частности, к нижним SFR регистрам есть побитный доступ. Нет ли у вас идей что я делаю не так? Либо может быть некорректно работает компилятор и что с этим делать? Либо регистры описаны неверно и как их тогда описать правильно?
  2. Пытаюсь скомпелировать несложный код с опросом бита ADIF (бит запроса прерывания от АЦП) в регистре ADCSRA и вот что получается в коде: if((ADCSRA & (1<<ADIF)) != 0){ 628: 0a e7 ldi r16, 0x7A ; 122 62a: 10 e0 ldi r17, 0x00 ; 0 ADCSRA |= 1<<ADIF; if((ADMUX&0b00001111) == ADCH_OUT){ 62c: 0f 2e mov r0, r31 62e: fc e7 ldi r31, 0x7C ; 124 630: ef 2e mov r14, r31 632: f1 2c mov r15, r1 634: f0 2d mov r31, r0 temp1 = ((ADCH<<8) + ADCL)*100/205; Как видно, никаким ветвлением и не пахнет Пробовал разные варианты оптимизации - никаких принципиальных изменений (кроме O0, но там код вылезает из памяти). Соответственно, код не работает. Что я сделал не так?
  3. Друзья, привет! У меня возникло стойкое желание разместить платы в панель, на которой развести еще дополнительные цепи для тестирования, т.е. платы будут соединяться с панелью через мостики, через которые я планирую провести и эти тестовые дорожки. Однако, есть проблемы и сомнения: 1) Когда я буду выламывать платы из панели - что случиться с дорожками? Они не превратятся в бахрому? 2) Альтиум как-то слабо поддерживает мой колхоз. Во-первых после того как платы помещаются на панель командой Place -> Embedded Board Array/Panelize я перестаю видеть дорожки и мне приходится разводить панель в слепую. ( А вот так это выглядит в 3D режиме: Вообще, на сайте Альтиума написаны такие замечательные слова: but it is not advisable to place any other objects that would represent the actual physical design (Не рекомандуется размещать на панели любые физические элементы, взято отсюда: http://www.altium.com/documentation/17.0/display/ADES/PCB_Obj-EmbeddedBoardArray((Embedded+Board+Array))_AD ) Т.е. получается, я вообще пытаюсь использовать Альтиум для того, для чего он не совсем предназначен. Из этого вытекают другие неприятности: похоже мне придется разводку делать без названий цепей и DRC (проверка правил разработки), соответственно, если я где-то случайно соединю не ту цепь или не что-то не разведу, это останется незамеченным. А плат на панели я собирался разместить порядка 15-20, такая задача выглядит довольно сложной.... Вопросы: 1) Что скажете по поводу дорожек после выламывания? 2) Посоветуйте что-то с Альтиумом: 2.1) Как отобразить дорожки на 2D View? 2.2) Можно ли сделать схему для панели? Всем спасибо! Желаю хорошего дня
  4. Ну я пока использую ту самую "версию" с поднятой крышкой. Но спасибо за идею! Я попробую.
  5. Друзья, осваиваю новую для себя технологию - импорт 3D корпуса и формирования контура платы из STEP-модели. Скачал с официального сайта STEP-модель корпуса (Phoenix Contact), разместил ее на рабочем поле PCB редактора, сформировал из чертежа платы, собственно, контур платы. Разместил на рабочем поле компоненты (они автоматом все разместились вне корпуса. И тут я заметил, что стоит перенести любой компонент на плату, как он "зажигается" зелененьким: Хотя, на 3D View все выглядит хорошо: Еще обратил внимание, что по-началу компоненты как бы утопали в плату. Решил проблему изменением толщины платы в Design -> Layer Stack Manager и увеличил толщину диэлектрика с чего-то вроде 0,38 (не помню уже сейчас точно) до 0,691 (!!!). Число подобрал итеративно, что бы число, которое отображается на втором скришноте как 0,009 стало нулем. Но проблему это не решило. В чем может быть проблема? PS. Похоже, разобрался: видимо, чертеж корпуса сделан практически без пространства внутри, так что на плату и, тем более, на монтаж компонентов там нет места: Буду разбираться с корпусом PS2. Вообще странно - корпус как будто нарисован правильно и внутри действительно есть пустота:
  6. Т.е. правильный путь - это будет все-таки использование того 1300 стр. документа? А я правильно понимаю, что для STM32 по сути можно писать на трех уровнях: 1) обращаясь непосредственно к регистрам (это как раз то, что я всегда делал для AVR) 2) используя HAL 3) видимо, еще есть RTOS, но я думаю что у меня пока задачи не того уровня.
  7. Друзья, делаю свои первые шаги на пути освоения STM32. Приобрел STM32F0DISCOVERY, скачал STM32CubeMX и бесплатную версию IAR (на 32К кода). Дискавери я подключил к компу, скачал с сайта ST примеры (в их числе и ту мигалку, которая была в дискавери после покупки). Все шьется, все работает. Однако, когда дело доходит до того что бы писать что-то самому, я что-то уперся в непонимание. Начну с того, что я даже не знаю как управлять состоянием ножки. Или как, например, вызвать процедуру задержки. Понятно, что все это я могу найти в примерах и повторить по аналогии. Но что-то мне кажется что это не путь Джедая и хорошо бы иметь некий справочник. Пока все что я нашел - это Description of STM32F0xx HAL and Low-layer drivers - довольно объемный (1300 стр) документ, как раз, казалось бы, то что мне нужно - справочник по HAL. Но хотелось бы что-то типа справочника как это есть для того же PHP (если кто знает) - например, хочу вычислять CRC16 - просто набираю в поисковике "php crc16" и вуаля: куча стандартных функций или ссылок на сторонние решения на гитхабе (как пример). У того же PHP есть замечательный сайт с замечательным поиском. Пока ничего подобного для IAR для ARM я не нашел. В общем, я был бы очень благодарен за полезные ссылки по сабжу!
  8. Да я в курсе как это обычно делается на производстве :)))) На платы сигнал приходит по дорожкам. Я, наверно, не понял ваш вопрос.
  9. Хм... не совсем понял что вам не понятно: на панели несколько плат, на каждую по одному МК. Разъемы ВСП на платы не ставятся, а ставится ОДИН на той же панели но вне массива "товарных" плат. Просто этот разъем разводится к каждой плате и все. Вы на самом деле не берите в голову. Считайте у меня задача одним разъемом ВСП зашить сразу несколько МК. Да я, вроде, много раз читал. В чем там проблема все-таки? Так МК, вроде, SLAVE по отношению к программатору (который, в свою очередь, MASTER). И клоки идут всегда из программатора. Нет? Опять я что-то упустил?
  10. Зачем: для повышения эффективности. Один раз воткнул разъем один раз нажал на кнопку и несколько плат сразу зашито. В чем изнасилование я сейчас как раз и разбираюсь, если бы знал наверняка не задавал бы вам свои глупые вопросы Про бабу Варвару не понял. Это, типа, шутка?
  11. Так почему будет коллизия-то? Ответы-то должны быть одинаковые.
  12. Задумка такая: разместить на панели несколько плат с МК и один разъем внутрисхемного программирования. Я понимаю, что соединять выходы - это плохая идея, но если все исправно (а опыт показывает, что брак очень редкое явление, почти 100% всех плат шьется сразу и без проблем), то никаких "сквозных" токов не будет. Да даже если будет, там максимум что-то около 40 мА - ничего не сгорит. Есть ли еще какие-то факторы, о которых я не подумал? В идеале хотелось бы шить сразу 20-30 плат. Что думаете по этому поводу? PS. Я знаю о том, что контроллеры можно заказать уже прошитые, этот вариант тоже рассматривается. Но сейчас интересно именно тот вариант, который я описал.
  13. Для начала опишу проблему, которую хотелось бы решить с помощью скриптинга: при создании схемы я для каждого компонента создаю пользовательское поле 'full_name', по которому его можно однозначно идентифицировать у поставщика. Кроме того я сейчас добавляю поля 'link' и 'unit_price_1000' (думаю, смысл полей понятен). Также я настроил вывод БОМа в шаблон, который сразу автоматом считает стоимость компонентов для всего изделия. Удобно, однако, есть две проблемы: 1) Это требует довольно много ручной работы на этапе создания схемы: для каждого компонента (вида компонента) нужно найти на сайте поставщика, вручную скопипастить цену, ссылку 2) Цены могут перестать быть актуальными и их актуализация занимает много времени и ручной работы 3) Высока вероятность ошибки По идее скрипт мог бы заполнять цены и ссылки автоматом. Я бы хотел написать такой скрипт, который бы для всех компонентов в схеме слазил на сайт поставщика (диджикей, компел...), нашел его по полю full_name, взял оттуда цену (а еще желательно с учетом количества). Т.е. запускаю скрипт и иду пить кофе, пока все данные о ценах спокойно актуализируются. Альтиум поддерживает несколько скриптовых языков, один из которых я даже знаю: JavaScript. Однако, во-первых JS там оказался довольно странный (например, вывод окошка с сообщением и кнопки ОК там производится функцией showmessage, а не alert), а во вторых в интернете очень мало информации: не нашел исчерпывающего описания функций, API, примеров... Не посоветуете ли хорошее чтиво на тему скриптинга?
  14. А нюансов с бухучетом нет? Ну там первичка нормальная и все такое?...
  15. Друзья! Обычно, Компел выручает (есть ну почти все и часто на их складе). Но иногда чего-то не хватает. Вот сейчас не могу сыскать NCP785. Поставка под заказ, долгие недели и минимум 2500 штук. А на Диджекее - есть! (http://www.digikey.com/product-search/en/integrated-circuits-ics/pmic-voltage-regulators-linear/2556290?k=ncp785&k=&pkeyword=ncp785&pv48=22&FV=fff40027%2Cfff80182&mnonly=0&newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=500) Но я никогда там не покупал (и наши закупцы) тоже. Был ли у кого опыт? Как у них обстоят дела с доставкой в Россию? Много ли надо добавлять их к сроку поставки? Как с таможней? Есть ли еще какие подводные камни? PS. Изначально задавал вопрос в Песочнице. На всякий случай даю туда ссылку.