Контроллер для кордовых электричек

Маркс

Собрал стенд, с записью какой то косяк, записывает через раз.
Будем искать ((

Маркс

Исправил ошибку
Programmer.zip
сейчас есть другая трабла, не понятно на что влияющая и где искать концы,
при записи может подвиснуть на 1-2 секунды, но не всегда

похоже на выпадание по таймауту чтения, значит данные не записаны или записаны не полностью,
если сразу после нажатия COMPLETE, значит операция прошла успешно.
а значит я знаю, в каком месте искать эту ошибку, позже попробую поправить.

Маркс

в общем, продолжу отыскивать траблы, еще пара вылезла,
последовательный порт работает значительно медленнее процессора ))))
так что “по простому” не получится

Маркс

на самом деле, сейчас уже можно потестить и посмотреть, может я что то пропустил в других местах.
я после интегрирования обмена весь остальной функционал программатора не проверял, мало ли где мог накосячить ))
вчера два часа убил на поиск ошибки в программе, после того как решил, что “на фига” счетчику иметь знак
и заменил его на беззнаковое целое и тут же посыпались все изменения разрядов ))

Маркс

нашел огромный “косяк”, теперь надо понять, как его “выкурить”.
обмен можете даже не смотреть, таймер отдает все правильно, а вот получает - всякую хрень.

Маркс

как же быстро привыкаешь к хорошему )),
я имею в виду отладку на STM32, остановил программу в любом месте, просто так или по условию
и смотришь, что куда пришло и что где лежит ) Атмега в этом смысле полный отстой,
как можно заниматься отладкой обмена по UART, если данные можно только в него и выводить.

Маркс

в общем, до вечера среды все изыскания приостановлены.
надо подумать о глобальном изменении логики обмена.
оказывается ошибки периодически проскакивают даже там, где на первый взгляд все работает отлично.
причина кроется в том, что процессор работает значительно быстрее чем UART.

ПЕЧАЛЬНО (

RandomJ

Ну программатор BLHeli как то же работает, и карты программирования для регуляторов тоже, а они на АтМеге собраны, видимо есть какая-то хитрость… А jeti box programmer, разве не на атмеге собран?

Маркс

да все оно на мегах )), я и сам много лет Меги программировал и горя не знал,
а крайние лет шесть пересел на STM32, на которых в плане отладки все просто “в шоколаде” ))
потому и говорю, к хорошему быстро привыкаешь.

конкретный пример, есть Нано, которая должна получить или передать по UART данные,
как узнать, что она передавала или получала ?
когда в проекте UART свободен, можно “выкинуть” в него полученные данные и посмотреть в проге Терминал,
а если занят ? на STM32 простая реализация, я в режиме отладчика останавливаю программу и смотрю все буферы и переменные )
или в реал-тайм, вывожу в консольную строку.

но решение есть, подключу библиотеку SoftSerial, прицеплю USB-UART и буду в терминале смотреть ))

что касается решения UART на программаторе, на UNO UART разведен, но не распаян,

И при таком способе монтажа разъема, даже не мешает внизу ),
недостаток - четыре штыря и питание в середине, надо искать удлинитель с четырьмя проводами

У меня даже подходящий провод от ST-Link завалялся и при подключении к МИНИ провода переставлять не придется

Маркс

Настроил вывод данных с таймера, в роли которого Ардуинка-Нано, в Soft’овый последовательный порт,
завтра начну “кропать” новую версию чтения/записи данных в таймер с программатора.
Алгоритм на бумаге уже накидал, понял в чем были глобальные ошибки ).
На программаторе тестовые данные при необходимости буду выводить на экран, тут проще.

Маркс

В итоге прикрутил контрольную сумму на пакет с данными и все стало значительно проще.
Обмен со стороны программатора отлажен с “эмулятором”.
Осталось перенести обмен из “эмулятора” в программу таймера, по сути заменить заглушки на подпрограммы.
Завтра после работы думаю закончить )

Маркс

Все что хорошо работало на эмуляторе, в таймере работать отказалось,
пол дня убил, уже сломал всю голову, куда пропадают данные, в общем релиз сегодня не состоится, пойду спать.
Утро вечера мудренее, завтра продолжу изыскания ((, печалька.

Завтра прикручу в таймере и программаторе отзеркаливание в софтсериал всей информации отправляемой и получаемой через UART
и буду смотреть, другие варианты уже все перебрал.

Маркс

“дело было не в бобине дхххххб сидел в кабине”(с) народная мудрость.
сегодня с утра девайсы отказались коннектится, совсем отказались.
и тут пришла в голову “мудрая мысля” - “а может стоит глянуть на TX/RX с помощью осциллографа”(с)
вывод, я больше недели убил оптимизируя код, изобретая проверки данных,
а надо было всего навсего, выкинуть на хрен китайские провода с разъемами,
которые тупо “звенели” и вносили помехи в данные, причем неисправность плавающая,
чуть тронул проводок, пакет прошел, двинул в другую сторону, пакет не пришел.

а я с “большого ума” сегодня с утра начал в очередной раз переписывать обмен.

Маркс

я это сделал,

  • обмен данными
  • изменение настроек
  • сохранение настроек в EEPROM таймера работает

через пару часов закончится гран-при Ф1 и выложу актуальные версии программ.

Маркс

Timer+Programmer.zip
дальше только исправлять ошибки,
при “холодном” старте все работает штатно, но если случился сбой и в буфере “зависли” данные,
нарушается логика обмена, лечится ресетом обоих девайсов.
в следующей версии добавлю стартовый байт, что бы “зависшие” данные и разный “мусор” в канале не мешали.

RandomJ
Маркс:

через пару часов закончится гран-при Ф1 и выложу актуальные версии программ.

[off top] Рассел всю малину испоганил…[/off top]

Гена_Большой

это тоже оффтоп

мостик Феррари всю малину испоганил, могли дубль сделать.
если бы в самом начале Сайнс пропустил Леклера, тогда на пит-стопе Леклер не потерял бы уйму мест.
а во время VSC у Леклера была возможность бесплатного пит-стопа.
короче Феррари как всегда тупили.

а потом, если вдруг Сайнс второй, а Леклер первый, поменяли местами, что бы Карлуше не было обидно

VitalikV

Пока нет, немного не хватает времени, работа завал, но пристально слежу ща темой.