Важная информация

User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 69

Тема: БезWaitовый контроллер клавиатуры

  1. #31
    Moderator
    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а с 42 мегагерцами на тинике - перебора - точно нет? это же более чем в два раза выше его максимальной паспортной тактовой?
    Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
    Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
    ZX Evo 4Mb- в строю.
    Speccy2010 v1
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви
    Я подцепил к своему проекту стандартную клавиатуру от IBM. Эмулирую команду IN и получаю адекватный ответ от контроллера ATTiny2313 (тот, что работает у меня на частоте 42 МГц).
    Имелось ввиду наверное 24 МГц?

    Цитата Сообщение от Лисицын Василий Николаеви
    Скан-коды клавиатуры все вижу. Работаю по прерыванию INT. Схему проекта прилагаю.
    Честно говоря меня несколько удивило такое подключение ATTiny2313.
    Использование битов порта D и для работы с сигналами от PS/2 клавиатуры и для выдачи данных в порт клавиатуры несколько смущает.
    Да и опрос порта по INT0 мне не понятен, поскольку на этой же линии находится один из битов данных от клавиатуры.

    ---------- Post added at 09:29 ---------- Previous post was at 09:21 ----------

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Вот ещё soft:
    Есть вопросы по процедуре опроса порта клавиатуры:
    Код:
    ;*************** SUBROUTINES****************
    .ORG	0X01
    ;
    	IN	ZL,PINB		; 1 READ HIGH BYTE OF PORT ADDRESS        5
    	COM	ZL		; 2 PREPARING                             6
    	ADD	ZL,CONST5F	; 2 DATA ADDRESS                          7
    ; а почему не учитывается перенос в ZH при переполнении?
    ; имейте ввиду, что адрес сканирования может быть любой, от 00h до 0FEh,
    ; а не только 0FEh, 0FDh, 0FBh, 0F7h, 0EFh, 0DFh, 0BFh, 07Fh
    	LD	BUFI,Z		; 3 LOAD CURRENT PORT DATA                9
    ; в ATTiny2313 только 128 байт ОЗУ, а здесь требуется как минимум 256 байт,
    ; а с учетом стека и того больше
    	OUT	PORTD,BUFI	; 5 OUT CURRENT                          10
    	OUT	DDRD,CONSTFF	; 5 PORT DATA                            11
    	NOP			; 5 NOP1                                 12
    	OUT	PORTD,ZERO	; 6 RETURN PORTD DATA                    13
    ; надо бы дождаться конца импульса запроса порта клавиатуры
    	OUT	DDRD,DIRD	; 6 AND MAIN DIRECTION PORTD             14
    	STS	EIFR,CONSTFF	; 7 CLEAR INT0 FLAG                      16
    ; это лишнее, бит прерывания очищается автоматически.
    	RETI			; 8 RETURN                               20
    Последний раз редактировалось caro; 12.09.2010 в 08:13.

  4. #33
    Master
    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    698
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от balu_dark Посмотреть сообщение
    а с 42 мегагерцами на тинике - перебора - точно нет? это же более чем в два раза выше его максимальной паспортной тактовой?
    Работает как часы даже на 48 МГц. Я им звук электрогитары обрабатываю (24 бита 48 кГц) в реальном времени.

  5. #34
    Veteran Аватар для AHTuXPuCT
    Регистрация
    02.06.2009
    Адрес
    Искитим
    Сообщений
    1,275
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Лисицын Василий Николаеви, про обработку звука для гитары можно плз по подробней?

  6. #35
    Master
    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    698
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AHTuXPuCT Посмотреть сообщение
    Лисицын Василий Николаеви, про обработку звука для гитары можно плз по подробней?
    Можно.
    Вложения Вложения

  7. #36
    Master
    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    698
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro Посмотреть сообщение
    Имелось ввиду наверное 24 МГц?

    Честно говоря меня несколько удивило такое подключение ATTiny2313.
    Использование битов порта D и для работы с сигналами от PS/2 клавиатуры и для выдачи данных в порт клавиатуры несколько смущает.
    Да и опрос порта по INT0 мне не понятен, поскольку на этой же линии находится один из битов данных от клавиатуры.

    ---------- Post added at 09:29 ---------- Previous post was at 09:21 ----------

    Есть вопросы по процедуре опроса порта клавиатуры:
    Код:
    ;*************** SUBROUTINES****************
    .ORG	0X01
    ;
    	IN	ZL,PINB		; 1 READ HIGH BYTE OF PORT ADDRESS        5
    	COM	ZL		; 2 PREPARING                             6
    	ADD	ZL,CONST5F	; 2 DATA ADDRESS                          7
    ; а почему не учитывается перенос в ZH при переполнении?
    ; имейте ввиду, что адрес сканирования может быть любой, от 00h до 0FEh,
    ; а не только 0FEh, 0FDh, 0FBh, 0F7h, 0EFh, 0DFh, 0BFh, 07Fh
    	LD	BUFI,Z		; 3 LOAD CURRENT PORT DATA                9
    ; в ATTiny2313 только 128 байт ОЗУ, а здесь требуется как минимум 256 байт,
    ; а с учетом стека и того больше
    	OUT	PORTD,BUFI	; 5 OUT CURRENT                          10
    	OUT	DDRD,CONSTFF	; 5 PORT DATA                            11
    	NOP			; 5 NOP1                                 12
    	OUT	PORTD,ZERO	; 6 RETURN PORTD DATA                    13
    ; надо бы дождаться конца импульса запроса порта клавиатуры
    	OUT	DDRD,DIRD	; 6 AND MAIN DIRECTION PORTD             14
    	STS	EIFR,CONSTFF	; 7 CLEAR INT0 FLAG                      16
    ; это лишнее, бит прерывания очищается автоматически.
    	RETI			; 8 RETURN                               20
    Именно 42 (чорок два) МГц. Каждый бит порта D конфигурируется индивидуально (вход или выход) и проблем здесь у меня не возникло. Вот со сканированием - да, прийдётся подумать. Я думал, что только один бит устанавливается в ноль. Импульс запроса у меня - тот же сигнал, что и прерывание INT, и я его очень быстро сбрасываю при эмуляции команды IN, так что его хватает только на генерацию прерывания. Сброс флага уберу. Огромное спасибо.

    ---------- Post added at 11:20 ---------- Previous post was at 11:18 ----------

    INT0 у меня сначала вход, а когда отвечаю центральному процессору - делаю его выходом.

  8. #37
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забыл еще про один момент. Поскольку в процедуре обработки прерывания используется команда ADD, изменяющая состояние регистра статуса МК, в начале процедуры необходимо сохранить статус, в конце восстановить.
    На счет обьема ОЗУ, вы так и не ответили или не заметили
    Я потому и перешел на МЕГА48, поскольку в ней 512 байт ОЗУ, что хватает для формирования полной таблицы скан-кодов (256 байт).

  9. #38
    Master
    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    698
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro Посмотреть сообщение
    Забыл еще про один момент. Поскольку в процедуре обработки прерывания используется команда ADD, изменяющая состояние регистра статуса МК, в начале процедуры необходимо сохранить статус, в конце восстановить.
    На счет обьема ОЗУ, вы так и не ответили или не заметили
    Я потому и перешел на МЕГА48, поскольку в ней 512 байт ОЗУ, что хватает для формирования полной таблицы скан-кодов (256 байт).
    Спасибо. Статус сохраню, согласен. Насчёт ОЗУ - прийдётся думать. Дело сложное. Возможно, для 128 параметров запроса можно использовать 128 ячеек, а остальные 4 вертикальные клавиши корректировать. Можно использовать незадействованные регистры ввода-вывода. Насчёт стека: а можно, интересно, располагать его в пространстве ввода-вывода?

    ---------- Post added at 13:23 ---------- Previous post was at 13:04 ----------

    Попробовал в AVRStudio стек сунуть в зарезервированные ячейки пространства ввода-вывода. Отрабатывает. Как будет в железе - пока не знаю.

  10. #39
    Master
    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    698
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть мысль сделать так: стек отправляем в пространство ввода-вывода. 128 ячеек ОЗУ используем для индикации состояния 7 вертикальных линий клавиатуры. Жля оставшихся 5 клавиш отводим дополнительный регистр (COLOMN7), в котором нажатие будем отображать нулём. При коде сканирования >127 просто пишем: AND BIFI,COLOMN7.
    Последний раз редактировалось Lisitsin; 12.09.2010 в 18:55.

  11. #40
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви
    Попробовал в AVRStudio стек сунуть в зарезервированные ячейки пространства ввода-вывода. Отрабатывает. Как будет в железе - пока не знаю.
    Не будет, я проверял.
    При таком турбировании ATTiny (хотя, я честно говоря не сторонник такого насилия ),
    достаточно будет выделить на буфер 64 ячейки ОЗУ, а старшие два бита адреса отрабатывать в прерывании.
    Тем более, что кроме стека, ОЗУ может понадобится и для других переменных.
    Не думаю, что 32 регистров общего назначения хватит на все цели.

    Цитата Сообщение от Лисицын Василий Николаеви
    При коде сканирования >127 просто пишем: AND BUFI,COLOMN7.
    Так это пишется:
    Код:
    	sbis	PINB,6	;- A14
    	and	BUFI,COLOMN6
    	sbis	PINB,7	;- A15
    	and	BUFI,COLOMN7
    Последний раз редактировалось caro; 14.09.2010 в 07:25.

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 34
    Последнее: 24.11.2022, 16:05
  2. Корпуса и клавиатуры
    от Sonic в разделе Устройства ввода
    Ответов: 110
    Последнее: 07.10.2010, 22:27
  3. Ответов: 5
    Последнее: 10.03.2006, 22:04
  4. Контроллер клавиатуры для Скорпиона
    от Nikolaj Amosov (500:812/02.26) в разделе Scorpion
    Ответов: 1
    Последнее: 15.11.2005, 23:05
  5. Куплю контроллер ibm клавиатуры для скорпа!
    от sp0t в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 29.03.2005, 16:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •