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

esaulenka

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    2

Весь контент esaulenka


  1. Сейчас Вам в ответ дефайн на три страницы нарисуют ;-)
  2. Похожую идею использует Nordic в своих библиотеках. Они используют это для раздачи событий в разные модули. В линкере объявлена секция. Каждый модуль, который подписывается на событие, с помощью спец-макроса кладёт в эту секцию указатель на коллбэк, который надо вызвать по этому событию. Модуль, который события раздаёт (он один), при каждом событии с помощью другой дефайн-магии бегает от начала до конца этой секции и вызывает коллбэки. Секций, на самом деле, несколько, каждая для своего типа событий (и, соответственно, своего модуля, который это раздаёт). Ну так вот. Я, конечно, недостаточно глубоко въехал в эту тему, но единственные цензурные слова по этому поводу - трэш, ад, ужас, содомия. Оно, конечно, очень гибко в плане конфигурирования (подключил модуль - и, оп, он автоматически на всё подписался), но IDE, которая как-то показывает эти зависимости, мне неизвестна. Шаг в сторону - и всё. Не работает. Как, почему, какие тут взаимосвязи... И это за меня всё сделали, мне ничего писать не надо (а это не одна сотня строк исходника), только модули подключить. В общем - нет, никогда и ни за что!
  3. Дурацкий вопрос. Смотрю каталог http://www.jason.co.id/misc/Koden/mds50r63r-.pdf Разговор идёт о линии связи антенна <> control box или control box <> компьютер ? Потому что в первом случае про UTP нигде не сказано, а во втором, мне кажется, не должно быть особых проблем открутить кабель.
  4. Смотреть, конечно же, в документацию. Начать можно с https://en.wikipedia.org/wiki/X86_calling_conventions Особое внимание обратить на то, что там нигде не написано "вы можете свободно портить ebx".
  5. На блок схеме три канала Primary Flight Computer. Всегда Ваш, Капитан О.
  6. Не давать советы в области, в которой не разбираешься - хорошая, правильная привычка. Этому файлу 8 лет скоро будет. Так что довольно условно поддерживают...
  7. Ну, скажем, код __pv вполне может стоить человекожизни. Потому что искать случайную опечатку в этой красоте - убицца просто. Имхо - оставить всё как есть или медленно и печально переносить на std::vector или какой-нибудь самодельный vector2d.
  8. Кстати, на cppreference говорят, что static_assert есть и в c11 (не путать с c++11). Можно не изобретать свои велосипеды, а использовать стандартный, из assert.h
  9. Я потыкал Ваш код на godbolt.org - только gcc и умеет его компилировать. Все остальные ругаются на трюки с приведением типов.
  10. Ну так элементарно же. В боинге ломается один из каналов - некое магическое отказоустойчивое устройство переключает работу на резервный, полёт продолжается. В вашем изделии ломается один из контроллеров - шаговик встаёт (или ползёт в непредсказуемую сторону).
  11. Ну значит сначала надо спроектировать систему. Потому что два контроллера, которые одновременно управляют двумя половинками одного двигателя, с куда бОльшей вероятностью обеспечат невозможность выполнить команду.
  12. Задача-то какая? Если это не самолёт, который не умеет зависать в воздухе, и в любой ошибочной ситуации вашему двигателю можно просто никуда не двигаться, надо именно так и поступить. Максимально тупое устройство (читай - с минимумом ошибок), которое в любой непонятной ситуации всё (или только силовую часть, неважно) обесточивает.
  13. Ну да. Но в схеме из третьего сообщения помеха греет резистор делителя и стабилитрон (в наших изделиях так же. У artemkad, видимо, тоже), а идея из второго сообщения, если я её правильно понял, всю помеху рассеивает на защитном стабилитроне.
  14. При включении, как посоветовал Plain, есть. Другой вопрос, что совершенно неочевидно, зачем вешать защиту прямо на входную ногу устройства, а не на ногу защищаемого элемента (читай - контроллера).
  15. Audi 80 изнутри ни разу не видел, но из общих соображений: - аккумулятор - аналоговый сигнал 10..14 вольт - уровень топлива - аналоговый сигнал 0..14 вольт - уровень омывайки - дискретный сигнал 0..12 вольт - датчик тепературы - что-то вроде переменного резистора. Запитывают его от генератора тока, или просто делают делитель - никогда не интересовался. - датчик оборотов - либо датчик холла с 5 (12) вольтовыми импульсами (десятки импульсов на оборот), либо индуктивный датчик (см. в гугле "ДПКВ осциллограмма") - лямбда зонд - синусоида с частотой единицы герц и амплитудой в несколько сотен милливольт - сигнал оборотов с катушки зажигания или форсунки. Пакостный сигнал с ярко выраженными "индуктивными" выбросами. Подробности на картинках "катушка зажигания осциллограмма". Опторазвязок никогда нигде не видел. Делитель, защита, может ещё небольшой RC-фильтр. Если есть хоть какой-то мозг, скорее всего, есть и диагностика, и, скорее всего, это однопроводной 12-вольтовый уарт. Какой стандарт был в те лохматые годы, не интересовался...
  16. C_DEBUGEN http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/CEGCJAHJ.html Но у меня руки не дошли проверить...
  17. У него синтаксис не очень удобный. Я и сам им пользовался, но разбираться через год-другой в скрипте довольно сложно... В итоге пользуюсь питоном с библиотекой intelhex - просто и наглядно.
  18. Точнее, в C99, если я ничего не путаю. И должно заработать в C++20. Жалко, что даже в gcc в порядке личной инициативы раньше не внедрили...
  19. Включить-выключить прерывания в USARTx->CRx можно прямо на ходу (сам так делаю постоянно). Поставить бит DMAT в USARTx->CR3, подозреваю, тоже можно (не проверял). Проинициализировать DMA можно один раз, дальше просто запускать в нужный момент. Но в SPL всего этого нету, разумеется. Но это руками можно и нужно сделать, получится меньше и понятнее, чем волшебные SPL-функции.
  20. Что именно Вам надо перенастроить? И слово "нельзя" - это про идеологию. Если там идеология "использовать можно только HAL", то, боюсь, никакой готовый код товарищу не поможет...
  21. Что именно мы должны увидеть на картинке? (и на какой из двух?)
  22. Ну я вот изучил. BOOT0 в нуле (так нам обещает Donker), main flash memory, как и должно быть. Настройки JLink'а тоже стандартно-обыкновенные. Мысль не раскроете? Для средних умов, таксказать. PS Donker, может, камень сдох? Не пробовали какой-нибудь другой экземпляр?
  23. Наверное, не все эти мегабайты - в ОЗУ? :-) RAM - начиная с нуля и до 64к, флеш и прочие SFR - могут быть дальше. По факту, у младших камней они также укладываются в 64 к, но ядро, в теории, умеет работать и с бОльшими объемами памяти.
  24. У меня прямо перед носом reference от STM32F4. И там слова "карусель" нет, есть раздел Arbiter. И там всё просто: у кого выше приоритет (или меньше номер стрима при равных приоритетах) - тот и первый. Другой вопрос, что я использую DMA с низкозагруженными каналами (UART на десятках-сотне кбит/с, SPI с сотней байт и т.д.), и о приоритетах даже не думаю - запас получается на порядки: пока DMA ждёт освобождения высокоприоритетной периферии, он может обслужить низкоприоритетную. Вот когда мне захочется затолкать что-то большое в периферию с собственным FIFO (что там у STM'ок есть? Только USB с ethernet'ом?) или использовать режим memory-to-memory, вот тогда придётся думать...
  25. Варнинг был? Был. Следует считать любой (ну, почти любой) варнинг как предупредительный выстрел.
×
×
  • Создать...