а с 42 мегагерцами на тинике - перебора - точно нет? это же более чем в два раза выше его максимальной паспортной тактовой?
а с 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
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Имелось ввиду наверное 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
Последний раз редактировалось caro; 12.09.2010 в 08:13.
Лисицын Василий Николаеви, про обработку звука для гитары можно плз по подробней?
Именно 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.
Последний раз редактировалось Lisitsin; 12.09.2010 в 18:55.
Не будет, я проверял.Сообщение от Лисицын Василий Николаеви
При таком турбировании ATTiny (хотя, я честно говоря не сторонник такого насилия ),
достаточно будет выделить на буфер 64 ячейки ОЗУ, а старшие два бита адреса отрабатывать в прерывании.
Тем более, что кроме стека, ОЗУ может понадобится и для других переменных.
Не думаю, что 32 регистров общего назначения хватит на все цели.
Так это пишется:Сообщение от Лисицын Василий Николаеви
Код:sbis PINB,6 ;- A14 and BUFI,COLOMN6 sbis PINB,7 ;- A15 and BUFI,COLOMN7
Последний раз редактировалось caro; 14.09.2010 в 07:25.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)