понедельник, 6 ноября 2017 г.

Пьеса в 17 частях: Заставляем работать связку "RobotDyn Mega CH430/ATmega 2560" + GRBL-Mega (1.1f)

Спасибо Сергею - комраду staltech с форума cnc-club.ru за подсказки
и автору сайта microsin.net за учебник по AVR.


  За этой скромной заметкой - два полных дня и половина  ночи в поисках решения.  Будь у меня скил по плотной работе на языке программирования Си с МК Атмега, то ушло бы не более пары часов.. имхо..

   И так - есть у меня "модель станка с чпу 2418". Управляется посредством GRBL. Плата управления "дятел" (Woodpeker) собрана на базе Atmega328.  По ряду причин, описанных в блоге, мне пришлось обновить прошивку до версии 1.1f. В время сборки появилось сообщение о малом количестве свободной памяти и возможных проблемах по этой причине..  Но прошивка прошла без сбоев и "чудо-станок" работает..   С того момента и возник интерес сделать шильд на купленную больше года назад чёрную плату клона Ардуино Мега2560. Наступил ноябрь с его праздниками и дождём.. ну.. "понеслась вода по трубам"...

1. Прошиваю GRBL в Мега2560 - в терминале пусто. Меняю в исходниках скорость порта, выставляю скорость порта в диспетчере устройств.. прошёлся от 9600 до 115200... Без результата.

2. Прошиваю разные учебные скетчи: мигание светодиодом, направление в последовательный порт данных из аналоговых и цифровых портов. Всё чётко. В терминале есть данные..

3. Опять GRBL - опять пусто...

4. Отправляем запрос всезнающему гуглу..

5. Находится тема про Мега2560 и лазерный гравёр.. читаю только первые две страницы темы.. т.к понятно, что там проблем нет.. всё прошилось.. и вопросы только по настройке.. Пишу Сергею в личку.. прикладываю оригинальный архив с прошивкой.

6. Продолжая крыжить результаты поиска, нахожу обсуждение моей проблемы.. сообщений в теме много.. как и надежд... Дочитал до середины.. но... все сходятся на мнении что клоны Мега2560 с интерфейсами ch430g не работают с GRBL.. в подтверждение приводят ссылки на магазины.. где явно об этом указано.. и рекомендуют "полные клоны", где ch430g заменён на Атмега16.

7. Приходит ответ от Сергея: плата прошилась без проблем, в подтверждении - скрин с терминала..  Выполняя просьбу, даю ссылку на видео-захват с экрана по прошивке моей платы.

8. Ошибок у меня тоже нет.. но плата "мёртвая". Появляется предположение смотреть обвязку ch430g.

9. Отпаял кондер идущий на reset от ch430g - толку нуль.

10. Зашил загрузчик, предварительно сделав из Uno ISP программатор.. - без результата

11. Отпаял резисторы по 22 Ом идующие  на TX0, RX0. Зашивал через переходники с FT232 и PL2303.. всё по прежнему.. Ясно стало одно.. дело не в ch430g. Запаял резисторы и конденсатор на место.

12. Сергей прислал загрузчик для 2560 в виде hex-файла.

13. Почти час провозился, что-бы заработал USBasp v.2 программатор под Вин10х64.. причём видится не как com-port, а как libusbK Device... Перезагрузки, отключения подписи драйверов и прочая "радость". С этим программатором заработал только один софт - кхазама.

14. Через USBasp v.2 зашиваю загрузчик. Произошли явные изменения: во первых плата стала прошиваться, только если выбрать Mega ADM. Во вторых:  стало обязательным в терминале и свойствах порта устанавливать скорость передачи данных такую, какая указана в скетче.. Раньше такого не было.. у порта стояла скорость 115200, в терминале что угодно.. а данные в терминал шли корректные.. х.з с чем это связано..

15. Сергей советует посмотреть движения на порта TX0 и RX0 после нажатия на "ресет". Пускаем в бой осциллограф, но потом его заменяет логический анализатор.. И опять - ничего.. только просадка до 0 на портах TX1 и RX1. Такое ощущение, что после прошивки МК или зависает, или отключается от внешнего мира...

16. Прошиваю опять GRBL.. и опять пусто..  Хотелось уже бросить это занятие.. на последок решил залить прошивку для 3Д принтера, написанную под Мега2560. Загружаю, выставляю скорость порта - есть доступ в терминале.  Тут окончательно стало ясно - проблема в софте.

17. Начал искать статьи и темы по строке "Mega2560 USART". Нашёл очень хороший учебник.. Перечитал пару раз.. мало что понял.. Открыл исходник отвечающий за связь.. закоментировал всё содержимое функции, отвечающей за инициализацию порта.. и скопипастил пример из этого классного учебника.. Запустил компиляцию - без ошибок. Зашил в Мегу.. и о чудо!!! Я увидел приглашение терминала.

Что поменял - видно на снимке с рабочего стола..

"за кадром" осталось много чего...  но сейчас вопрос в другом.  Хотелось бы от имеющих опыт в программирование МК узнать мнение.. в чём всё-же причина... когда один и тот-же код то работает, то нет. Желательно здесь в комментариях.

Что у меня получилось.. мера или полумера.. время покажет.. но зато я точно знаю.. как научится программировать на Си за 21 день... Бггг.


Источники:
Лазерный гравировщик по дереву: прошивка мега2560 + tb6600 - http://www.cnc-club.ru/forum/viewtopic.php?f=147&t=12237
Учебник  - http://microsin.net/programming/avr/atmega2560-working-with-uart.html
Внезапные грабли от поднебесных инженеров -http://3dtoday.ru/blogs/eta4ever/a-sudden-rake-from-sky-engineers/

2 комментария: