Программирование Arduino, оживление микроэвм Электроника МК-90, аппаратный хакинг.
30.09.2009
SMPReaderUSB в корпусе
Светодиод чтения записи - двухцветный, т.е. в одном корпусе сразу два кристалла, три вывода, общий катод. Очень удобно - не надо сверлить лишнюю дырку. А по смыслу - либо чтение, либо запись - одновременно не бывает ;)
Подумываю о печатной плате, а вдруг все-таки кому-то понадобится?
28.09.2009
Подделка под Arduino
Я попросил фотки, и... каково же было мое удивление:
Как вы сами уже поняли - это не Arduino Nano v.3, хотя на ней это "написано" (перефразируя известную фразу - гетинакс все стерпит). Вот так должна выглядеть настоящая:
Поэтому, напоминаю еще раз:
Arduino - зарегистрированная торговая марка, и хотя вся инженерная документация на нее открыта, кто угодно лепить это название на платы не имеет права. Если авторы проекта Arduino делегируют права на изготовление партии плат тем или иным товарищам, то там обязательно есть серия требований, в том числе: определенное схемотехническое решение, доступная документация, маска темно-синего цвета, на шелкографии - адрес веб-сайта проекта, который ее изготовил.
С таким грубым нарушением я сталкиваюсь первый раз. Причем непонятно - то ли авторы этой платы нарушили права нарочно, то ли по банальному незнанию, то ли по российской национальной привычке "авось и так сойдет". Честно говоря, в любом случае испытываю легкий стыд за нацию. Логично было бы такое ожидать от китайцев... Хотя, страна-изготовитель на плате не указана, не так ли?
Настоятельно рекомендую покупать Arduino в тех магазинах, названия и ссылки которых вынесены на страницу arduino.cc/en/Main/Buy - по крайней мере, это является гарантией подлинности. Обращаю внимание, что в России - это пока только Linuxcenter.ru.
Только что проверил поступления в их раздел "свободные микроконтроллеры Arduino", и с удовлетворением хочу заметить, что недавно туда завезли партию самых настоящих Arduino:
1. Arduino Duemilanova с процессором ATmega328 (32К памяти):
2. Arduino Mega с ATmega1280 (128К памяти):
3. Arduino Nano v.2.2 c ATmega168 (16К памяти):
Правда, там не супердешево. Но тут уж выбор за вами - ибо как гласило объявление, вывешенное в одной фирме - Мы можем обслужить вас быстро, качественно и недорого, выбирайте любые два из трех. :)
25.09.2009
Продается МК-90
Если мой блог читают все те, кто меня мучительно выспрашивал о том, у кого можно купить - вот ваш шанс ;)
[[Ссылка на аукцион]] (заканчивается 07.10.2009 в 9 часов утра).
UPD: аукцион закончен, калькулятор уходит за 22100 рублей
24.09.2009
bitlash: интерпретатор для Arduino
По мере возможностей, расскажу про них под тегом shell.
bitlash
Автор: Bill Roy
Сайт проекта: bitlash.net
Лицензия: LGPL 2.1
Время первого упоминания: октябрь 2008 г.
Для начала, надо скачать с сайта проекта файлы bitlash, которые оформлены пользовательской библиотекой Arduino. Текущая версия - 1.0RC2, с предварительной поддержкой Arduino Mega - как видите, проект развивается ;)
#include "bitlash.h"
void setup(void) { initBitlash(57600); }
void loop(void) { runBitlash(); }
Размер скетча - 13,5 Кбайт, следовательно загружать требуется в ATmega168 или ATmega328P.
После коннекта можно полюбоваться приглашением, а затем набрать help:
> a=2;b=3;c=(a+b)/2
> print c
2
the light is on
>
bitlash поддерживает макросы. Макрос - это именованная последовательность команд, например:
> toggle13:="d13=!d13;delay(100)"
saved
>
>toggle13
..,так и в background:
>run toggle13
>ps
0: toggle13
>stop 0
>while 1:toggle13
..., то прервать ее можно по Ctrl-C.
Специальные макро с именем startup выполняется при старте программы:
> startup:="print(1,2,3)"
> boot
bitlash v0.99z here!...
1 2 3
>
а специальное макро prompt изменяет системное приглашение:
> prompt:="print millis,;print\"$\","
saved
596139$ a =1
604209$ a =1
606905$
> peep
E000: t13\ d13= !d13 ;del ay(1 00)\ star tup\ prin t("R unni ng b link -13 demo - p
E040: ress ^C" ); w hile 1:t 13\. .... .... .... .... .... .... .... .... .... ....
E080: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
E0C0: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
E100: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
E140: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
E180: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
E1C0: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
22.09.2009
EDuino
Процессор: ATmega168/328
Тактовая частота: 16 МГц
Совместимость с Shield-платами: нет
Совместимость с ArduinoIDE: есть
Домашняя страница проекта: embeddeddreams.com/site/2009/07/29/eduino/
Дата первого упоминания: 29.07.2009
Естественно, автор не мог не разработать версию для макетки (bread board), EDuino-B:
Креативно, не так ли? ;)
А вот так он смотрится в макетке:
Файлы проекта:
Материалы проекта лицензированы под cc-sa 3.0, как и мой блог ;)
20.09.2009
Разбор калькулятора МК-85
Назначение микросхем, слева направо:
- Т36ВМ1-2 (КА1013ВМ1) - микропроцессорное ядро со встроенными контроллерами памяти и клавиатуры, watchdog, супервизор питания, 15-разрядный порт (на корпусе не хватило одного вывода ;), управляемый генератор, последовательный порт
- Т36РЕ1-2 (КА1013РЕ1) - ПЗУ 16К х 8 (или 32? мнения расходятся ;)
- Т36РУ1-2 (КА1013РУ1) - ОЗУ 2К х 8, статическое
- Т36ВГ1-2 (КА1013ВГ2) - контроллер ЖК-дисплея (подключался через последовательный порт).
Свободные посадочные места - для двух дополнительных микросхем ОЗУ, таким образом общий объем наращивался до 6Кбайт.
Точно так же ЖКИ-дисплей соединяется с процессорной платой:
Больше всего меня восхитил этот элемент на плате:
А вот расположение элементов на плате (спасибо пользователю Fuseoppl):
Итак, что еще почитать?..
- Начальные сведения, включая скан руководства, можно найти на заброшенном в 2005-м году mk85.narod.ru.
- Фантастические апгрейды - 32Кбайта памяти, замена ROM, добавление шины I2C, а также ремонт характерных неисправностей - на польском сайте mk85.republika.pl
- Всеобъемлющий анализ аппаратного и программного обеспечения (включая то, как программировать на ассемблере), а также эмулятор - на сайте Piotr Piatek-a.
- История МК-85 опубликована на сайте Виртуальный компьютерный музей.
- Полная галерея фотоматериалов, в том числе из данной статьи, у меня в picasa-альбоме Электроника-85
В статье использованы материалы из Википедии - свободной энциклопедии. Отдельная благодарность - за иллюстрации - пользователям SysCat (Роман Широков), Fuseoppl.
19.09.2009
Прошел год
Прошел ровно год с момента попадания в мои руки Электроники МК-90.
Ровно год - с того момента, как я, подобно "истинному" программисту, с презрением относился к аппаратным проблемам.
Год назад я понятия не имел, что из себя представляет семейство МК ATmega и Arduino, что такое за шина I2C и 1-Wire, почему светодиоды надо питать от какого-то непонятного ШИМ, как нарисовать схему и развести печатную плату, наконец – чем логика КМОП отличается от ТТЛ и тем более ТТЛШ.
Не скрою – я и до сих пор не уверен, что понимаю это правильно, но мне удалось кое в чем продвинуться, и даже поделиться накопленным опытом с моими дорогими читателями ;)
Пользуясь случаем, хочу поблагодарить за это Диму Девяткина. Именно ему пришла в голову идея сделать мне такой щедрый подарок, и вот результат - вероятно, мне уже никогда не стать таким, как я был прежде... :)
16.09.2009
Arduino Mini в LinuxCenter.ru
11.09.2009
ATmega644PA
Приятно, что вместо прекращения выпуска и взвинчивания цен на модели чипов, которым исполнилось полтора года (как это делает, например, Infineon), ATMEL совершенствует старые.
07.09.2009
Тестер микросхем
Как только я правильно написал скетч, светодиоды весело замигали:
/* K561TM2 1 | Q1 2 | Q1` 3 | C1 4 | R1 5 | D1 7 | GND 9 | D2 10 | R2 11 | C2 12 | Q2` 13 | Q2 14 | Vcc */ #define pinC 2 #define pinR 3 #define pinD 4 #define pinS 5 void setup() { pinMode(pinC,OUTPUT); digitalWrite(pinC,HIGH); pinMode(pinR,OUTPUT); digitalWrite(pinR,LOW); pinMode(pinD,OUTPUT); digitalWrite(pinD,LOW); pinMode(pinS,OUTPUT); digitalWrite(pinS,LOW); } void loop() { digitalWrite(pinD,LOW); digitalWrite(pinC,LOW); delay(2); digitalWrite(pinC,HIGH); delay(500); digitalWrite(pinD,HIGH); digitalWrite(pinC,LOW); delay(2); digitalWrite(pinC,HIGH); delay(500); }
Помигать также можно и через R/S входы, если заменить в предыдущем примере тело loop:
void loop() { digitalWrite(pinR,HIGH); digitalWrite(pinS,LOW); delay(500); digitalWrite(pinR,LOW); digitalWrite(pinS,HIGH); delay(500); }
(как и все схемы в моем блоге - кликабельно для увеличения)
Продолжение поисков обязательно следует...