-
- И? Ни одна версия не прокатила? Проект закрыт? Передан другому? ;) - VLLV(13.05.2025 09:39)
- А, нет. Извините. Параллельно просто ещё другими вещами занимаюсь. А так документацию смотрю, что можно сделать с атомарностью. Пытаюсь понять, как применять макрос _atomic_. Вроде не написано, что есть какие-то ограничения, а работает только для присваивания и сложения. Если попытаться обернуть более сложную процедуру, то выдаёт ошибку. А так пока больше идей нет. Ещё смотрю про настройку CAN. Я гуглил похожую проблемы, большинство вариантов про другие контроллеры конечно, Lem(164 знак., 14.05.2025 20:37)
- Зачет не получен, студент примеряет сапоги :) - Cкpипaч(13.05.2025 11:56)
- Самое обидное, что это производственная практика... - Lem(14.05.2025 20:37)
- Пусть коллеги поправят, но "обычно" аторамность обеспечивается
запретом прерываний, на период чтения регистров и записью в них
только тогда, когда приемо-передатчик к этому готов (по информации
в его регистрах). - Cкpипaч(14.05.2025 20:56)
- Коллеги интересуются, откуда сведения, что "атомарность" имеет
отношение к проблеме? Это выглядит как типичные пляски с бубном. - SciFi(14.05.2025 20:58)
- Это не атомарность многобайтной переменной в чистом виде, а "атомарность многобайтного сообщения": "значение с АЦП берётся по таймеру(в обработчике прерываний), в том же таймере данные эти значения заносятся в область данных объекта сообщений, который настроен на передачу, а передаёт он их по запросу из вне". Нужно запретить по крайней мере прерывание АЦП на время отправки сообщения и всё станет понятно. - VLLV(16.05.2025 13:00)
- Рванувший в отпуск телепат шепнул :) - Cкpипaч(14.05.2025 21:00)
- Коллеги интересуются, откуда сведения, что "атомарность" имеет
отношение к проблеме? Это выглядит как типичные пляски с бубном. - SciFi(14.05.2025 20:58)
- Пусть коллеги поправят, но "обычно" аторамность обеспечивается
запретом прерываний, на период чтения регистров и записью в них
только тогда, когда приемо-передатчик к этому готов (по информации
в его регистрах). - Cкpипaч(14.05.2025 20:56)
- Самое обидное, что это производственная практика... - Lem(14.05.2025 20:37)
- Нужно считать ускорение на стороне контроллера и передавать в том
же сообщении CAN. Тогда тайминг доставки сообщения не будет влиять. - VLLV_(05.05.2025 21:21,
)
- Спасибо за ответ. Прошу прощение, что внёс путаницу и тем самым
просто зря потратил ваше время. Я на ускорение смотрю, так как на
нём хорошо видны выбросы. А так внешний контроллер у меня именно
что скорость запрашивает - Lem(05.05.2025 21:47)
- А ускорение где смотрите? На внешнем контроллере? Ну так и
передавайте ему ускорение, вычисленное в самом вашем МК по чистым
данным. Nikolay_Po(477 знак., 05.05.2025 21:54)
- Нет. Я беру данные из can сообщения на выходе моего контроллера. С
внешнего контроллера идёт кабель(кабель для can, раскиданных на
контакты db9), со стороны моего контроллера идёт ответная часть. Я
просто спаял разветвитель, чтобы контроллеры могли общаться и при
этом я мог бы с компа смотреть, что кому шлёт. Я просто через прогу
на компе смотрю, что шлёт мой контроллер во внешний, записываю эти
данные, матлаб скриптом переводу в "нормальные" данные и смотрю
первую Lem(238 знак., 06.05.2025 10:31)
- таймстеп события в сообщение добавить и не сношать мозг ) - Aleksey_75(06.05.2025 20:25)
- В смысле отправку по таймеру делать? - Lem(07.05.2025 02:03)
- Нет, отправлять, кроме данных АЦП, ещё и метку времени (например, значение системного таймера, соответствующее моменту). Nikolay_Po(147 знак., 07.05.2025 17:37)
- ТаймСтэмп. Nikolay_Po(1 знак., 06.05.2025 20:28, ссылка)
- В смысле отправку по таймеру делать? - Lem(07.05.2025 02:03)
- На время обновления данных кодом АЦП, вы защитили записываемые
данные от чтения в момент обновления? Nikolay_Po(248 знак., 06.05.2025 20:17)
- Нет, не защитил. Я чего то даже если честно не очень понял про что
речь. Разве такие конфликты не должны за счёт разных приоритетов
решаться? - Lem(07.05.2025 13:12)
- Ну и какие приоритеты у кода, сохраняющего результат АЦП и у
прерывания CAN? У кого выше? Nikolay_Po(152 знак., 07.05.2025 17:34)
- У CAN выше. PEC обрабатывает все события для которых выставлен
приоритет выше определённого значения, то есть он в любом случае
для событий с самым большим приоритетом - Lem(07.05.2025 21:36)
- Ну так вы можете ответить на вопрос, обеспечивается ли атомарность
данных АЦП? Nikolay_Po(250 знак., 07.05.2025 22:15)
- Я не ИИ к сожалению) Я просто, честно, не всегда знаю как ответить, так как не всегда понимаю вопрос или недостаточно знаний чтобы на него правильно ответить. Как можно проверить атомарность? Из того, что я читал, я понял, что атомарность можно обеспечить специальными командами. Я пытался сделать что-то такое создав две функции: функцию для получения значений с ацп и функцию для переноса данных из переменной, что хранит данные ацп, в область данных объекта сообщения. Для Lem(539 знак., 08.05.2025 14:37)
- Ну так вы можете ответить на вопрос, обеспечивается ли атомарность
данных АЦП? Nikolay_Po(250 знак., 07.05.2025 22:15)
- У CAN выше. PEC обрабатывает все события для которых выставлен
приоритет выше определённого значения, то есть он в любом случае
для событий с самым большим приоритетом - Lem(07.05.2025 21:36)
- Ну и какие приоритеты у кода, сохраняющего результат АЦП и у
прерывания CAN? У кого выше? Nikolay_Po(152 знак., 07.05.2025 17:34)
- афтар чегото не договаривает! слабо представляю для каких целей АЦП
для тахосигнала - Aleksey_75(06.05.2025 20:28)
- Ну... Датчик выдает напряжение, непрерывное. Мне нужно его МК
обрабатывать, а для этого оцифровать. Извините если не очень
понятно говорю, просто боюсь сказать лишнюю информацию, которая
наоборот всех запутает... Как с ускорением получилось, на которое я
смотрю просто потому что по нему удобно идентифицировать выбросы - Lem(07.05.2025 02:07)
- вы сами сказали - тахогенератор... т.е. импульсы... побуду немножко
"провидцем" всетаки вы считаете RMS! когда пересечения нуля
выпадает на выборку, за счет "кривизны" ацп вы получите выбросы... - Aleksey_75(09.05.2025 18:23)
- Честно, мне стыдно, но я всё равно немного не понимаю про RMS и импульсы... Возможно вы и правы, я до конца не вдавался в работу датчика, я, скажет так, говорю, что вижу... Но наверное всё таки это не самое важное. Насчёт пересечения нуля - тут то и проблема, у меня скорость не пересекает ноль + как я говорил в других ответах, значение с ацп - нормальное без выбросов - Lem(12.05.2025 00:25)
- Э-э-м... РМС, оно, каг-бы, должно интегрировать. Единичное значение
мало на что влияет. - mse homjak(09.05.2025 19:42)
- Если есть желание подискутировать на эту тему, перенесите в
отдельную тему чтоб, тут не мусорить. Aleksey_75(1 знак., 12.05.2025 19:45, картинка)
- Оу. А что тут происходит? Пики - это счётчик какой-то? - Lem(14.05.2025 20:39)
- Ничо не понял. Вот РМС: mse homjak(194 знак., 12.05.2025 21:08, картинка)
- RMS - это типа скользящий МНК? Я попробовал, но нагружать ещё
больше МК пока страшновато + мой МК в основном выполняет роль
оцифровщика и транслятора - Lem(14.05.2025 20:42)
- Скользящий корень квадратный из среднего квадратов измеренного. Только это имеет смысл для потенциальных величин, чтобы привести их в соотвецтвие энергетическим. Т.е. ток, напряжэние и прочее подобное. ИМХО, для вас это не актуально. Опять-жэ, ИМХО, для вас было бы интересно что-то типа простого скользящего среднего или какого ФНЧ на стандартной биквадратной секции ИИР. Если ваш МК с плывучкой, то ИИР реализуеца по счелчку пальцов. - mse homjak(14.05.2025 23:14)
- RMS - это типа скользящий МНК? Я попробовал, но нагружать ещё
больше МК пока страшновато + мой МК в основном выполняет роль
оцифровщика и транслятора - Lem(14.05.2025 20:42)
- Если есть желание подискутировать на эту тему, перенесите в
отдельную тему чтоб, тут не мусорить. Aleksey_75(1 знак., 12.05.2025 19:45, картинка)
- Ну так вы проверили, какие значения АЦП сохраняются в локальный
массив, в самом МК, во время работы CAN? Вам нужно выяснить,
действительно ли АЦП даёт другой результат при работе CAN? Nikolay_Po(318 знак., 07.05.2025 17:43)
- Да, проверял. Нет, с АЦП всё нормально, то есть идёт отправка по
запросу или по таймеру значения с АЦП - нормальные. А вот на выходе
контроллера, если брать значения именно из CAN сообщения, то там
появляются выбросы. Про % сложно сказать, так как смотрю
относительно нуля (ускорение), там большая часть значение примерно
0(так как в реальности там вращение с постоянной скоростью) с
небольшим шумом и периодические выбросы(которые и являются
проблемой) высотой +- 0,4 гр/с^2. Lem(329 знак., 07.05.2025 22:28)
- Ну так очень похоже на нарушение атомарности доступа. - Nikolay_Po(08.05.2025 08:18)
- Похоже на всех зверей, кроме зайца. Можно только гадать. Автор
перебдел и информации недостаточно. - VLLV_(08.05.2025 12:32,
)
- Извините, в чём я перебдел? Я вроде никакой информации не скрываю.
Говорю всё, что знаю или что могу быстро узнать. - Lem(08.05.2025 14:40)
- Можете быстро узнать, что 1)измененные значения и 2)отправленные
значения 3)полученные значения совпадают? Если да - то в чем
проблема? Если нет - то на каком этапе происходит искажение? - VLLV(08.05.2025 15:38)
- Я же вроде писал... Правда в ответе кому то другому. Понимаю, что
это большую путаницу создаёт. Я в одних и тех же условиях смотрю
данные: скорость чисто с МК(просто считанное значение с АЦП и
сохранённое в переменную) и данные которые МК шлёт наружу в ответ
на запрос(я прям от кабеля по которому мой и внешний МК общаются
сделал отвод и с компа смотрю всю линию). В данных, которые просто
с МК все нормально, сбоев нет. Если мой МК шлёт наружу данные
просто по таймеру, то в Lem(156 знак., 08.05.2025 18:05)
- Может, я плохо спрашиваю, или у вас катастрофически нет опыта
отладки. Еще раз, МК получил запрос. Что он делает дальше?
Запускает АЦП или берет последнее значение АЦП, которое постоянно
измеряется в цикле? Если всегда в ответ на запрос отдавать наружу
одну и ту же константу, она принимается верно? Если скорость не
измеряется постоянно, можно сделать, чтобы было так, и класть в
циклический буфер измеренные значения, чтобы посмотреть данные в
буфере в режиме отладки и VLLV(623 знак., 08.05.2025 19:15)
- Наверное я плохо формулирую + видимо влияет то, что я разным людям
в разных местах отвечаю. Нет, значение с АЦП берётся по таймеру(в
обработчике прерываний), в том же таймере данные эти значения
заносятся в область данных объекта сообщений, который настроен на
передачу, а передаёт он их по запросу из вне. Так что да, он берёт
последнее значение АЦП, которое измеряется в цикле(ну только это не
основной цикл main). Я пробовал имитировать показания скорости
(вместо показаний с Lem(1720 знак., 08.05.2025 23:34)
- Отлично, прогресс. Датчик ни при чём, АЦП ни при чём. "Если шлю
константу - то всё нормально, если шлю медленно меняющийся сигнал
видны сбои". Чисто программный баг. Сопоставить полученную сбойную
информацию с отправленной можно? Допустим вместо 1000 приходит
1256, значит та самая "атомарность доступа", о которой пишет Nikolay_Po. Вот подозрительное место "значение с АЦП берётся по таймеру(в обработчике прерываний), в
том же таймере данные эти значения VLLV(589 знак., 09.05.2025 06:04)
- +1. Но для начала можно оценить ещё более простой случай. ЫЫyкпy(813 знак., 09.05.2025 07:46)
- Отлично, прогресс. Датчик ни при чём, АЦП ни при чём. "Если шлю
константу - то всё нормально, если шлю медленно меняющийся сигнал
видны сбои". Чисто программный баг. Сопоставить полученную сбойную
информацию с отправленной можно? Допустим вместо 1000 приходит
1256, значит та самая "атомарность доступа", о которой пишет Nikolay_Po. Вот подозрительное место "значение с АЦП берётся по таймеру(в обработчике прерываний), в
том же таймере данные эти значения VLLV(589 знак., 09.05.2025 06:04)
- Наверное я плохо формулирую + видимо влияет то, что я разным людям
в разных местах отвечаю. Нет, значение с АЦП берётся по таймеру(в
обработчике прерываний), в том же таймере данные эти значения
заносятся в область данных объекта сообщений, который настроен на
передачу, а передаёт он их по запросу из вне. Так что да, он берёт
последнее значение АЦП, которое измеряется в цикле(ну только это не
основной цикл main). Я пробовал имитировать показания скорости
(вместо показаний с Lem(1720 знак., 08.05.2025 23:34)
- Может, я плохо спрашиваю, или у вас катастрофически нет опыта
отладки. Еще раз, МК получил запрос. Что он делает дальше?
Запускает АЦП или берет последнее значение АЦП, которое постоянно
измеряется в цикле? Если всегда в ответ на запрос отдавать наружу
одну и ту же константу, она принимается верно? Если скорость не
измеряется постоянно, можно сделать, чтобы было так, и класть в
циклический буфер измеренные значения, чтобы посмотреть данные в
буфере в режиме отладки и VLLV(623 знак., 08.05.2025 19:15)
- Я же вроде писал... Правда в ответе кому то другому. Понимаю, что
это большую путаницу создаёт. Я в одних и тех же условиях смотрю
данные: скорость чисто с МК(просто считанное значение с АЦП и
сохранённое в переменную) и данные которые МК шлёт наружу в ответ
на запрос(я прям от кабеля по которому мой и внешний МК общаются
сделал отвод и с компа смотрю всю линию). В данных, которые просто
с МК все нормально, сбоев нет. Если мой МК шлёт наружу данные
просто по таймеру, то в Lem(156 знак., 08.05.2025 18:05)
- Можете быстро узнать, что 1)измененные значения и 2)отправленные
значения 3)полученные значения совпадают? Если да - то в чем
проблема? Если нет - то на каком этапе происходит искажение? - VLLV(08.05.2025 15:38)
- А та, что есть - например, абсолютное значение ускорения - не
нужна. Если данные передаются в целочисленном виде, в чем его
смысл? - VLLV(08.05.2025 12:37)
- В том, что на нём хорошо видны сбои. Если я смотрю чисто скорость, то там чтобы разглядеть каждый момент сбоя - нужно в этом месте график приближать и тогда там видно как наклон меняется. Ну я уже сказал, что зря про него сказал, только путаницы навёл. Насчёт вопроса про целочисленные данные, честно не понял. Данные передаются в целочисленном виде потому что в другом виде вроде как его не передать по интерфейсу, но сама скорость не целочисленная, она просто кодируется Lem(90 знак., 08.05.2025 14:47)
- Извините, в чём я перебдел? Я вроде никакой информации не скрываю.
Говорю всё, что знаю или что могу быстро узнать. - Lem(08.05.2025 14:40)
- Похоже на всех зверей, кроме зайца. Можно только гадать. Автор
перебдел и информации недостаточно. - VLLV_(08.05.2025 12:32,
- Ну так очень похоже на нарушение атомарности доступа. - Nikolay_Po(08.05.2025 08:18)
- Да, проверял. Нет, с АЦП всё нормально, то есть идёт отправка по
запросу или по таймеру значения с АЦП - нормальные. А вот на выходе
контроллера, если брать значения именно из CAN сообщения, то там
появляются выбросы. Про % сложно сказать, так как смотрю
относительно нуля (ускорение), там большая часть значение примерно
0(так как в реальности там вращение с постоянной скоростью) с
небольшим шумом и периодические выбросы(которые и являются
проблемой) высотой +- 0,4 гр/с^2. Lem(329 знак., 07.05.2025 22:28)
- вы сами сказали - тахогенератор... т.е. импульсы... побуду немножко
"провидцем" всетаки вы считаете RMS! когда пересечения нуля
выпадает на выборку, за счет "кривизны" ацп вы получите выбросы... - Aleksey_75(09.05.2025 18:23)
- Ну... Датчик выдает напряжение, непрерывное. Мне нужно его МК
обрабатывать, а для этого оцифровать. Извините если не очень
понятно говорю, просто боюсь сказать лишнюю информацию, которая
наоборот всех запутает... Как с ускорением получилось, на которое я
смотрю просто потому что по нему удобно идентифицировать выбросы - Lem(07.05.2025 02:07)
- Нет, не защитил. Я чего то даже если честно не очень понял про что
речь. Разве такие конфликты не должны за счёт разных приоритетов
решаться? - Lem(07.05.2025 13:12)
- Давайте идти по шагам. Как Вы считаете ускорение? Разницу скоростей
соседних отсчетов делите на что? - VLLV_(06.05.2025 19:28,
)
- Ни на что. Просто разность соседних значений. На ускорение я
смотрю, потому что на нём хорошо видны сбои. Когда я отправляю
данные просто по таймеру - все ровно, когда отправляю по запросу -
в ускорении выбросы(если смотреть саму скорость, то по ней сложно
сбои разглядеть) - Lem(07.05.2025 03:52)
- На сколько, в процентах от шкалы АЦП и насколько, в процентах от текущего значения скорости, фиксируете отклонения? - Nikolay_Po(07.05.2025 18:15)
- Ни на что. Просто разность соседних значений. На ускорение я
смотрю, потому что на нём хорошо видны сбои. Когда я отправляю
данные просто по таймеру - все ровно, когда отправляю по запросу -
в ускорении выбросы(если смотреть саму скорость, то по ней сложно
сбои разглядеть) - Lem(07.05.2025 03:52)
- таймстеп события в сообщение добавить и не сношать мозг ) - Aleksey_75(06.05.2025 20:25)
- Нет. Я беру данные из can сообщения на выходе моего контроллера. С
внешнего контроллера идёт кабель(кабель для can, раскиданных на
контакты db9), со стороны моего контроллера идёт ответная часть. Я
просто спаял разветвитель, чтобы контроллеры могли общаться и при
этом я мог бы с компа смотреть, что кому шлёт. Я просто через прогу
на компе смотрю, что шлёт мой контроллер во внешний, записываю эти
данные, матлаб скриптом переводу в "нормальные" данные и смотрю
первую Lem(238 знак., 06.05.2025 10:31)
- А ускорение где смотрите? На внешнем контроллере? Ну так и
передавайте ему ускорение, вычисленное в самом вашем МК по чистым
данным. Nikolay_Po(477 знак., 05.05.2025 21:54)
- Спасибо за ответ. Прошу прощение, что внёс путаницу и тем самым
просто зря потратил ваше время. Я на ускорение смотрю, так как на
нём хорошо видны выбросы. А так внешний контроллер у меня именно
что скорость запрашивает - Lem(05.05.2025 21:47)
- Сохрани несколько замеров датчика скорости в массив в памяти МК без
всяких кэнов. И посмотри что там, для начала. - Nikolay_Po(05.05.2025 11:31)
- Смотрел. Там все ровно. Проблемы именно при запросах возникают.
Причем выбросы прям с частотой запроса - Lem(05.05.2025 15:46)
- частоту запроса каким либо образом используете ? сan гарантирует
доставку, но не гарантирует время доставки - Aleksey_75(05.05.2025 16:04)
- Извините... Немного не понял вопроса. Частота запроса фиксирована,
но ее определяет внешняя сторона. В расчетах ее не использую.
Ускорение считаю как просто разность и смотрю на него потому что по
нему хорошо видно - Lem(05.05.2025 16:58)
- суть в том что у вас скорость идет в в цифрах can сообщения,
всплески могут быть если вы пытаетесь привести данные с сообщения к
таймстепу получения сообщения и на шине есть еще обмен, то это
тупик! арбитарж даст непредсказуемый тайминг - Aleksey_75(05.05.2025 18:11)
- Спасибо за ответ. Я правильно понял, что это скорее проблема для
стороны, которая посылает запрос? Просто я вижу выбросы именно что
в данных, которые посылает мой МК в ответ (то есть это не данные,
которые ещё как-то кем-то обработаны). Извините, если неправильно
вас понял. - Lem(05.05.2025 21:49)
- Это только вам самому под силу выяснить. Nikolay_Po(345 знак., 05.05.2025 22:03)
- Значения с АЦП я беру по таймеру и в том же таймере сразу заношу их
в массив can сообщения. Раньше в том же таймере сразу после
заполнения массива сообщения я это сообщение слал и с данными все
было нормально. Сейчас я также в таймере заполняю массив сообщения,
но высылаю в ответ на запрос из вне - Lem(06.05.2025 11:04)
- Есть вероятность, что CAN читает данные из памяти в тот момент,
когда они обновляются. Это может приводить к ошибкам, перемешиванию
старых и новых байт данных. - Nikolay_Po(06.05.2025 20:22)
- У меня была такая мысль. А что в таком случае можно сделать? - Lem(07.05.2025 03:55)
- Можно флаги DMA смотреть. Либо сделать проще: все равно ведь данные
с АЦП надо фильтровать. Я элементарно завожу массив по 9 значений
на каждый канал АЦП. DMA молотит себе, а когда мне нужно получить
текущее значение, я элементарной медианой (сниппет стырил из
"numerical receipies") вычисляю из этих девяти. В итоге даже если
одно-два будут в корне неверными, все равно получится ОК. - Eddy_Em(07.05.2025 08:52)
- К сожалению на этом контроллере нет DMA. Есть PEC, который по функционалу похож(в ответ на событие переносит данные из одной области в другу в обход ЦПУ), но настроить его для АЦП у меня не вышло. Я по сути это и делаю, правда без фильтрации - в таймере заводу значения в область данных моего объекта сообщения, а по запросу оно просто отсылается. Ну, если я вас правильно ул всем понял - Lem(07.05.2025 13:03)
- Ну я понимаю завести 9 значений НА каждый канал ЦАП, но что касается АЦП люди традиционной ориентации, обычно выводят С каждого канала АЦП. - Kpoк(07.05.2025 10:16)
- Можно флаги DMA смотреть. Либо сделать проще: все равно ведь данные
с АЦП надо фильтровать. Я элементарно завожу массив по 9 значений
на каждый канал АЦП. DMA молотит себе, а когда мне нужно получить
текущее значение, я элементарной медианой (сниппет стырил из
"numerical receipies") вычисляю из этих девяти. В итоге даже если
одно-два будут в корне неверными, все равно получится ОК. - Eddy_Em(07.05.2025 08:52)
- У меня была такая мысль. А что в таком случае можно сделать? - Lem(07.05.2025 03:55)
- есть подозрение что ты мил человек всех нас обманываешь ))) там
случаем RMS не считаешь ? - Aleksey_75(06.05.2025 12:42)
- RMS - это обороты в секунду? Вроде нет - Lem(06.05.2025 13:33)
- Это что за чудный датчик скорости что нужно задействовать ацп ???
)) - Aleksey_75(06.05.2025 12:33)
- Тахогенератор вроде - Lem(06.05.2025 13:35)
- Третий пример от Грока: Бoмж(3752 знак., 06.05.2025 11:42)
- Есть вероятность, что CAN читает данные из памяти в тот момент,
когда они обновляются. Это может приводить к ошибкам, перемешиванию
старых и новых байт данных. - Nikolay_Po(06.05.2025 20:22)
- Значения с АЦП я беру по таймеру и в том же таймере сразу заношу их
в массив can сообщения. Раньше в том же таймере сразу после
заполнения массива сообщения я это сообщение слал и с данными все
было нормально. Сейчас я также в таймере заполняю массив сообщения,
но высылаю в ответ на запрос из вне - Lem(06.05.2025 11:04)
- Это только вам самому под силу выяснить. Nikolay_Po(345 знак., 05.05.2025 22:03)
- Спасибо за ответ. Я правильно понял, что это скорее проблема для
стороны, которая посылает запрос? Просто я вижу выбросы именно что
в данных, которые посылает мой МК в ответ (то есть это не данные,
которые ещё как-то кем-то обработаны). Извините, если неправильно
вас понял. - Lem(05.05.2025 21:49)
- суть в том что у вас скорость идет в в цифрах can сообщения,
всплески могут быть если вы пытаетесь привести данные с сообщения к
таймстепу получения сообщения и на шине есть еще обмен, то это
тупик! арбитарж даст непредсказуемый тайминг - Aleksey_75(05.05.2025 18:11)
- Извините... Немного не понял вопроса. Частота запроса фиксирована,
но ее определяет внешняя сторона. В расчетах ее не использую.
Ускорение считаю как просто разность и смотрю на него потому что по
нему хорошо видно - Lem(05.05.2025 16:58)
- Может, у тебя датчик скорости сидит на том же питании, что и
трансивер кэн. И пульсации по питанию помехи дают? Nikolay_Po(355 знак., 05.05.2025 15:51)
- Что у вас датчик скорости? Он генерирует импульсы, которые вы
считаете? - Nikolay_Po(05.05.2025 18:46)
- Да, кстати, спасибо за ответы и что тратите своё время. Для меня, честно, этот МК почти в новинку, а очень многие примеры в инете написаны на ассемблере, поэтому тут так сложно... - Lem(05.05.2025 21:53)
- Выдаёт напряжение пропорциональное скорости, которое идёт на АЦП.
На каком принципе работает, честно, не знаю. - Lem(05.05.2025 21:43)
- Питается от чего датчик? У АЦП опорное напряжение достаточно стабильно? А то активность на шине может влиять на показания. Nikolay_Po(264 знак., 05.05.2025 21:59)
- Насчёт питания - вроде нет. К тому же до этого было реализовано, что c167 просто по таймеру слал наружу значения и в них никаких выбросов. А вот как стал по запросу делать, так проблемы. Насчёт задержки - пока не знаю. До этого реализовывал отправку по простому запросу и в обработчике прерываний can "вручную" делал send, при этом я делал свою функцию send вытесняющий (с помощью макроса #pragma disabled), то есть когда она срабатывала по идее любые другие прерывания не Lem(29 знак., 05.05.2025 16:55)
- Что у вас датчик скорости? Он генерирует импульсы, которые вы
считаете? - Nikolay_Po(05.05.2025 18:46)
- частоту запроса каким либо образом используете ? сan гарантирует
доставку, но не гарантирует время доставки - Aleksey_75(05.05.2025 16:04)
- Смотрел. Там все ровно. Проблемы именно при запросах возникают.
Причем выбросы прям с частотой запроса - Lem(05.05.2025 15:46)
- Могу как телепат со стажем сказать, что суть проблемы осталась за
рамками озвученной информации. Ни МК, ни таинственный PEC к ней не
имеют отношение. Выражение "МК опрашивает датчик скорости" не
раскрыто. Фраза "использовать PEC, чтобы ещё меньше задействовать
такты МК" как бы намекает, что все плохо. Ждемс дополнительную
информацию. - il-2(05.05.2025 08:14)
- Да, плохо написал свой исходный вопрос. Датчик скорости
вырабатывает напряжение пропорциональное скорости. Это напряжение
идёт на мой контроллер, "обрабатывается" АЦП, с АЦП я беру значение
(16 бит). Мой МК по сути берет значение скорости, заносит его в can
сообщение и отправляет во внешний контроллер. Я считываю эти
данные, из них достаю значение скорости и вижу в них сбои с
частотой запроса, по которому я должен сдать сообщение. При этом
если я посылаю сообщение не по Lem(243 знак., 06.05.2025 11:01)
- Нужно сделать без PEC. Если данные скорости в ответ на запросы по
CAN станут корректными, значит PEC запрограммирован неправильно. - Бoмж(06.05.2025 11:20)
- Вот второй пример от Грока: Бoмж(3230 знак., 06.05.2025 11:32)
- Вот пример от Грока: Бoмж(2181 знак., 06.05.2025 11:28)
- Нужно сделать без PEC. Если данные скорости в ответ на запросы по
CAN станут корректными, значит PEC запрограммирован неправильно. - Бoмж(06.05.2025 11:20)
- Да, плохо написал свой исходный вопрос. Датчик скорости
вырабатывает напряжение пропорциональное скорости. Это напряжение
идёт на мой контроллер, "обрабатывается" АЦП, с АЦП я беру значение
(16 бит). Мой МК по сути берет значение скорости, заносит его в can
сообщение и отправляет во внешний контроллер. Я считываю эти
данные, из них достаю значение скорости и вижу в них сбои с
частотой запроса, по которому я должен сдать сообщение. При этом
если я посылаю сообщение не по Lem(243 знак., 06.05.2025 11:01)
- И? Ни одна версия не прокатила? Проект закрыт? Передан другому? ;) - VLLV(13.05.2025 09:39)