Electronics

Mecrisp Forth

Решил заняться чем-то новым, точнее хорошо забытым старым, и освоить форт на микроконтроллерах.

Перед компилируемыми ЯП форт имеет преимущество за счёт своей интерактивности - писать и отлаживать код можно непосредственно на целевом устройстве не занимаясь каждый раз сборкой и прошивкой.

С другой стороны, микроконтроллеры уже достаточно мощные, что бы запускать интерпретируемые языки, такие как Lua или JavaScript, но они отбирают для своей работы ценные ресурсы МК, да и работают сравнительно медленно.

Ядро же форт-машин компактно, и сам язык позволяет генерировать эффективный код, что позволяет на минимальном железе писать программы сопоставимые по скорости с ассемблерными, при этом обладающие хорошей переносимостью между различными архитектурами (в рамках одной реализации).

Установка Armbian на планшет Icoo D70gt. Часть 3

В предыдущих частях удалось запустить систему на планшете и настроить тачскрин.

Но как всегда хочется большего - например установить X-server, что бы получить все преимущества графического интерфейса.

Установка Armbian на планшет Icoo D70gt. Часть 2

Поскольку предыдущая статья получилась очень уж объёмной, я решил разбить её на две части.

В этой части я рассмотрю некоторые аспекты настройки системы и устройств ввода, таких как кнопки планшета, тачскрин и G-сенсор.

Установка Armbian на планшет Icoo D70gt

Наверное одно из самых недолговечных домашних электронных устройств - это планшет. Недлоговечное не в плане быстрой поломки (хотя и такое за ними водится), а в плане быстрого устаревания.

ПО ориентируется на флагманы, а устройство из среднего или низшего ценового диапазона ещё год назад вполне сносно работавшее вызывает только желание приложить его об стену.

Возможен и вариант частично работающего устройства: например разбит тачскрин, окончательно и бесповоротно сдох аккумулятор, может даже и сам экран разбит.

В любом случае, пока живы “мозги” планшета, можно постараться извлечь из планшета пользу установив на него ОС с ядром Linux.

ESP8266 WiFi SoC

https://github.com/esp8266/esp8266-wiki/wiki https://nurdspace.nl/ESP8266 Tools PlatformIO Arduino IDE Firmware ESP Link - преобразователь WiFi в Uart. NodeMCU - брать прошивки лучше именно со страницы релизов, а не бинарники из репозитория. luatool Tool for loading Lua-based scripts from file to ESP8266 with nodemcu firmware. https://github.com/nekromant/esp8266-frankenstein Прошивка TCP2UART переходника с настройкой по Web. //не проверено// [Transparent TCP-UART bridge with support to flash arduino and ARM systems(https://github.com/jeelabs/esp8266-bridge). //не проверено// Absolutely transparent bridge for the ESP8266.

JTAG

Pinout Следует иметь в виду, что разные производители могут использовать разную разводку сигналов, даже на разъёмов с одинаковым количеством пинов. Наиболее стандартизирован в этом плане 20-пиновый разъём. 20-pin Name JTAG 20 JTAG 20 Name Vref 1 2 Vtarg nTRST 3 4 GND TDI 5 6 GND TMS 7 8 GND TCK 9 10 GND RTCK 11 12 GND TDO 13 14 GND nSRST 15 16 GND dbgRQ 17 18 GND dbgACK 19 20 GND 10-pin Name Pin Pin Name Vref 1 2 Vsup nTRST 3 4 nSRST TDI 5 6 TDO TMS 7 8 GND TCK 9 10 GND 6-pin Pin Name 1 TMS 2 TDI 3 TDO 4 TCK 5 GND 6 Vcc

OLED 1.04inch 96x64@65K color display

