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

esaulenka

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. Дурацкий банальный вопрос. disable_irq() вижу. А кто делает enable() ?
  2. Советик в духе капитана очевидность. Если вбить в гугл "ADS131A ноль четыре", можно прочитать даташит. Там есть и таблички с потреблением для разных схем включения, и таблички шумов (также для разного питания).
  3. Здравствуйте. Занимаюсь реанимацией древнего проекта. Разрабатывалось оно в CodeWarrior, но в 2017 году тамошним редактором я пользоваться не могу совсем. Перетащил все файлики в эклипс (компилятор оставил старый). Подсветка-рефакторинг-поиск - всё прекрасно, но... Но как научить эклипс корректно обрабатывать конструкции вида {asm{nop};} или uchar DEVID_ @ (DevInfoAddr+4) = 123; ? При виде первой он подчёркивает всё, что дальше, красным. Во втором просто не видит переменной.
  4. Ну расскажите нам, куда надо правильно корпус прибора подключать. Стандарты пишут дураки, да-да-да. Вот сразу видно - "инженер"! Вместо попыток посчитать ток утечки, сравнить с токами УЗО и проч. мозговой деятельности - одни эпитеты и знаки препинания...
  5. https://en.wikipedia.org/wiki/Daytime_Protocol Насколько широко оно распространено, я понятия не имею.
  6. Классно. Рад за вас, что у вас всё всегда работает. Почему-то мой код надо отлаживать, а не просто написать и нажать кнопочку "build". И в процессе отладки очень хочется минимизировать количество "чёрных ящиков". То-то у кортексов настолько развесистый NVIC, что им с лёгкостью можно заменить простенькую операционку. Ну я основную идею понял. "у меня всё работает, а шаг вправо, шаг влево - это сам дурак". Спасибо за мнение.
  7. Вообще говоря, этот код работает. В это место вы попадаете с установленным 30-м битом; он ещё раз умножается на 30-й бит и записывается обратно. Вариант GINTSTS |= 0x40000000; неправильный, он лишние флажки поскидывает. Простой и понятный вариант GINTSTS = 0x40000000; но для индусов это слишком просто. По делу не помогу. Я это нагромождение дефайнов и абстракций не осилил. Заметно лучше, чем SPL, но для прикручивания своего протокола понадобилось бы переписать половину этой "библиотеки". Плюнул, взял libopencm3 - там тоже переписывать надо, но хотя бы структура прозрачная. У меня вопрос. Где граница, при превышении которой этот самый-лучший-в-мире стек упадёт нафиг? Убираем несчастную кривую функцию, добавляем два высокоприоритетных прерывания. Будет работать? Увеличиваем частоту прерываний на порядок. Будет работать? Стандартом заложено, что интерфейс может "подтормаживать". А библиотекописатели это не проверяли, у них в случае торможений всё вообще раком встаёт. Это проблема библиотеки, разве не так?
  8. ТЗ напрочь отсутствует. Это устройство где жить будет? Рядом на стенке будет висеть своя базовая станция? Рядом с телефоном пользователя? Или рядом только вайфай (с десятью NAT'ами, но это отдельные проблемы). Или GSM ? Если нет "своего" устройства на другой стороне радиоканала, выбор совсем небольшой...
  9. Советчики - это какой-то ад. Лучше б выложенные картинки ВНИМАТЕЛЬНО посмотрели. 1. Сигнал D0 слабо коррелирует с TX/RX. На верхних полосах написано "timeline". И это таймлайн и есть. По RX|TX буквально несколько байт проскакивает (и на заметно большей скорости). 2. Сигнал D0 мало похож на UART. Во всяком случае, глазами старт/стоп биты не отыскиваются ни с 8-битными данными, ни с 9-битными. Русским языком написано, что длина пачки - 145 бит. Вот можно предположить, что старт-стопы у неё в начале и в конце. Советы: - посмотреть RX/TX на входе и на выходе. Проверяем гипотезу "данные передаются только при нуле этого хитро-сигнала". Точнее, выясняем, кто откуда синхронизируется - хитросигнал подстраивается под данные или данные задерживаются на нужное время. - преобразовать снятые данные в хекс. Лично мне глазами похожие куски было б легче искать. - (главное) подумать на тему эмуляции ПК и устройства. Подавать на эту коробочку заранее записанные сигналы, смотреть что меняется.
  10. Прочитайте, пожалуйста, вторую строку самого первого сообщения. Оттуда вполне очевидно следует: НЕТ, НЕЛЬЗЯ, censored.
  11. Den64, вы хотите сказать, что if (TCCR0B & (1<CS00)) не работает, а TCCR0B = (1<<CS02); работает именно потому, что TCCR0B - это адрес? Ну-ну. gerber прав, банальная опечатка.
  12. Да вот чёрт его разберёт... У нас надо было на USB-флешку файлы читать-писать. И периодически где-то в недрах драйвера происходило что-то непонятное. Попытки отладить это дело провалились, т.к. отличия от "нормального" поведения найти не удалось. В итоге дошло до анекдотов - по отделу "гуляли" "точно нормальные" флешки. Как там пользователи справлялись, не знаю. Прошивку обновлять - видимо, с такой же "нормальной" флешки, а функция "сохрани файлик с отчётом" толком никому и не нужна оказалась...
  13. Видимо, люди уже пробовали :-) "Родной" STM'овский код работает как-то с проблемами... Мы когда-то допиливали, но так и не заставили работать нормально. У LPC'шек хост стандартный, вроде б проблем должно быть меньше.
  14. А кто будет объяснять линкеру, что там должен лежать этот псевдо-чар? Он имеет полное право положить туда что-то совершенно другое.
  15. TEventFlag.Signal_isr()

    Или я не понял вопрос, или Вам нужен EXTERN. Как оно работает, можно подсмотреть в любом другом ассемблерном модуле (например, в штатном стартапе). UPD. Перечитал ещё раз. Да, вопрос я не понял. Тут инлайн ассемблер (с какими-то своими правилами). Извиняюсь...
  16. Рекомендую обратиться к первоисточнику, т.е. документации. В заголовке этого stmXXXX_hal_uart.c всё подробно расписано. (#) Blocking mode APIs are: (++) HAL_UART_Transmit() (++) HAL_UART_Receive() (#) Non Blocking mode APIs with Interrupt are: (++) HAL_UART_Transmit_IT() (++) HAL_UART_Receive_IT() (++) HAL_UART_IRQHandler() (#) Non Blocking mode functions with DMA are: (++) HAL_UART_Transmit_DMA() (++) HAL_UART_Receive_DMA() (++) HAL_UART_DMAPause() (++) HAL_UART_DMAResume() (++) HAL_UART_DMAStop() Да. Для этого достаточно посмотреть код этой функции - там нет никаких ожиданий.
  17. Ещё момент забыли. Если у источника питания есть выходы статуса (или, наоборот, входы управления) то в случае такого "перевёрнутого" управления надо подумать о развязке. Вроде б у "штиля" выходы сделаны на реле (документация у них отвратная...), так что тут проблем не будет. Ну и отсутствие соединения выхода "0" со всеми внешними металлическими деталями стоит проверить (ни разу не телефонист, так что не знаю, делают так или нет).
  18. Это у любого отладчика фича такая. Видит, что пользователь хочет считать переменную - и считывает при каждом удобном случае. Каких-то особо умных отладчиков, которые знают о "спецэффектах" при чтении регистров периферии, я не знаю. Максимум - пользователь может сам управлять, читать ли данный конкретный регистр. Да и вообще I2C какой-то странный и на "раз-два" работать отказывается. И виснет от внешних помех в недокументированных состояниях (благо, есть бит сброса).
  19. А можно подробностей для тех, кто не в теме? И если в открытом доступе есть таблички "кто сколько продаёт" (а вдруг?) - тоже очень любопытно.
  20. Отладчиком в этом случае пользоваться нельзя!! Регистр DR читается ДВА раза. Один раз - из кода, второй - отладчиком. Как минимум, закройте окошко с регистрами I2C.
  21. Действительно, как же компайлер (Herz! где же Herz?! :-) ) будет их выполнять?.. Он же компайлер языка си, слова боксинг не разумеет... What is Boxing and Unboxing? Conversion of a primitive type to the corresponding reference type is called boxing, such as an int to a java.lang.Integer. Conversion of the reference type to the corresponding primitive type is called unboxing, such as Byte to byte. Since JDK 1.5, Conversion from primitive types to corresponding wrapper objects and vice versa can happen automatically.
  22. Можно абстрагироваться и ничего не делать вообще совсем, только языком чесать. (по большому секрету: BTA_lib можно и нужно писать на плюсах. Там даже подвижки к объектной модели есть). Это всё прекрасно. Баек "как сделать плохо" я и сам могу рассказать. Только я задавал совсем другой вопрос.
  23. Не-а. Следующий шаг - это разобраться, зачем вообще копировать данные из data в buf. Да пусть ноют. Какой смысл спорить с людьми, ни устриц не видели, ни Пастернака не читали? А можно примеры таких систем? Они ведь очень широко распространены, правда?
  24. Reference manual, раздел Power Control, табличка Stop Mode. Т.е. настраиваем на ногу приёмника внешнее прерывание, засыпаем, после просыпания перенастраиваем ногу обратно на UART. Пропущенный байт (или несколько, если скорость уарта большая, и нужно включать кварц и PLL) восстанавливаем телепатическими методами.
×
×
  • Создать...