В статье речь пойдёт о отечественный МК фирмы Миландр 1886ВЕ5У, будет совсем немного кода .
Данный МК построен на ядре PIC17, что при разработке — так как у меня уже есть солидная кодовая база для PIC, мне было проще начать. Также под данный МК можно приобрести отладочную плату — о ней я тоже напишу.
Я расскажу с какими проблемами столкнулся при разработке прошивки, что понравилось, а что не очень. Всё написанное — моё личное субъективное мнение, потому, оговорюсь, возможно будут проблемы, которые и не проблемы вовсе, а даже особенности которых можно было бы избежать, обладай я опытом разработки.
Итак, поехали.
Первое, с чем в 2018-м году столкнётся желающий использовать в своих разработках МК от Миландра — это сложности с покупкой. Не говоря о цене, для этого скорее всего потребуется какое-нибудь юр.лицо. По крайней мере, когда я звонил им в отдел маркетинга узнавал о покупке как физ.лицо, мне дали понять, что в этом случае мне проще будет найти поставщика (цены у которых ещё выше). В общем, с маркетингом всё печально. С другой стороны, сайт они уже обновили, может и до маркетинговой политики дойдут как-нибудь.
Корявая документация
Несмотря на то что 1886ВЕ5У вышел лет пять назад , «детские болезни» никуда не делись. При чтении тех.документации ощущение, что делали её наспех. Нет, важная информация там, в принципе, присутствует, структурирована она достаточно странно. В тексте встречаются опечатки, да и сама структура документа, на мой взгляд, не блещет логичностью. В итоге при разработке вместо изучения одного документа приходится метаться между несколькими открытыми окнами искать нужные в текущий момент фрагменты в даташите, которые могут располагаться в документе далеко друг от друга, даже если относятся к одному блоку чипа.
Ещё , странно, что руководство по прошивке чипа вынесено в отдельный документ. Может это и удобно в каких-то случаях, но почему бы не сделать отдельную главу или приложение к даташиту?
В иллюстрации приведу пример. Для расчёта скорости CAN-интерфейса предлагают воспользоваться несколькими формулами.
При расчёте получается, что формула, будет иметь пять параметров (BRP, PRSEG, SEG1, SEG2, Fosc). Сама формула и зависимость параметров от значений бит в регистрах разнесены страниц на пятнадцать. В итоге, лучше сделать скрин с таблицей регистров и открывать его в пэинте, пока разбираешься с формулой.
Вообще, сам подход с формулами это тот ещё изварт. Чёткая формула это, прекрасно, но каждый раз пересчитывать значения в уме это то ещё удовольствие. Я , в итоге, запилил формулу в Mathcad и считал уже в нём.
Вопрос к составителям документации — а в чём проблема добавить пару страниц с таблицами, содержащими значения при нескольких значениях параметров? За примером далеко не надо — в документации на PIC таблицы есть , в разделах про настройку скорости UART.
Кстати, хочется отметить момент, кому-то будет полезно . Я не отношу себя к знатокам CAN-интерфейса, возможно, что справедливо для любых устройств CAN, а не только в этом случае. Также, возможно, особенность унаследована от PIC17, хотя я не смог найти PIC17 с CAN интерфейсом.
В общем, у нас есть два устройства на 1886ВЕ5У, одно из которых работает на 16 МГц , а второе на 10 МГц , то связать их, получится только на низкой скорости, и то не факт. И вот почему.
1 — максимальная скорость при всех выключенных делителях ограничена 390.6 кБит/с.
2 — при 10 МГц дискретность изменения такова, например, стандартные 250, 125 или 100 кБит/с не получится. По расчётам близкое получается, например 104.2 кБит/с (BRP=1, PRSEG=1, SEG1=5, SEG2=5). В общем, ошибка в несколько % будет присутствовать. Я уже писал — пока я не спец в данном протоколе, он и с такой ошибкой заработает на низких скоростях — в конце концов у данной шины большой запас по надёжности передачи данных.
В итоге оказалось поменять на плате резонатор на 16 МГц. Так или иначе, возможности проверить работу на низких скоростях у меня не было.