Данный проект является развитием проекта адаптера SD-CARD от Vinxru http://vinxru.livejournal.com, исходный код проекта расположен по адресу https://github.com/vinxru/86RKSD
- Добавлен LDO регулятор LM1117 3v3
- Вместо резистивных делителей используется буфер HEF4050BT
- добавлен 26-контактный IDC разъем под кабель для сопряжения модуля с Радио-86РК_SRAM
- Добавлен 6-контактный разъем для программатора
- Вместо Atmega8L используется МК Atmega328P
Плата разработана в CAD Eagle 7.0 и выполнена в форм-факторе 5x5 см, что дает возможность заказать ее производство у китайцев. Пробная первая партия была заказана у http://www.dfrobot.com.
Gerber-файлы для производства платы проходят валидацию по стандартам pcb-сервиса от dfrobot.com.
Микросхемы:
-
U1 - Atmega8L(A) (или Atmega328P, или аналогичный МК)
-
U2 - HEF4050BT (или другого производителя, 4050 в SMD-корпусе)
-
IC1 - LM1117-3.3V
Разъемы:
-
CONN1 - 4UCon 19646 или аналогичный (pdf, Sparkfun, noname разъем на ebay)
-
CONN2 - угловой 2x13-контактный IDC-разъем (шаг 2.54мм)
-
CONN3 - вертикальный 2x3-контактный pin header (шаг 2.54мм)
Резисторы:
- R1 - 470 Ом, корпус 1206
Конденсаторы:
-
C1, C2 - 10 мкФ, танталовые полярные, корпус 1206
-
C3, C4 - 0.1 мкФ, керамические, корпус 1206
Светодиод:
- LED1 - цвет свечения какой нравится, корпус 1206
Автор оригинальной разработки подготовил файлы boot.rk, sdbios.rk и shell.rk для Радио-86РК (меняются, как минимум, адреса портов).
Прошивка микроконтроллера Atmega8L остается без изменений, можно спокойно заливать авторскую.
Если же проект собирается на базе Atmega328P, то за основу можно взять модифицированную по этот камень прошивку из данного репозитария, в директории firmware/src/atmega328p. Вся соль не только в изменившихся адресах портов этого камня, а также в смещении переменной rom, которая в оригинальной конфигурации сидела по адресу 0100h, а теперь сидит по адресу 0200h.
Также оказалось, что коммандер shell.rk не совсем корректно работает с адаптером PS/2 клавиатуры и моей кривой клавиатурой с неполной поддержкой ScanCode Set 3, при вызове функции биоса getch() возвращает странные значения для кнопок курсора. Соответственно, пришлось придумать альтернативное решение управления курсором, а именно: клавиши Q,A,O,P. Модифицированная версия shell.rk расположена в директории firmware/src/shell_rk/.
На сайте http://www.engbedded.com/fusecalc/ можно посчитать fuse bits для Вашего МК. Необходимо выбрать
- Internal RC OSC 8MHz,
- убрать галочку Divide clock by 8 internally
Все остальное можно не трогать или по желанию (например параметры brown out detection).
-
Обсуждение проекта на zx-pk.ru: http://zx-pk.ru/showthread.php?t=24092
-
Тема в барахолке на zx-pk.ru: http://zx-pk.ru/market/viewtopic.php?f=7&t=2567&p=24381
-
Оригинальная авторская разработка: http://vinxru.livejournal.com/235725.html
-
Исходный код оригинальной авторской разработки: http://github.com/vinxru/86RKSD
-
Группа автора в соц. сети Вконтакте с подробным описанием этапов разработки: https://vk.com/retropk