OLED Color Display for electronic applications.((Via http://mdfly.com)) Характеристики: Screen resolution: 96x64@65K color Screen size: 1.04 inch Screen type: OLED Controller chip: SSD1332 Built-in backlight Built-in DC/DC Voltage converter Vendor: LG Документация: Display specification Display pinouts SSD1332 controller manual Typical contoller settings

Советы работы в Eagle CAD

Проектная библиотека Для создания библиотеки содержащей все используемые в проекте компоненты воспользуйтесь готовым скриптом идущим в поставке eagle: ulp/exp-project-lbr.ulp. Запустите его, ответьте на предложенные вопросы, радуйтесь жизни. P.S.: Удобно таскать компоненты из чужих проектов ;-) Board editor Слои tRestrict и bRestrict, запрещают трассировку в указаных регионах, а так же позволяют вырезать регионы из полигонов. Что бы перенести элемент на другую сторону платы, следует выбрать элемент для перемещения и нажать среднюю кнопку мыши.

FlashROM: программирование SPI Flash

FlashROM - консольная утилита для идентификации, чтения, записи, проверки и стирания микросхем Flash памяти. Основное назначение - это перепрошивка BIOS, etc, а потому в списке устройств программирования много весьма специфичных. Но так же поддерживаются распространённые программаторы/адаптеры: ft2232_spi, serprog, buspirate_spi, rayer_spi, pony_spi Адаптеры rayer и pony подключается на LPT порт, так что в современных реалиях их использование затруднительно. SerProg serprog это не конкретный адаптер, а протокол взаимодействия с адаптером по UART интерфейсу (или через эмуляцию UART на USB).

Обжимной инструмент

Долгие поиски адекватного инструмента для обжимания dupont-коннекторов (он же crimping tool) наконец привели к желаемому результату.

Обычные обжимки имеют одноуровневые губки, так что при попытке обжать коннектор, мы получали плохое соединение металла коннектора с зачищенным концом провода (или вообще не получали никакого соединения). Приходилось извращаться либо с пайкой, либо подгибая зачищенный конец провода на изоляцию.

Nokia 1202 LCD

Данный дисплей устанавливается в ряд бюджетных моделей телефонов Nokia 1202/1203/1280. Доступность, простой последовательный интерфейс и относительная лёгкость подключения позволяет использовать данный дисплей как в радиолюбительских конструкциях, так и в более серьёзных проектах. Если же Вам необходим цветной дисплей более высокого разрешения, то можно воспользоваться бюджетным LCD от Nokia 1661/5030/ 1616/1800/1662. LCD pinout Pin Name Description 0 not used 1 !

LPC-Link

Как многим заинтересованным лицам известно, хитрые платы LPCXpresso снабжены мега-дебаггером LPC-Link. Выпуск среды разработки code red в нативном виде под Linux позволил нам, сирым и убогим, познать радость пользования этим самым LPC-link’ом. В общих и целых чертах мы имеем следующее: Микроконтроллер задействованный в LPC-link начисто лишен какой бы то ни было долговременной памяти. Фирмварь в него надо грузить каждый раз после перетыкания и перед тем как начать шить target контроллер нам надо проверить, что там вообще на usb шине творится, в плане девайсов.

H018IN01

A high quality Color TFT-LCD Display for electronic applications. Возможности: Screen resolution: 128x160 Screen size: 1.8 inch (38x30mm) Screen type: TFT Controller chip: NT3915 Built-in backlight SPI support Документация: Specification Controller

Segger J-Link

Распространённое аппаратное средство для отладки МК с ядром ARM по интерфейсу JTAG и SWD((В openocd так и нет нормальной поддержки этого интерфейса)). Оригинальный J-Link стоит достаточно дорого - более трёхсот долларов, что достаточно ощутимо для радиолюбительского кошелька. Но китайские товарищи расстарались, и наклепали вполне приличных клонов за небольшие деньги. Возможно, это мне попался такой экземпляр китайского клона, но в условиях производство с обилием силовых агрегатов вокруг, отладчик подвисал каждые несколько минут.

Silicon labs EC2/EC3 debugger linux driver

Поддержка оригинальных Silabs-овских дебаггеров EC2 и EC3 обеспечивается с помощью пакета http://ec2drv.sourceforge.net/|ec2drv Установка ec2drv В первую очередь, нам надо инсталлировать все необходимые утилиты и бибилиотеки. На Debian-based системах это можно сделать командой: apt-get install autoconf libtool libboost-dev libusb-dev libreadline5-dev subversion libboost-regex-dev Получаем исходный код: svn co https://ec2drv.svn.sourceforge.net/svnroot/ec2drv/ec2drv/trunk ec2drv Переходим в каталог проекта и инициируем automake: cd ec2drv make -f Makefile.cvs ./configure Поскольку пакет ec2drv не обновлялся с 2006 года, для установки на современные системы потребуется побить в бубен.

Оптимизация задержек

Микроконтроллеры обычно работают напрямую с физическим миром, а не только с астрактным миром цифр. А реальность не терпит поспешностей. Иногда нужно немного подождать. Казалось бы, чего уж проще - написать процедуру задержки. А ведь нет! Написать то легко, а вот каков результат будет в машинных кодах? Три команды или тридцать три?

Вот и мне потребовалось реализовать задержку в сишной программе для ATtiny2313. Микроконтроллер ресурсами не блещет, а потому каждая команда на счету.

LCD 128*64

Характеристики: lcd type: fstn duty, bias: duty=1⁄64, bias=1⁄9 viewing direction 6 o’clock module size (LxWxH) with FPC 32x19.2x1.8mm (max) View area(LxW) 27.95x12.9mm Dots matrix (segment * comment) 128*64 dots dot size (LxW) 0.16x0.145mm dot pitch(w*H) 0.19x0.175mm lcd driver ic st7565 (sitronix) absolute maximum ratings (Ta = 25 centigrade degree) Parameter symbol Min Max Unit Supply voltgage for logic VDD -0.3 3.

Monochrome LCD panel LM211

pin имя - описание 1 D1 H/L Serial row data 2 FLM H The FLM signal indicates the begining of each display cycle 3 M H/L Control signal for AC driving 4 CL1 H L The CL1 latches the serial data in the shift registers 5 CL2 H L Clock the signal for shifting the serial data 6 D2 H/L Serial row data 7 Vdd Power supply for logic circuit 8 Vss Ground 9 Vee Power supply for LC driving 10 Vo Operation voltage for LC driving Предельные напряжения

ST7637

Контроллер ST7637 STN LCD дисплея позволяет управлять цветным RGB дисплеем размером 132x132 пикселя. Пример работы с контроллером по параллельному интерфейсу через MCU LPC2103 можно получить из репозитория по ссылке: http://bitbucket.org/plumbum/grlib-st7637/ . Сейчас я переписываю библиотеку для разных дисплеев http://bitbucket.org/plumbum/liblcdgr/ Дисплей был извлечён из десятибаксовой фоторамки.

Прошивка LPC2xxx по последовательному порту

Микроконтроллеры NXP LPC2xxx имеют встроенный загрузчик, позволяющий прошивать память программ (flash) через последовательный порт (UART). Для входа в режим загрузчика во время аппаратного(?) сброса на определённых ногах микроконтроллера должны присутствовать логические уровни: Ноль на P0.14 для LPC210x Ноль на P2.10 для LPC2368, LPC2478 … LPC21ISP Наиболее оптимальный вариант для прошивки микроконтроллераконтроллера через последовательный порт - воспользоваться консольной программой lpc21isp. Сборка приложения проста и осуществляется одной командой make.

AVR Dragon

AVR Dragon средство программирования и отладки микроконтроллеров AVR. Позволяет отлаживать код размером до 32кб, хотя существует возможность доработки. Поддерживает программирование через интерфейс AVR ISP (6 pin), параллельный и последовательный высоковольтные интерфейсы. Отладка и программирование производится через интерфейсы AVR JTAG (10 pin) и dW (debug Wire). Ранние версии AVR Dragon имеют схемотехническую ошибку из-за которой велика вероятность выхода из строя цепей питания. Способ исправления описан в руководстве. AvrDuDe поддерживает все интерфейсы AVR Dragon, для отладки следует воспользоваться приложением AVaRICE - промежуточным звеном между железом AVR Dragon-а и отладчиком avr-gdb.

RS-232 pinout

DB-9 DB-25 Name 8P8C Dir Color 1 DCD 8 (бел) in black 2 RXD 6 (желт) in brown 3 TXD 3 (черн) out red 4 DTR 2 (ор) out orange 5 GND 5 (зел) pow yellow 6 DSR 1 (син) in green 7 RTS 4 (крас) out blue 8 CTS 7 (кор) in purple 9 RI in white Cisco cable Name 8P8C Color DB-9f CTS 1 Black 8 DSR 2 Brown 6 RXD 3 Red 2 GND 4 Orange 5 GND 5 Yellow 5 TXD 6 Green 3 DTR 7 Blue 4 RTS 8 Gray 7

Inex PX-200

PICkit2 совместимый программатор. Скачать исходный код консольного приложения для posix совместимых систем можно с официального сайта Microchip. Распакуем полученный код и соберём его командой make linux. Для возможности работы из под обычного юзера пропишем правило для udev #/etc/udev/rules.d/77-pickit.rules SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0033", GROUP="usb", SYMLINK+="pickit2" И добавим вашего пользователя в группу usb: sudo adduser your_login usb Возможно потребуется обновление программного обеспечения программатора: ./pk2cmd -D PK2V023200.hex

AT команды GSM модемов

PIN-код Если SIM-карта защищена PIN-кодом, после включения следует его “ввести” AT+CPIN="0000" Voice режим Для перехода в голосовой режим выполните команду: AT+FCLASS=8 После этого можно набирать номер ATD8911xxxxxxx; Обратите внимание на точку с запятой в конце номера. Она указывает, что должен быть произведён именно голосовой вызов. Ссылки по теме http://en.wikipedia.org/wiki/Voice_modem_command_set http://en.wikipedia.org/wiki/Hayes_command_set http://doc.qt.nokia.com/qtopia4.1/atcommands.html http://www.smssolutions.net/tutorials/gsm/receivesmsat/ AnyData CDMA Голосовой вызов: AT+CDV+7911xxxxxxx

LPC2368 SSP init as SPI

void sspInit(void) { // SSP1 (SPI) init sequense PCONP |= (1<<10); // PCSSP1 - power on PINSEL0 |= (2<<(7*2)) | (2<<(8*2)) | (2<<(9*2)) | (2<<(6*2)); // configure SPI1 pinouts // Serial Clock Rate: PCLK/CPSDVSR SSP1CR1 = 0x0 ; // disable SSP, must be off during changes SSP1CR0 = (8-1); // | (1<<6) /* CPOL */ | (1<<7) /* CPHA */; // | SSP_CR0_CPOL | SSP_CR0_CPHA; // DataSizeSelect=8, CPOL=1,CPHA=1 SSP1CPSR = 8; // SPICLK = PCLK/8 = 18MHz/8 = 2.

LPC2368 UART init

void uartInit(unsigned long baudrate) { /*------------------------------------------------ Setup serial port registers. ------------------------------------------------*/ PCONP |= (1<<3); // PCUART0 UART0 power/clock control bit. PINSEL0 |= (1<<(2*2)) | (1<<(2*3)); /* Enable TXD0, RXD0 */ U0LCR = 0x03; /* 8 bits, no Parity, 1 Stop bit */ U0IER = 0; /* Disable UART1 Interrupts */ U0FCR = 0x07; unsigned long DLreload; DLreload = ((Fpclk / 16UL) + (baudrate-1)) / baudrate; U0LCR |= 0x80; /* Set DLAB */ U0DLL = DLreload; U0DLM = (DLreload >> 8); U0LCR &= ~0x80; /* Clear DLAB */ } char uartGetc(void) { while (!

LinkBell

Протокол LinkBell предназначен для организации передачи небольших объёмов информации в сетях устройств, содержащих в своём составе микроконтроллеры и компьютеры.

ModBus

Modbus — коммуникационный протокол, основанный на master-slave архитектуре. Разработан фирмой Modicon для использования в контроллерах с программируемой логикой (PLC). Стал стандартом де-факто в промышленности и широко применяется для организации связи промышленного электронного оборудования. Использует для передачи данных последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP. В настоящее время поддерживается некоммерческой организацией Modbus-IDA. (Материал из Википедии)

SPI to UART

Запись в TX FIFO Байт 0: Dir 7 6 5 4 3 2 1 0 DI 1 x x x x x x x DO tx_free 3 2 1 0 rx_ready 3 2 1 0 Далее передаются байты данных, в количестве не более чем tx_free. Байт N: Dir 7 6 5 4 3 2 1 0 DI data 7 6 5 4 3 2 1 0 DO tx_free 3 2 1 0 x x x x Чтение из RX FIFO Байт 0:

Atari pinouts

Monitor connection Для подключения к телевизору через “тюльпанчики” соединяем: Вывод 4 (композитный сигнал) и вывод 2 (земля) с желтым “тюльпанчиком”. Вывод 3 (звук моно) и вывод 2 (земля) с белым “тюльпанчиком”. Я купил обычный аудио кабель с “тюльпанчиками” срезал одну часть, и подключил через него. DIN 5 female * * * * * * * ******* * * * Audio output * 3 1 * Composite luminance * * * * Composite chroma * 5 4 * Composite video (not available * * on XL models) * 2 * * * Ground http://www.

PS/2

Pinout Pin Signal 1 Data 2 Reserved 3 Ground 4 + 5 V dc 5 Clock 6 Reserved Эта же распиновка справедлива и для PS/2 клавиатуры. Links The PS/2 Mouse Interface The PS/2 Mouse/Keyboard Protocol Библиотека для обработки протокола на MCU AVR.

ARM Toolchain

Toolchain - набор необходимых пакетов программ для компиляции и сборки исполняемого кода из исходных текстов программ. Может дополнятся отладочными средствами. Для встраиваемых систем сюда же может входить программно-аппаратный комплекс загрузки бинарного кода в устройство. https://launchpad.net/gcc-arm-embedded Pre-built GNU toolchain from ARM Cortex-M & Cortex-R processors (Cortex-M0/M0+/M3/M4/M7, Cortex-R4/R5/R7). [[http://yagarto.de/|Yagarto]] и [[http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm|WinArm]] пресобранные пакеты для пользователей Windows. Lite releases no longer available =( [[http://www.codesourcery.com/gnu_toolchains/arm|CodeSourcery]] - наиболее развитой пакет на настоящий момент. Есть бинарные пакеты для различных ОС.

AT90USB162

Кристаллы поставляются прошитыми загрузчиком, который позволяет программировать контроллер через интерфейс USB. FLIP tool (TODO нужна актуальная ссылка). http://dfu-programmer.sourceforge.net/ (TODO проверить). При использовании FLIP под линукс возможно понадобится дополнительно указать где расположены устройства USB: export USB_DEVFS_PATH=/dev/bus/usb

Color LCD panel LM-CC53-22NTS

:!: Приведённая информация составлена из разрозненных данных и может быть неверна. Подсветка: Вывод Цвет Название Описание 1 черн. GND 2 крас. +Vcc 3 син. CTRL# Backlight on GND 4 сер. GND Bright :?: 5 сер. ? Bright :?: Дисплей: Вывод Цвет Название Описание 1 зел.

LCD

STE2007 контроллер применяемый в монохромных дисплеях устанавливаемых в бюджетные телефоны Nokia. H018IN01 цветной дисплей с поддержкой SPI. LM-CC53-22NTS цветная TFT панель. Сборная информация. LM211 монохромная бесконтроллерная LCD панель. OLED 96x64 цветной OLED дисплей. ST7565 ST7637 дисплей и фоторамки-брелка.

Objdump

Команда objdump входит в состав GCC и позволяет исследовать объектный (*.o, *.a, *.so, *.elf) файл сгенерированный компилятором/линковщиком GCC. Для разбора объектных файлов собранных под другие платформы используйте соответствующие команды из состава кросскомпилятора. Например: avr-objdump, arm-none-eabi-objdump. Примеры использования: objdump -t file.o - посмотреть таблицу символов. ToDo

SIM300D

Модуль GSM модем/телефон для встраивания в устройства. Datasheet Кратко о командах ATZ - сброс модема AT+CREG? - возвращает состояние регистрации в сети AT+CSQ - мощность/качество сигнала AT+CMGF=1 - включить текстовый режим передачи SMS AT+CMGS="+7911xxxxxxx",145 - отправка сообщения (завершается Ctrl-Z (0x1A))

STM8

Шаблоны для сборки под Linux: https://bitbucket.org/plumbum/stm8templates stm8flash https://github.com/vdudouyt/stm8flash - флешер поддерживающий ST-Link/ST-Link V2 Залить прошивку stm8flash -c stlink -p stm8l150 -w blinky.bin Считать eeprom stm8flash -c stlink -p stm8l150 -s 4000 -r eeprom.bin -b 1024 Считать OPT байты можно, но читать нужно непременно 256 байт, иначе магия не работает: stm8flash -c stlinkv2 -p stm8s105 -s 4800 -r opt.bin -b 256 После этого, можно байты отредактировать и записать обратно.

WIZ120SR

Шлюзовой модуль нового поколения, осуществляющий преобразование протоколов RS-232 <-> TCP/IP. Отличительной особенностью WIZ120SR от популярного моста WIZ100SR является поддержка двух последовательных портов, а не одного. Модуль построен на базе микросхемы W5100 со встроенным блоком физического уровня PHY и на базе ARM микроконтроллера STM32F103C8T6 на основе ядра Cortex-M3. Последнее обстоятельство открывает широкий простор для творчества ;-) Подробно о модуле Распиновка модуля MCU Func Name JP1 Pin Name JP2 MCU Func +3.

nRF24L01 Радиомодули

nRF24L01 - однокристальный трансивер компании Nordic Semiconductor для диапазона частот 2.4 ГГц со встроенным протокольным процессором (Enhanced ShockBurst™). ИС разработана для сверхмаломощных приложений беспроводной связи. nRF24L01 рассчитан на работу в используемом по всему миру ISM диапазоне частот 2.400…2.4835 ГГц. Для получения завершенной РЧ системы передачи данных nRF24L01 необходимо дополнить микроконтроллером и несколькими внешними пассивными компонентами. nRF24L01 конфигурируется и управляется через последовательный интерфейс SPI. Данный интерфейс предоставляет доступ к внутренним конфигурационным регистрам в любом режиме работы микросхемы.

Аппаратные средства

Здесь представлены аппаратные и программно-аппаратные средства разработки электроники. Смотрите так же раздел программных средств. avrdragon ch341a flashrom inex-px-200 j-link lpc-link silabs-c8051-sdcc silabs-ec2-driver-linux versaloon

Модуль трансивера TR24A

Модули TR24A - ультра дешёвое решение((в районе 100 рублей)) для беспроводного обмена данными между малопотребляющими устройствами на расстояниях порядка 50-100м((Реально - меньше. Сейчас мне удалось получить неустойчивую связь на расстоянии 6м через бетонную стену. На форуме ixbt добились 20 метров по прямой. Модули построены на базе однокристального трансивера EM198810. диапазон частот: 2400MHz…2482MHz количество каналов: 81 каналов чувствительность: −85dBm…-80dBm IIP3: −14dBm…-11dBm максимальный входной уровень: +10dBm выходная мощность: +2dBm скорость данных: 1Mbps диапазон напряжения питания: 2.