-
- вы сами сказали - тахогенератор... т.е. импульсы... побуду немножко
"провидцем" всетаки вы считаете RMS! когда пересечения нуля
выпадает на выборку, за счет "кривизны" ацп вы получите выбросы... - Aleksey_75(09.05.2025 18:23)
- Э-э-м... РМС, оно, каг-бы, должно интегрировать. Единичное значение мало на что влияет. - mse homjak(09.05.2025 19:42)
- Ну так вы проверили, какие значения АЦП сохраняются в локальный
массив, в самом МК, во время работы 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)