Ермаков Алексей @Solgo
Разработчик
Информация
- В рейтинге
- Не участвует
- Откуда
- Нижний Новгород, Нижегородская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Разработчик РЭА
Middle
От 200 000 ₽
Circuitry
Development of printed circuit board
Electronics Development
PCB design
Verilog HDL
FPGA
Cortex-M3
Pic Microcontroller
STM32
Дорожки 0.25мм у меня тоже получаются отлично, вопрос в совмещении переходных отверстий на 2х сторонней печатной плате. Из-за того что фотошаблон нелинейно искажается при печати на лазерном принтере приходится делать на платах крупнее 5х5см переходные с внешним диаметром 2мм.
У меня к вам два вопроса:
1) Каков внешний диаметр переходного отверстия на ваших платах.
2) Каков максимальный размер (любой из двух) печатной платы с указанным в пункте 1 внешним диаметром переходных отверстий.
Тоже использую фоторезист, отработал технологию 0.25мм дорожки получаются без проблем. Что я не могу до сих пор побороть, так это изготовление фотошаблона.
Моя технология выглядит следующим образом:
1) Отрезание заготовки сверловка.
2) Печать фотошаблона на пленке на лазерном принтере, выдерживание фотошаблона в парах ацетона 20 минут чтобы тонер разбух и сделался более черным.
3) Сырая накатка фотошаблона, выдерживание при комнатной температуре 25минут, снимаю верхнюю пленку, на смоченную дистиллированной водой заготовку с фоторезистом устанавливаю фотошаблон. Ориентация установки по просверленным отверстиям, поэтому двухсторонние платы совмещаются без дополнительных усилий.
4) Засветка, выдержка 25 минут при комнатной температуре.
5) Проявка, травление.
Так вот какие бы пленки я не пробовал для лазерного принтера происходит нелинейный увод рисунка (величина искажений зависит от рисунка). приходится переходные отверстия делать с учетом этого эффекта. На платах до 5см на сторону могу сделать переходные отверстия с внешним диаметром 1 - 1.3 мм, на более крупных платах приходится делать до 2мм.
Как мне кажет в ЛУТ технологии эта проблема должна стоять сильнее.
И может у кого-нибудь есть технология изготовления фотошаблона с меньшими искажениями геометрии.
Причины можно перечислять долго, список получается большой, вот первые несколько:
— Прибор разрабатывался год назад, в тот момент на рынке еще не было такого количества микроконтроллеров китайского производства.
— Партия устройств предполагалась не очень большой и тратить время на освоение нового микроконтроллера смысла не было.
— Устройство достаточно ответственное, микроконтроллеры microchip применять в проде как то спокойнее, чем микроконтроллер который ты за месяц освоил.
— Даже с microchip микроконтроллерами много нюансов при достаточно подробном даташите и наличие errata. С новым микроконтроллером всякого рода "неожиданности" могут на порядок увеличить время разработки.
Но микроконтроллер интересный, спасибо за наводку, правда на Али он заметно дороже PIC10F322
В данном проекте не требовалась совместимость ни с какими другими устройствами, смысла использовать более "тяжелый" протокол не было никакого.
И ассемблер для разработки мне кажется неудобен буквально всем. Но приходится его использовать если необходимо чтобы программа работала быстро или занимала маленький объем. Для базового блока программа кстати тоже написана на ассемблере. Памяти программ там было достаточно, а вот со временем обработки был большой напряг.
В приемнике с процессорным временем проблем нет, поэтому я не стал делать поиск кода по индексу. Еще одна причина в том, что из доступных 512 программных слов использовано 433, т.е. в лоб табличка просто не влезет.
Я не понимаю что такое "в общем случае". В разработке всегда решается конкретная задача исходя из ТЗ. Если будет задача передавать большее количество данных или поток данных (например аудио или видео поток) , то естественно будет использоваться другой протокол и другое железо. Можно придумать миллион вариантов синхросигналов и контроля целостности данных, но в данном конкретном случае описанном в статье, они будут хуже, так как не принесут улучшений, а только усложнят обработку.
Ваше предложение усложнит обработку на передающей и приемной стороне и при этом не принесет никаких улучшений. Изначально я делал пакет из трёх байт, 0xFF, 0x00, "байт с данными", но затем перешёл к описанном в статье варианту так как это сильно упростило обработку пакета с обоих сторон.
Толчком для переделки послужило то, что время между задним и передним фронтом тактовых импульсов чуть меньше 2мкс. И даже если микроконтроллер в базовом блоке ничего не делает, а только ждёт прерывания от SPI, то он все равно не успевает. И SPI входит в коллизию, так как передача байта уже началась, судя по переднему фронту тактового импульса, а тут происходит запись в буфер передатчика.
В моей реализации все три принятых подряд байта должны быть одинаковыми, если это не так, смена команды, помеха - пакет отбрасывается.
Насколько я понимаю, коды Рида-Соломона используются для обнаружения и коррекции ошибок за счет избыточности. Но для того чтобы их использовать данные уже должны быть корректно приняты в виде кадра, после этого надо потратить заметное по меркам 8 битного микроконтроллера время чтобы обработать этот кадр по соответствующему алгоритму.
Это хорошо для большого количества данных в подверженной ошибкам среде, но задачу синхронизации и выделение кадра данных из битового потока они не решают, эта задача перекладывается на железо ближе к физическому протоколу обмена.
При приеме со сдвигом на любое количество бит команда декодируется корректно.
На счет избыточности, во многих ситуациях , в том числе и в данной конструкции, время потраченное на передачу команды на много важнее. Как я уже сказал передатчик 8 битный, команда записывается в буфер только в момент смены режима и до следующей смены режима микроконтроллер со SPI буфером никаких действий не производит. Поэтому о какой избыточности вы говорите я не понимаю, наоборот присутсвует красивый минимализм.
Идельных решений подходящих для всех случаев жизни не существует, чтобы принять правильное решение надо исходить из ограничений накладываемых конструкцией, и только потом, если такая возможность осталась, из любви к исскуству.
Вы так и не пояснили почему отсутствует полноценная самосинхронизация. Устройство управления блоком света можно реализовать на одном 8 битном сдвиговом регистре с параллельными входами и все будет работать без микроконтроллера, в какой момент не включи такой пульт. А на счет огромной избыточности, вы выше предлагали еще большую избыточность 11бит на сообщение и вас это не смущало. К тому же меньше 8 бит передавать не получиться так как регистр передатчика 8 битный.
Я тоже пытался вспоминать, но во-первых тридцать лет прошло с момента окончания политеха, во вторых специальность "Радиоэлектроника". Кроме кодов типа Манчестер и кодов Хэмминга вспомнить ничего не смог.
Это в моей реализации, если вы заходите использовать все 34 кода, ваша концепция разделения на нибблы уже не подойдет.
У меня нет синхрослова как такового, у меня все что передается это полезные данные.
"Кстати, в вашей реализации вместо 0x80-0x8F с тем же успехом можно использовать 0x10-0x1F - я правильно понимаю? "
Да вы правы, эта последовательность тоже обладает данными свойствами.
Любая линия связи подвержена воздействию помех. Поэтому ошибки точно будут, а их количество будет зависеть от электромагнитной обстановки вокруг.
Это вся реализация на приемной стороне, включая отправку на сдвиговые регистры, и декодирование команды. Как видите она не очень сложная.
Как вы убедитесь что приемник принял сигнал без ошибки? После отправки какого количества команд вы сможете достоверно сказать, ну да, сейчас точно принял. Точно, точно..
В вашем варианте сообщение получается 11 бит. Буфер в SPI PIC16F18346 размером 8 бит. В предложенном вами варианте я буду вынужден постоянно записывать в буфер SPI. В моем варианте записал и забыл (SDI соединен с SDO в SPI SLAVE) и команда сама отправляется с каждой пачкой тактовых импульсов.
Посмотрел стоимость на mouser BC846BLT1G при партии 3000 штук стоит 0.027€, 74LVC1G17SE-7 - 0.043€. Резистор 0402 на 10К при партии 1000шт стоит 0.003€. Точек паек одинаковое количество по 5 в каждом варианте.
Остался вес BC846 + резистор 30мг + 0.65мг = 30.65мг. 74LVC1G17SE-7 - 6мг. Не думаю что разница в 49.3мг сыграет какую-то существенную роль, хотя в варианте с 74LVC1G17SE-7 надо еще дорожку питания прокидывать до микросхем, что "положительно" скажется на увеличении веса. Стоит признать что разница в 0.026€ не такая уж и большая, я думал что будет больше.