а с 42 мегагерцами на тинике - перебора - точно нет? это же более чем в два раза выше его максимальной паспортной тактовой?
Вид для печати
а с 42 мегагерцами на тинике - перебора - точно нет? это же более чем в два раза выше его максимальной паспортной тактовой?
Имелось ввиду наверное 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 у меня сначала вход, а когда отвечаю центральному процессору - делаю его выходом.
Забыл еще про один момент. Поскольку в процедуре обработки прерывания используется команда ADD, изменяющая состояние регистра статуса МК, в начале процедуры необходимо сохранить статус, в конце восстановить.
На счет обьема ОЗУ, вы так и не ответили или не заметили :)
Я потому и перешел на МЕГА48, поскольку в ней 512 байт ОЗУ, что хватает для формирования полной таблицы скан-кодов (256 байт).
Спасибо. Статус сохраню, согласен. Насчёт ОЗУ - прийдётся думать. Дело сложное. Возможно, для 128 параметров запроса можно использовать 128 ячеек, а остальные 4 вертикальные клавиши корректировать. Можно использовать незадействованные регистры ввода-вывода. Насчёт стека: а можно, интересно, располагать его в пространстве ввода-вывода?
---------- Post added at 13:23 ---------- Previous post was at 13:04 ----------
Попробовал в AVRStudio стек сунуть в зарезервированные ячейки пространства ввода-вывода. Отрабатывает. Как будет в железе - пока не знаю.
Есть мысль сделать так: стек отправляем в пространство ввода-вывода. 128 ячеек ОЗУ используем для индикации состояния 7 вертикальных линий клавиатуры. Жля оставшихся 5 клавиш отводим дополнительный регистр (COLOMN7), в котором нажатие будем отображать нулём. При коде сканирования >127 просто пишем: AND BIFI,COLOMN7.
Не будет, я проверял.Цитата:
Сообщение от Лисицын Василий Николаеви
При таком турбировании ATTiny (хотя, я честно говоря не сторонник такого насилия :) ),
достаточно будет выделить на буфер 64 ячейки ОЗУ, а старшие два бита адреса отрабатывать в прерывании.
Тем более, что кроме стека, ОЗУ может понадобится и для других переменных.
Не думаю, что 32 регистров общего назначения хватит на все цели.
Так это пишется:Цитата:
Сообщение от Лисицын Василий Николаеви
Код:sbis PINB,6 ;- A14
and BUFI,COLOMN6
sbis PINB,7 ;- A15
and BUFI,COLOMN7