Контроллер для кордовых электричек
Ещё бы схему электрическую подключений… к каким ногам какие проводки подключать.
GND-GND - на LCD это две гоги между 5V и VСС на MINI разъем UART (снизу) подписано GND
RX-TX и TX-RX, на мини подписаны, на LCD RX-правый крайний, TX-рядом с ним
Если вдруг случка не произойдет, можно RT/TX на одной из плат поменять местами
После этого Reset на таймере обязателен, Таймер будет ждать соединения не сильно долго, сейчас стоит 10 секунд, после подключения питания,
если за 10 секунд соединение не произошло, таймер выходит из режима программирования и отправляется в нормальный режим.
Собрал стенд, с записью какой то косяк, записывает через раз.
Будем искать ((
Исправил ошибку
Programmer.zip
сейчас есть другая трабла, не понятно на что влияющая и где искать концы,
при записи может подвиснуть на 1-2 секунды, но не всегда
похоже на выпадание по таймауту чтения, значит данные не записаны или записаны не полностью,
если сразу после нажатия COMPLETE, значит операция прошла успешно.
а значит я знаю, в каком месте искать эту ошибку, позже попробую поправить.
в общем, продолжу отыскивать траблы, еще пара вылезла,
последовательный порт работает значительно медленнее процессора ))))
так что “по простому” не получится
на самом деле, сейчас уже можно потестить и посмотреть, может я что то пропустил в других местах.
я после интегрирования обмена весь остальной функционал программатора не проверял, мало ли где мог накосячить ))
вчера два часа убил на поиск ошибки в программе, после того как решил, что “на фига” счетчику иметь знак
и заменил его на беззнаковое целое и тут же посыпались все изменения разрядов ))
нашел огромный “косяк”, теперь надо понять, как его “выкурить”.
обмен можете даже не смотреть, таймер отдает все правильно, а вот получает - всякую хрень.
как же быстро привыкаешь к хорошему )),
я имею в виду отладку на STM32, остановил программу в любом месте, просто так или по условию
и смотришь, что куда пришло и что где лежит ) Атмега в этом смысле полный отстой,
как можно заниматься отладкой обмена по UART, если данные можно только в него и выводить.
в общем, до вечера среды все изыскания приостановлены.
надо подумать о глобальном изменении логики обмена.
оказывается ошибки периодически проскакивают даже там, где на первый взгляд все работает отлично.
причина кроется в том, что процессор работает значительно быстрее чем UART.
ПЕЧАЛЬНО (
Ну программатор 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
дальше только исправлять ошибки,
при “холодном” старте все работает штатно, но если случился сбой и в буфере “зависли” данные,
нарушается логика обмена, лечится ресетом обоих девайсов.
в следующей версии добавлю стартовый байт, что бы “зависшие” данные и разный “мусор” в канале не мешали.
через пару часов закончится гран-при Ф1 и выложу актуальные версии программ.
[off top] Рассел всю малину испоганил…[/off top]
это тоже оффтоп
мостик Феррари всю малину испоганил, могли дубль сделать.
если бы в самом начале Сайнс пропустил Леклера, тогда на пит-стопе Леклер не потерял бы уйму мест.
а во время VSC у Леклера была возможность бесплатного пит-стопа.
короче Феррари как всегда тупили.
а потом, если вдруг Сайнс второй, а Леклер первый, поменяли местами, что бы Карлуше не было обидно