Jump to content

    

=Zap=

Участник
  • Content Count

    29
  • Joined

  • Last visited

Community Reputation

0 Обычный

About =Zap=

  • Rank
    Участник
  1. Спасибо за ссылку. Только сами паять всё равно не будем - нет квалифицированного монтажника. А сторонние пайщики даже со своей печкой не берутся. Они говорят что для пайки с шагом 0.4 мм: 1) Нужен трафарет для нанесения пасты. 2) Нужна паста с размером частиц около 20 мкм, которой у них нет. Самостоятельно я этого параметра у паяльных паст не нашел. 3) Нужно не горячее лужение (HASL), а иммерсионное покрытие золотом (ENIG) или серебром (IAg). 4) Даже после этого всего, никаких гарантий без рентген анализа. Всё правда?
  2. Я начинаю осваивать транзисторы на основе нитрида галлия (GaN), которые пару лет назад сильно подешевели. Дешевые транзисторы выпускает пока только компания EPC. Корпус у них сильно нетрадиционный и первая же проблема, с которой я столкнулся, это как их впаять. Если кто работал уже с такими транзисторами, то прошу совета. Своим опытом готов делиться здесь если будут вопросы.
  3. Мне шашечки, за которые я плачу деньги и на которых я езжу как я умею. Если у вас весь персонал на аутсорсинге, то я аплодирую стоя. У меня частичный аутсорсинг, поэтому сейчас мне нужен человек, который доступен на рабочем месте. Работа по удалёнке до 50% рабочего времени также возможна. От человека зависит.
  4. Откуда такая логика? Просто не у всех членов коллектива 10-летний опыт. У части опыт 2 года и возраст 20 лет. Контроллеры глючные, этого не скрываю. Но часть глюков мы обошли, а часть нас не затронули. В остальном все работает, а мы постепенно планируем переход на Cortex-M4F. Там TI учли свои прошлые ошибки, но неясно сколько наплодили новых. У нас появился новый человек для части работы, так что эта вакансия закрыта. Теперь нужен более опытный специалист. Другие обязанности, другой уровень, другая зарплата: --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ЦИФ МГУ приглашает на работу программиста-электронщика для программирования, разработки и поддержки устройств на базе микроконтроллеров. Предпочтительно аспирант технического ВУЗа, который разбирается в программировании микроконтроллеров, электронике, хочет узнавать новое, совершенствоваться, работать в реальных проектах. Обязанности Разработка прошивки на языке Си для ARM микроконтроллеров TI Stellaris (Cortex-M3, Cortex-M4F) в команде через систему контроля версий. Тестирование программных функций, отладка. Тестирование электронных узлов с использованием осциллографа, мультиметра. Поиск и устранение неисправностей. Разработка электронных схем, трассировка. Условия работы 2-3 рабочих дня в неделю по договорённости. Гибкий график. Небольшой, но квалифицированный и внимательный рабочий коллектив. Средний возраст сотрудников - 25 лет. 10-ти летний опыт разработки устройств на микроконтроллерах, у нас можно очень многому научиться! 10-часовой рабочий день (11:00-21:00). Оплата почасовая от 250 рублей/час, далее возможен рост по результатам работы. Организация работы проходит через систему управления проектами Redmine. Работа на территории МГУ на Воробьёвых горах. Требования к кандидату Умение программировать микроконтроллеры на языке Си. Знание электроники на достаточном уровне: чтение схем, даташитов, самостоятельный поиск неисправностей. Умение читать техническую документацию на английском языке. Умение паять на среднем уровне. Умение работать по письменно поставленному заданию. Ответственность и аккуратность. Приветствуется Опыт программирования микроконтроллеров семейства TI Stellaris. Опыт работы в системе Redmine. Опыт работы с системами контроля версий, в частности Mercurial. Опыт разработки или работы с силовыми электронными схемами. Опыт проектирования плат в программе PCAD. Опыт работы программистом микроконтроллеров, инженером-электронщиком. Вакансия гибкая, так как коллектив небольшой и легко адаптирующийся. Более высокая квалификация означает более высокую зарплату. Смещения акцента от программиста к электронике или наоборот возможна. Частичное удовлетворение требованиям обсуждаемо. Связь по почте zapunidi@physics.msu.ru или сюда.
  5. Проверил свою гипотезу про прыжок изнутри прерывания. Она-то подтвердилась, но после прыжка извне прерываний таблицу векторов стартовый код IAR из флэша уже не копирует в оперативку. Видимо он видит, что таблица уже в оперативке... Так как обработчики я ставлю динамически, то всё заработало. Я делаю почти так же: сигнатура в памяти, перезагрузка и проверка и затирание сигнатуры. Еще проверяю CRC прошивки перед тем как на неё перейти, а то мало ли что. low_level_init() происходит до копирования таблицы векторов прерываний в RAM. Это значит, что стартовый код основной прошивки скопирует таблицу сам, взяв её из стартового сектора. Не достанется ли ему в таком случае таблица от бутлоадера? У меня Texas Instruments контроллер семейства Stellaris LM3S5Rхх. Довольно глючная штука.
  6. Спасибо за рекомендации. Перезагружал таким способом так как по-быстрому это когда-то работало и с тех пор не трогал. А потом вдруг сломалось и было непонятно почему. Тем не менее, разгадку я, видимо, нашёл. Поделюсь опытом: в перезагрузку я ухожу из прерывания SysTick (использовал его для счёта задержки времени перед перезагрузкой), таким образом NVIC не чувствует возврата из SysTick и новые прерывания больше не вызывает. Вызывает только более высокоприоритетные. С SP (stack pointer) проблем нет: его нормально переинициализирует стартовый код IAR. Кроме перезагрузки мы используем переход из бутлоадера в основную прошивку, что NVIC_SystemReset() или SYSRESETREQ уже не помогает сделать. Там были те же проблемы и придётся использовать прыжок на адрес. Теперь понятно, что его надо сделать не из прерывания. Watchdog timer хорошая мысль. Как раз подойдёт для отсчёта той задержки, которая нужна перед перезагрузкой.
  7. Выполняю перезагрузку с помощью прыжка по адресу ResetISR, хранящемуся во флэше 0x4: ((void (*)(void))HWREG(0x00000004))(); Всё перезагружается нормально, проходит __iar_program_start, main, вообще всё работает кроме прерываний SysTick. При этом SysTick работает, считает его счётчик, он ставит бит пендинг прерывания, если бит снять, то SysTick его опять ставит. Другие прерывания происходят. Да и вообще ошибки в коде инициализации нет, так как при аппаратном ресете всё работает. А при софтварном ресете вот такое чудо. Такое ощущение, что я чего-то не знаю про инициализацию Cortex-M3 ядра. Есть советы куда копать?
  8. ЦИФ МГУ приглашает на работу программиста-электронщика для разработки и поддержки устройств на базе микроконтроллеров. Предпочтительно аспирант технического ВУЗа, который разбирается в программировании микроконтроллеров, электронике, хочет узнавать новое, совершенствоваться, работать в реальных проектах. Обязанности Разработка прошивок на языке Си для ARM микроконтроллеров Stellaris (Cortex-M3). Тестирование прошивок, поиск и исправление ошибок в алгоритмах. Тестирование электронных узлов с использованием осциллографа, мультиметра. Ремонт электронных схем средней и низкой степени сложности. Подбор и заказ электронных компонентов. Условия работы 2-3 рабочих дня в неделю по договорённости. Гибкий график. Небольшой, но исключительно квалифицированный и внимательный рабочий коллектив. Средний возраст сотрудников - 25 лет. 10-ти летний опыт разработки устройств на микроконтроллерах, у нас можно очень многому научиться! 10-часовой рабочий день (11:00-21:00). Оплата почасовая 200 рублей/час, далее возможен рост по результатам работы. Работа на территории МГУ на Воробьёвых горах. Требования к кандидату Умение программировать на языке Си. Знание электроники на базовом-среднем уровне, умение читать схемы. Умение читать техническую документацию на английском языке. Умение паять на среднем уровне. Умение работать по письменно поставленному заданию. Ответственность и аккуратность. Приветствуется Опыт программирования микроконтроллеров, особенно семейства TI Stellaris. Опыт работы в системе Redmine. Опыт работы с системами контроля версий, в частности Mercurial. Опыт разработки или работы с силовыми электронными схемами. Заинтересовавшиеся, пишите на zapunidi@physics.msu.ru
  9. Интересует можно ли где-то в России (в Москве) купить ультрафиолетовые светодиоды большой мощности с длиной волны меньше 370 нм. И есть ли сейчас рынок таких светодиодов или это спец приблуда для избранных?
  10. Есть светодиоды на 280 и 365 нм. Цена на 280 огромна. Цена на 365 терпима. Если спектр не важен - лишь бы УФ был, то лампа подойдёт лучше всего.
  11. Я тоже мучался с выравниванием в IAR и моей целью было создавать упакованные по байту структуры с выровненными на 4 байта адресами. Что-то типа такого: struct temp { struct first { INT8U a; INT32U b; INT8U aa; }; struct second { INT8U c; INT32U d; INT8U cc; } }; Нужно чтобы структуры first и second были упакованы без паддинга, но между ними паддинг был и адрес второй структуры был выровнен. Я пользовался #pragma pack(1), но обе структуры упаковывались вместе. Адрес структуры second не был выровнен. Модификатор __packed потребовал задания для структур явного имени, что приводило в изменению способа доступа к внутренним элементам. #pragma data_alignment применяется для экземпляров структуры, а не в её определении. В результате родилось следующая жуть: #define __aligned_packed_structure_start(name) \ union name##_wrap \ { \ _Pragma("pack(push)") \ _Pragma("pack(1)") \ INT32U name##_dummy; \ struct name { #define __aligned_packed_structure_end \ }; \ _Pragma("pack(pop)") \ }; struct temp { __aligned_packed_structure_start(first) INT8U a; INT32U b; INT8U aa; __aligned_packed_structure_end __aligned_packed_structure_start(second) INT8U c; INT32U d; INT8U cc; __aligned_packed_structure_end }; То есть каждую такую упаковываемую структуру му кладем в union оболочку с 4байтой переменной, и меняем туда-сюда упаковку. Обратите внимание, что для подстановки #pragma внутрь макроса используется _Pragma("") и на создание новых токенов посредством конкатенации ##. Может кому пригодится. Может кто посоветует что-то проще. Может IAR введёт такую вещь как __align__(num), которая бы ставила точку выравнивания в объявлении структуры.
  12. Я как раз колеблюсь между мнением swisst про идеалогическую неправильность и мнением Petka, про то, что вечный while тоже как бы зависание в самом низком приоритете. Как я понимаю из дискуссии, никаких принципиальных отличий или ограничений зависание в прерывании не накладывает. Если интересны детали, то я решаю проблему о пересылке команд управления из USB в несколько устройств по шине I2C и обратно. У I2C так организован протокол, что ведомое устройство не может само прислать ответ на команду. Поэтому удобно сразу после пересылки команды требовать ответа на неё. То есть проводить одну транзакцию вопрос-ответ не выходя из прерывания USB. С другой стороны, зависание USB в ожидании ответа по I2C может сломать USB соединение.
  13. Нормально ли писать прошивку для процессора Cortex-M3, где всё время выполняется прерывание с низким приоритетом, а остальные прерывания прерывают его, так как их приоритет выше? Контроллер NVIC в процессоре достаточно навороченный и вроде умеет прерывать одни прерывания более высокоприоритетными. С другой стороны даже надолго зависать в низкоприоритетном прерывании уже идеалогически неправильно, ИМХО. Какие могут возникнуть проблемы от такого подхода? Речь идёт о контроллерах TI серии Stellaris.
  14. Всем огромное спасибо! То, что есть в Терре, большевато, но подойдёт. Не знал, что такое уже есть в свободной розничной продаже. Про eink в USB флэшках я знаю. Там только четыре сегмента. Еще я нашёл eink во внешних жёстких дисках, но там не графический. Еще есть в часах. К сожалению запустить такое можно только обратным инженирингом :(
  15. Задача: удерживать картинку на дисплее при мощности источника питания около нескольких микроватт. Размер дисплея должен быть несколько сантиметров. Не больше. Eink позволяет удерживать картинку без питания. Memory-LCD дисплеи требуют около микроватта. Это, похоже, едиснтвенные подходящие технологии. Вопрос: где купить или откуда можно выдрать такие дисплеи?