...поэтому нужны полигоны земли.
Вид для печати
Хорошо, перерисую. Но у меня тестолит будет односторонний, с учетом на это и рисовал. На нижнем слое условно изобразил соединения для +Vcc.
---------- Post added at 12:25 ---------- Previous post was at 12:20 ----------
Шнурок PS/2 как подсоединять? На платке слева четыре дырдочки, чтобы запаять проводки шнура, и два отверстия для винтов с гайками, чтобы прижать хвост шнура к платке для жесткости.
Ewgeny7, Убьешь нескольких зайцев- стабильность в работе + более лучшая разводка + легче изготовление ЛУТ'ом .
Да и двухстронний текстолит не на столько дорог .
Тут заглянул на сайт ДНС и увидел что клав PS/2 извиняюсь за выражение "до жопы"
От дешевых, до дорогих. Посему проблему считаю высосали из пальца.
Другое дело хотелки, вот типа захотелось и все тут - полюбил клаву я, оказалась USBой.
Так ведь есть клавы с блютузом, я так полагаю скоро и его надо конвертор соображать, а то ведь тоже жизнь без клавы с блютузом не жизнь.
Ну это так, лирика.
Народу треба клавы слим-фактора, без дополнительных цифровых нумпадов.
Тут выбор уже резко сокращается. В Питере я таких вообще не нашел, только в Китаях, на Али.
Насчет блюпупов - ты имеешь в виду беспроводные? Так они должны работать на конвертере, по-идее. Ведь они тоже "представляются" как USB-HID устройства.
---------- Post added at 14:23 ---------- Previous post was at 14:02 ----------
http://savepic.su/5382447m.png
Что-то такое вот вырисовывается...
Снизу просто заливка металлизацией. Нижний слой - синий! Есть у меня такая неправильная привычка.
Лайка платки. Если кому надо, доводите ее до ума... Я пока же нарисую схемку.
Схема. Нарисовал в диптрейсе. Не люблю его, но что есть.
Вот вроде пример общения комп - ps2 клава: http://www.tayloredge.com/reference/...atkeyboard.pdf
Алсо, http://www.simandl.cz/stranky/elektr...keyboard_a.htm
Tronix, спасибо! Я нашел эту же статью "в оригинале" на www.computer-engineering.org
Курю тексты, всё читаемо, завтра начну реализовывать. Судя по всему, нужна полная эмуляция, чем и займусь.
---------- Post added at 23:39 ---------- Previous post was at 23:37 ----------
Попутно написал Камилю, какие именно команды использует он, чтобы уж наверняка было.
При инициализации вроде используются команды
0xFF - сброс
0xF0, 0x03 - установка 3 режима
0xF8 - все кнопки типа отжаты или что то вроде этого
В процессе работы
0xED, 0xLED_STATE - собственно управление светодиодами
Но еще не забывай, что на эти команды есть подтверждения
0xFE и 0xFA
Также можешь почитать этот талмут http://electronic-engineering.ch/mic...s/kbd_spec.pdf
---------- Post added at 08:52 ---------- Previous post was at 08:21 ----------
Тоесть все таки рюшечки и стразики. Уже типа шашечки или ехать не прокатывает.
А тогда и мне запилите плиз Блютуз клаву, тоже хочу со стразиками.
Было бы еще неплохо на плате сделать 4 дырки под провод для XT клавы. Или просто джампер/кнопку выбора выхода AT/XT. Если кнопку - то записывать настройки во влеш внутренюю микроконтроллера. Получился бы более универсальный девайс. Причем в прошивке не обязательно XT реализовывать, кому надо - тот допилит сам.
под процом желателен полигон земли, а плюс питания перенесите на другую сторону
Так и буду переносить туда-обратно...
Полигон питания под процем и земляной низ тут уже описывалось как вариант для разгона кристалла. Значит, на нормальных частотах будет работать тем более.
Оставь как счас .
Я не умер, просто долго не мог заняться.
Полную эмуляцию PS/2-девайса я не делал, ограничился тем, что конвертер дает отклики на запросы хостов и имитирует бурную деятельность. А также автоматом переключает раскладки сканкодов между 2 и 3 набором.
В результате, работа проверена на u8_Reverse, ZXMC, контроллер на Мега48 для отечественных ПК, ПентЭво, Спекки-2007.
На Фениксах стоит тот же ZXMC по сути. Проверить пока не могу, нет Феникса под рукой.
Но вроде как почти весь парк форумных компьютеров охватил.
Надо делать печатку, ожидаю прибытие партии STM32F105RBT6 из Китаев.
---------- Post added at 22:57 ---------- Previous post was at 22:54 ----------
Да, сырки отдам народу, но - позже. После причесывания и приведения в нестыдный вид.
---------- Post added at 23:23 ---------- Previous post was at 22:57 ----------
Проверил на Ленинград-2012 со штатным PS/2-контроллером. Тоже работает. Попробую воткнуть в ПЦ... :)
---------- Post added at 23:37 ---------- Previous post was at 23:23 ----------
Дохлые фашисты сказали - "годен" :)
http://savepic.net/6440609m.jpg
Обновил прошивку, сделал сигналы красивыми :)
Попутно убрал пару глюков.
Интересно наблюдать за поведением "хостов", микроконтроллеров АТМега в контроллерах клавиатуры Камиля.
http://savepic.net/6533578m.png
После отправки сигнала ED 02 (зажигание светика на клавиатуре) линия клока остается притянутой к земле. А после окончания "базара" контроллер периодически "пингует" линию клока. Зачем? Эта картинка с контроллера на Мега48 для Ленинграда-2012. Мега8515 с ZXMC шлет пинги аналогично. А Мега48 для Ориона-128 и прочих РКшек такого не делает.
---------- Post added at 18:03 ---------- Previous post was at 18:00 ----------
Следующим апгрейдом прошивки будет, вероятно, зажигание светиков на USB-клаве. Пока курю тему отправки данных в клавиатуру.
Ewgeny7, А че ты Saleae софтом не пользуешься?
Родной USbee - тормозной и глючный , да и в Saleae намного удобней.
Еще советую разные USB-клавиатуры погонять, там очень много сюрпризов бывает. Некоторые, если у них нет нажатых клавиш чтобы отдать пакет на опрос Interrupt EP, могут STALL прислать. Некоторые присылают 8 байт и все, некоторые присылают 8 байт и ZLP. В-общем, кладут на стандарт разнообразно, причем такое встречалось и на нонаме и на брендовых клавиатурах.
Ассортимент у меня невелик, к сожалению :(
Про разную работу клавиатур народ упоминал, на том же изиэлектрониксе.
Софт здесь
http://support.saleae.com/hc/en-us/articles/201589175
Но надо твое железо посмотреть, ибо там требуется доработка . Но не сложная.
Пин Wakeup отсоединить от GND и подтянуть к VDD через резистор ~2К .
Прошить еепром соответствующей прошивкой и залочить запись - пин WP посадить на GND.
http://s020.radikal.ru/i718/1503/9f/0277eb3e5960.jpg
http://s017.radikal.ru/i442/1503/7b/4c602bddcf80.jpg
http://s018.radikal.ru/i517/1503/f9/4bafe9314902.jpg
Код::020000040000FA
:10000000C025098138000000FFFFFFFFFFFFFFFF51
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:00000001FF
---------- Post added at 15:30 ---------- Previous post was at 14:27 ----------
http://s020.radikal.ru/i723/1503/03/549e8c8d9eee.jpg
http://s48.radikal.ru/i119/1503/1f/0917a1d880d1.jpg
http://s52.radikal.ru/i138/1503/6a/afbde178efa9.jpg
http://s017.radikal.ru/i415/1503/e8/240d51dd4fe3.jpg
http://i072.radikal.ru/1503/a8/dd4f4341657a.jpg
dosikus, у тебя есть живой проект на Кейле для образца понимания с FATFS через SPI на стм32ф1хх?
Третий день кувыркаюсь...
Что-то Кейл никак не может WORD и DWORD арифметику толком считать.
В отладчике шагаю по коду, и какая-то хрень вылезает...
Пробовал варианты, которые не требуют процессов дёрганья каждые 10 миллисекунд, не нравится мне это. В частности, привинчивал VINX_FS и сильно кастрированный, но легкий вариант от HiSER. Но везде, где идет арифметика между разными типами данных, улетаем в космос. На AVR оба варианта пашут без нареканий.
Неожиданные и непонятные грабли с STM32F103RBT6 + Keil 5.0
Многие начинают с подобного камня, а я вот иду своей дорогой, только сейчас добрался до 103-серии, после успешного юзания 105-ой и 407-ой.
В общем, проект в кейле компилируется как положено.
Камень в опциях выбран, хтал установлен, выбран файл stm32f10x_md.s в стартапе, в закладке программирования выбраны соответствующие алгоритмы под камушек.
Но - при прошивании сначала вываливается окно "internal error", после него - "target dll has ben canceled". И всё... С другими сериями камней такого небыло. Что это может быть? Сигналы SWDIO и SWCLK подключены правильно, на вкладке программатора при переключении JTAG/SW камень видится.
Можно я попробую сформулировать чайниковский вопрос по производительности STM32F4discovery?
Есть задача - сэмплить входной сигнал, что-то типа
for (i=0;i<1000;i++) buf[i]=GPIOx->IDR;
Какова достижимая производительность по количеству сэмплов?
Вот что я пробовал. На один из пинов входного порта подал 10Mhz с кварцевого генератора. Тестовая задача - "прожует" ли STM32F407 (168Mhz) такой сигнал:
while(1)
{ if ((GPIOE->IDR & 0x0100)) GPIOC->ODR |= GPIO_Pin_4;
else GPIOC->ODR =0;
}
То есть я просто по состоянию входного сигнала выставляю выходной pin. При достаточной производительности ожидаю что частота выходного сигнала будет равна частоте входного (меряю частотомером).
И тут сюрприз: при входном 10Mhz выходной сигнал всего 4 :-(
Меняю код:
if ((GPIOE->IDR & 0x0100)) GPIOC->ODR = 0xffff;
else GPIOC->ODR =0;
Частота уже 7.
---
А я то хотел сигнал сэмплить, да еще и по внешнему стробу....
Это я хочу чего-то космического или я что-то делаю не так?
А тактовая точно 168МГц? или по умолчанию, какие-нибудь 8МГц встроенного RC-генератора?
---------- Post added at 23:32 ---------- Previous post was at 23:28 ----------
Вообще же смотри в сторону DMA. Например, вот:
https://my.st.com/public/STe2ecommun...rentviews=4311
и два: http://roboforum.ru/forum2/topic13542.html
>А тактовая точно 168МГц?
Да, 8 генератор через PLM (типа 8 кварца/8*336/2)
> какие-нибудь 8МГц встроенного RC-генератора?
У этой RC на 16, но это не важно.
Про DMA можно попробовать, но сначала бы совет знатоков:
по внешнему стробу 10 MHz DMA сумеет GPIO->mem
Или хотя бы по 5 MHz ?
Насколько помню, выходные пины конфигурируются на разную скорость. На высоких скоростях фронты покруче, но и помех побольше. Может просто уровень не набегает.
А так было бы интересно сосчитать просто количество входных фронтов в 32-битном регистре за секунду. Должно быть 10 млн штук.
Поискал по теме и почему-то нет упоминания программы STM32CubeMX. Она очень сильно упрощает жизнь! На выходе получаем готовый шаблон программы под выбранный IDE (есть и Keil).
Вообщем похоже разобрался я. Прямая дорога мне в DMA. Гуру пишут что до 21Mhz получается.
А вот всё-равно засада.
Может ли STM32 использовать внешний строб для DMA?
Все найденные примеры умеют по внешнему стробу запускать DMA, который соответственно копирует N-ное число данных с GPIO в память.
При этом готовность данных на GPIO входах никак не отслеживается.
А вот как сделать чтобы DMA тактировалось внешним стробом - непонятно. Такое точно умеет DCMI интерфейс в STM32 (Pixel Clock), но у него полно ограничений и в моём случае он не подходит.
Упс, извини давно не заходил.
Актуально еще ?
У меня рабочее и FatFs R0.10c и PetitFatFs R0.03 на F0, правда только на SPI , зато с DMA .
Сейчас буду прикручивать : FatFs R0.11
На 103ем надо причесать .
У тебя скорей всего проблемы с _WORD_ACCESS читай здесь о конфигурации
http://elm-chan.org/fsw/ff/en/config.html
VINX_FS - выкинул на этапе изучения , не стоит оно того...
Гуру, посоветуйте чайнику куда копать:
Есть две библиотеки. Одна - StdPeriph USB (от USB простого хочу, CDC, то есть консольку). Вторая чья-то с FafFS для SD карты (SDIO). По отдельности обе работают на ура.
Вместе если USB не подключен - тоже на ура.
А вот если подключить USB то в функции f_mount на операторе
is (fs) {
в 90% случаев вылетает в HardFault
Отладчиком смотрел:
на одном и том же месте оператор LDR R1, [SP, #0x8] вызывает HardFault.
И адреса стека, и содержимое стека что при включенном USB что при выключенном - одинаковы.
Куда копать.......
- - - Добавлено - - -
Подробности : BusFault - Imprecise data access error has occurred
Чтобы это значило...
- - - Добавлено - - -
Вроде разобрался. Кто-то гадит мне переменную FatFs, указатель на cfs=FatFs[0] попадает на область кода (ROM) и попытка сделать cfs->fs_type = 0; заканчивается ай-ай-ай-ем.
Подскажите по CCM RAM:
1) можно ли всю её отъесть под переменные, или она еще для чего-то может быть нужна?
2) можно ли туда "класть" stack и heap ? Или есть какие-то соображения почему так не надо делать?
Vslav, Спасибо, мне как раз надо не скорость, а объем ОЗУ. Избавление от стека и кучи уже многое решает. Хотя у меня, конечно, объем занимаемого ОЗУ совсем не оптимизирован, но "лишние" 64K снимают все вопросы в принципе.