С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я тут платку ZX FDD Emulator развел для себя, может кому-нибудь еще пригодится: https://github.com/andykarpov/zx-fdd-emulator-pcb/
- - - Добавлено - - -
Только разъем для micro SD карточки взял первый попавшийся в Eagle, это Molex 49225-0821, вероятно это не самый дешевый разъем К тому же он перевернутый, ну то есть карточка вставляется в него вверх ногами. Нужно поискать что-то попроще, есть может у кого что-то более-менее распространенное / китайское в виде библиотеки для Eagle?
UPD: Версию с разъемом molex перенес в отдельный бранч, текущая версия в master - с другим слотом для SD-карточки.
Последний раз редактировалось andykarpov; 12.03.2017 в 16:38.
Github: https://github.com/andykarpov/
А может не разъём? Может модуль? В смысле сейчас цена модуля дешевле, чем цена разъёма.
Шаг выводов у них стандартный, цоколёвка правда бывает разной... но можно взять за основу которые подешевле или развести сразу под две модели (покупай любую и впаивай/приклеивай)
Модули все разные, размеры разные, распиновка тоже, в общем непонятно, универсального стандарта нет.
В репозитарий добавил новую версию платы, micro SD карточка другая, добавил 6-контактный разъем SPI для SD-модуля, но его все равно прийдется паять на проводках. Еще забыл 2 pull-up резистора на i2c шину, добавил в схему.
В любом случае - исходники платы открыты, можно брать и править под себя
Теоретически, если пожертвовать крепежными отверстиями, можно и полноразмерную SD-карточку приделать.
Github: https://github.com/andykarpov/
Приехали платки v1.0 и разъемы molex для sd-карточки, спаял первую ревизию платы.
Нашлось сразу много мелких косяков:
1) если в качестве разъема для дисковода использовать shrouded header - ему не хватает буквально полтора миллиметра, чтобы встать нормально, мешается 3.3v регулятор. пришлось сам разъем снизу немного подпилить надфилем в этом месте
2) такая же история с разъемом для ISP, обычные pin headers встают без проблем.UPD: все норм становится, если разъем для SD-карты паять первым
3) посадочное место под подстроечный резистор не соответствует расстоянию между выводами подстроечника, имеющегося в наличии. мелочь, а неприятно
4) отсутствие pull-up резисторов на i2c шине, пока хз, насколько это критично и будет ли работать на внутренних подтяжках atmega328UPD: не критично, хватает подтяжек на стороне атмеги.
5) порядок подключения дисплея к выводам pcf8574 отличается от порядка, принятого в китайских адаптерах
6) перемычки для выбора адреса pcf8574 не работают в открытом состоянии, потому что нет подтяжек. будет работать, только если все они замкнуты. соответственно, i2c адрес будет 0x20.
Завести текущую версию проекта пока полностью не получилось:
1) была попытка указать адрес и порядок пинов в LCDModule.h, но потом выяснилось, что в коде используется только LCDEX_ADDR, а остальные дефайны не используются, работа с i2c дисплеем захардкожена.
2) переписал LCDModule.h и LCDModule.cpp на использование библиотеки LiquidCrysyal_I2C, в конструктор которой можно передать в качестве аргументов порядок пинов
3) после чего было обнаружено, что текущая версия Arduino IDE 1.8.1 как-то не так интерпретирует main() - он просто не работает. пришлось int main() заменить на void loop() и добавить void setup().
4) после этого платка завелась, на экране отображается список файлов, по кнопке энкодера можно монтировать и отмонтировать образ
5) но сам энкодер не хочет работать по какой-то причине. после того, как его покрутить - все зависает намертво.
вот с этим пунктом, если можно - дайте, плз, совет. может энкодер какой-то не такой? или что-то можно подкрутить в коде?
Все завелось, версия ПО для ревизии платы 1.0: https://github.com/andykarpov/ZX_FDD_Emulator
Последний раз редактировалось andykarpov; 14.04.2017 в 15:20.
Github: https://github.com/andykarpov/
Резисторы есть в клавиатуре
Захардкожены только датапины, остальные можно менять, если нужно, могу допилить эту часть
Весьма странно, я проверял на всех версиях, вроде проблем с этим не было.
возможно подключенная библиотека или еще что-то использует те прерывания, которые повешены на энкодер.
Github: https://github.com/andykarpov/
Ой, это я с эмулятором клавиатуры попутал :-D
PS: а какие именно пины нужно переставить? А то я там что-то в коде уже потерялся, давно эту библиотеку писал...
PS2: предлагаю попробовать вот такой вариант функции отправки данный в экстендер
Код:void twi_send_byte(unsigned char data) { twi_start(LCDEX_ADDR); unsigned char data_out = 0; if(data & 16) data_out |= _BV(LCDEX_D4); if(data & 32) data_out |= _BV(LCDEX_D5); if(data & 64) data_out |= _BV(LCDEX_D6); if(data & 128) data_out |= _BV(LCDEX_D7); TWDR = data | _BV(LCDEX_LIGHT & light_val); //temporary TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); twi_stop(); }
Последний раз редактировалось EvgenRU; 09.04.2017 в 18:24.
Кусок не работает.
В нет, как минимум, перестановки остальных значащих битов (RS,RW,EN), + мы инициализируем data_out, но при этом передаем все равно data
Ну и непонятно откуда взявшаяся переменная light_val.
Github: https://github.com/andykarpov/
Да, что-то я поторопился
light_val определена какКод:void twi_send_byte(unsigned char data) { twi_start(LCDEX_ADDR); unsigned char data_out = 0; if(data & 16) data_out |= _BV(LCDEX_D4); if(data & 32) data_out |= _BV(LCDEX_D5); if(data & 64) data_out |= _BV(LCDEX_D6); if(data & 128) data_out |= _BV(LCDEX_D7); TWDR = data_out | _BV(LCDEX_LIGHT & light_val); //temporary TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); twi_stop(); }
uint8_t light_val = LCDEX_LIGHT;
в функции включения подсветки ей присваивается light_val = LCDEX_LIGHT;
а в выключении ноль, что вполне нормально, т.е. этот пин можно спокойно переставлять.
в крайнем случае, чтобы всё время светилась можно
вместо _BV(LCDEX_LIGHT & light_val)
написать _BV(LCDEX_LIGHT);
(RS,RW,EN) не нужно переставлять, т.к. они определены в дефайне
и везде заданы как data |= _BV(LCDEX_EN); и т.д. т.е. берется номер бита и преобразуется в значение.
UPD: совсем забыл еще, что в дате могут быть другие данные
тогда переделаю всё библиотеку в ближайшие 2-3 дня....
Последний раз редактировалось EvgenRU; 10.04.2017 в 00:52.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)