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

    

esaulenka

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Профессионал
  • День рождения 25.01.1983

Информация

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

Посетители профиля

6 639 просмотров профиля
  1. Если делать не для себя, а на продажу, надо внимательно читать ГОСТ 28751 или ISO7637 (этот документ ищется быстрее). Если делать для себя, тоже неплохо бы ознакомиться. Варианты действий: - плюнуть, поставить термостат как есть. Хотя щеточный мотор в непосредственной близости - это совсем нехорошо... - поменять стабилизатор (тот самый AMS1117) на что-то, что нормально выдерживает хотя бы вольт 30 - предыдущий пункт + добавить супрессор Устройство целиком как-то защищать не надо - релюшка спокойно "съест" все помехи, ничего с ней не станется, надо только питание контроллеру нормальное сделать. Также, если я ничего не путаю, при текущей схеме подключения термостат будет запитан напрямую только если регулятор вентилятора стоит на первой скорости. На более быстрых скоростях термостат будет включен через резистор (и я понятия не имею, какой там номинал. Вероятно, небольшой). Скорее всего, китайский аналог http://www.vishay.com/docs/88456/smbg.pdf
  2. Глянул в заголовки ThreadX, которая лежит на официальном сайте (Воровать, как известно, нехорошо. Особенно если можно не воровать). Бесплатно (после регистрации) дают только заголовки, документацию и объектник. typedef struct TX_SEMAPHORE_STRUCT { /* Define the semaphore ID used for error checking. */ ULONG tx_semaphore_id; /* Define the semaphore's name. */ CHAR *tx_semaphore_name; /* Define the actual semaphore count. A zero means that no semaphore instance is available. */ ULONG tx_semaphore_count; Ну спасибо большое! Бесценные комментарии! Как без них догадаться, что в переменной semaphore_name будет находиться название семафора?! Ну и бесконечные портянки дефайнов-передефайнов, чтоб удобнее было в IDE к определению обращаться (для тех счастливчиков, кто купил исходники). /* Services without error checking. */ #define tx_kernel_enter _tx_initialize_kernel_enter #define tx_block_allocate _tx_block_allocate #define tx_block_pool_create _tx_block_pool_create #define tx_block_pool_delete _tx_block_pool_delete #define tx_block_pool_info_get _tx_block_pool_info_get #define tx_block_pool_performance_info_get _tx_block_pool_performance_info_get #define tx_block_pool_performance_system_info_get _tx_block_pool_performance_system_info_get #define tx_block_pool_prioritize _tx_block_pool_prioritize #define tx_block_release _tx_block_release Ну, в общем, к вопросу о том, "кто так сказал"... Доверия к восторженным крикам AlexanderY как не было, так и не появляется никак...
  3. Решил посмотреть, действительно ли тексас такие... странные вещи делает. http://www.ti.com/lit/ug/slvu497a/slvu497a.pdf Нет, не делает. И разводка в принципе другая, и керамика по входу есть...
  4. А почему не должен понимать? Они появились в стандарте языка ещё когда сам кейл пешком под стол... компиляторы только под 51-е процы делал.
  5. Не очень пристально вчитывался, но у Вас получилось выкинуть оттуда dynamic_cast ? пользу RTTI до сих пор не осознал, а флеша оно достаточно много хочет... Сама идея замечательная, Qt'шного connect'а очень не хватает.
  6. Сейчас Вам в ответ дефайн на три страницы нарисуют ;-)
  7. Похожую идею использует Nordic в своих библиотеках. Они используют это для раздачи событий в разные модули. В линкере объявлена секция. Каждый модуль, который подписывается на событие, с помощью спец-макроса кладёт в эту секцию указатель на коллбэк, который надо вызвать по этому событию. Модуль, который события раздаёт (он один), при каждом событии с помощью другой дефайн-магии бегает от начала до конца этой секции и вызывает коллбэки. Секций, на самом деле, несколько, каждая для своего типа событий (и, соответственно, своего модуля, который это раздаёт). Ну так вот. Я, конечно, недостаточно глубоко въехал в эту тему, но единственные цензурные слова по этому поводу - трэш, ад, ужас, содомия. Оно, конечно, очень гибко в плане конфигурирования (подключил модуль - и, оп, он автоматически на всё подписался), но IDE, которая как-то показывает эти зависимости, мне неизвестна. Шаг в сторону - и всё. Не работает. Как, почему, какие тут взаимосвязи... И это за меня всё сделали, мне ничего писать не надо (а это не одна сотня строк исходника), только модули подключить. В общем - нет, никогда и ни за что!
  8. Дурацкий вопрос. Смотрю каталог http://www.jason.co.id/misc/Koden/mds50r63r-.pdf Разговор идёт о линии связи антенна <> control box или control box <> компьютер ? Потому что в первом случае про UTP нигде не сказано, а во втором, мне кажется, не должно быть особых проблем открутить кабель.
  9. Смотреть, конечно же, в документацию. Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx".
  10. На блок схеме три канала Primary Flight Computer. Всегда Ваш, Капитан О.
  11. Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка. Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают...
  12. Ну, скажем, код __pv вполне может стоить человекожизни. Потому что искать случайную опечатку в этой красоте - убицца просто. Имхо - оставить всё как есть или медленно и печально переносить на std::vector или какой-нибудь самодельный vector2d.
  13. Кстати, на cppreference говорят, что static_assert есть и в c11 (не путать с c++11). Можно не изобретать свои велосипеды, а использовать стандартный, из assert.h
  14. Я потыкал Ваш код на godbolt.org - только gcc и умеет его компилировать. Все остальные ругаются на трюки с приведением типов.
  15. Ну так элементарно же. В боинге ломается один из каналов - некое магическое отказоустойчивое устройство переключает работу на резервный, полёт продолжается. В вашем изделии ломается один из контроллеров - шаговик встаёт (или ползёт в непредсказуемую сторону).