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

User Tag List

Страница 11 из 24 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя
Показано с 101 по 110 из 231

Тема: PS/2 адаптер клавиатуры для Специалиста

  1. #101
    Activist
    Регистрация
    18.09.2009
    Адрес
    г. Витебск
    Сообщений
    499
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Может для посадочных мест под резисторы и диоды предусмотреть и альтернативу под smd ? Они дешевле, а то и задаром, если с дохлой платы смахнуть феном. Аналогично и для сборок. Но думаю, что никто не обидится, если и вовсе отказаться от объемных резисторов, сборок и диодов.
    Только забивать под 1206, так как на его место прилично ставится 0805 и меньше, а вот уже на 0805 красиво посадить 1206 трудновато. Да и тяжело вручную паять все что меньше 1206.

  2. #102
    Member
    Регистрация
    10.02.2012
    Адрес
    г. Челябинск
    Сообщений
    116
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vasily Посмотреть сообщение
    Только забивать под 1206, так как на его место прилично ставится 0805 и меньше, а вот уже на 0805 красиво посадить 1206 трудновато. Да и тяжело вручную паять все что меньше 1206.
    0805 нормально, а вот мельче - труднее.

  3. #103
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно и продублировать посадочные места под резисторы, конденсатор и диоды SMD исполнения. Повторяю они будут располагаться с обратной стороны платы. Там будут только выступать длинные выводы панельки под ВВ55. Вот такую нужно панельку. А лучше, чтоб наверняка можно было вставить на основную плату в панельку ВВ55 приобрести с удлинёнными выводами. Атмегу8 лучше сразу запаять, разъём для подключения программатора расположен с правой стороны платы.

  4. #104
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегодня сел на 30 минут за контроллер... и понял в чем дело. Я поставил подтягивающие резисторы на 8 ком и этого оказалось недостаточно. Слишком долго появляется единица, когда микроконтроллер отпускает землю. Я вставил в код прерывания NOP-ы и всё заработало.

    Завтра перепаяю резисторы и продолжу доводить до ума контроллер.

    UPD: Надо платы сделать, которые еще месяц назад обещал людям, так что в пятницу продолжу.
    Последний раз редактировалось vinxru; 31.01.2013 в 01:03.

  5. #105
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оптимизировал прерывание:

    - 16 таков при сканировании горизонталей. Ок!

    - 19 тактов при сканировании вертикалей. Плохо! Вероятность, что МК успеет среагировать 50%. То есть кнопка на тесте мерцает.

    Возможно, что не хватает всего одного такта! завтра еще подумаю.

    Я сделал компромиссный вариант.

    - 14 тактов при сканировании вертикалей F5-F12. Ок!

    - 21 такт при сканирвоании вертикалей F1-F4. Компьютер вообще не видит этих нажатий.

    НО! Все выше написанное относится к самому быстрому способу сканирования клавиатуры, который вряд ли используется где либо. BIOS и все игрушки, что я пробовал, работают в любом случае.

    Код:
    interrupt [EXT_INT0] void ext_int0() {
    #asm
    .EQU PIND  = $10
    .EQU DDRD  = $11
    .EQU PORTD = $12
    .EQU PINC  = $13
    .EQU DDRC  = $14
    .EQU PORTC = $15
    .EQU PINB  = $16
    .EQU DDRB  = $17
    .EQU PORTB = $18
            ; На входе R9  = 0
            ; На входе R29 = 2              
            ; Можно использовать регистры R9, R28
            
            ; Переводим PORTC в режим ввода
            OUT  DDRC, R9    ; 1 1
            
            ; Сохраняем флаги попозже, что бы увеличить дистанцию до команды чтения
            IN   R8, SREG    ; 1 2
    
            ; DDRB = c2b[PINC]; 
            IN   R28, PINC   ; 1 3   Убрал команду ANDI R28, 0x3F, но может случаиться, что без неё работать не будет
            CPI  R28, 0x3F   ; 1 4
            BRNE  _v12       ; 1/2 5
    
            ; Вариант 1 (не работаеют кнопки в столбцах F1..F4, если сканировать эти столбцы. Остальное ок.)
            OUT  DDRB, R9    ; 1 6   R9=0
            IN   R28, DDRD   ; 1 7
            ANDI R28, $CC    ; 1 8 Инфа передается по линиям 00110011, сбрасываем их в 0
            OUT  DDRD, R28   ; 1 9 
            IN   R28, PINB   ; 1 10
        	LDI  R29, 1      ; 1 11
        	LD   R9, Y       ; 2 13 Адрес 0x100+R28
        	OUT  DDRC, R9    ; 1 14
        	IN   R28, PIND   ; 1 15 Глюка нет, если заменить на PINB       
        	ORI  R28, $CC    ; 1 16 Инфа передается по линиям 00110011, поэтому маскируем остальные
        	LDI  R29, 2      ; 1 17
            LD   R28, Y      ; 2 19 Адрес 0x200+R28+192
        	OR   R28, R9     ; 1 20
        	OUT  DDRC, R28   ; 1 21
    
            ; Вариант 2 (мерцают все кнопки при сканировании столбцов. Сканирование строк ок.)
    ;        IN   R28, DDRD   ; 1 6
    ;        ANDI R28, $CC    ; 1 7 Инфа передается по линиям 00110011, сбрасываем их в 0
    ;        OUT  DDRD, R28   ; 1 8
    ;        OUT  DDRB, R9    ; 1 9   R9=0         
             ; DDRC = d2c[PIND & 0x33] | b2c[PINB]
    ;    	 IN   R28, PIND   ; 1 10 Глюка нет, если заменить на PINB       
    ;    	 ORI  R28, $CC    ; 1 11 Инфа передается по линиям 00110011, поэтому маскируем остальные
    ;        LD   R9, Y       ; 2 13 Адрес 0x200+R28+192        
    ;        IN   R28, PINB   ; 1 14
    ;    	 LDI  R29, 1      ; 1 15
    ;    	 LD   R28, Y      ; 2 17 Адрес 0x100+R28
    ;    	 OR   R28, R9     ; 1 18
    ;    	 OUT  DDRC, R28   ; 1 19
    ;        LDI  R29, 2
    
            ; Выход
            CLR  R9
            STS  _wrd, R9
            STS  _fl, R29
            OUT  SREG, R8
            RETI
    
    _v12:                   ; - 6 
            ; DDRB = c2b[PINC]; 
            LD   R9, Y      ; 2 8 Адрес 0x200+R28
            OUT  DDRB, R9   ; 1 9 
    
            ; DDRD = (DDRD & 0xCC) | c2d[PINC]; 
            SUBI R28, -64   ; 1 10 
            LD   R9, Y      ; 2 12 Адрес 0x200+R28+64
    
            IN   R28, DDRD  ; 1 13
            ANDI R28, $CC   ; 1 14 Инфа передается по линиям 00110011, поэтому зануляем их
            OR   R28, R9    ; 1 15
            OUT  DDRD, R28  ; 1 16 
    
            ; Выход
            CLR  R9
            SER  R28
            STS  _wrd, R28
            STS  _fl, R28
            OUT  SREG, R8
    #endasm
    }


    ---------- Post added at 22:58 ---------- Previous post was at 22:51 ----------

    Залипание кнопок само вылечилось...

  6. #106
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Засунул обработчик прерывания прямо в таблицу прерывания, сэкономил 2 такта. Но кнопка на тесте все равно мерцают.

    Еще один такт

    ---------- Post added at 18:06 ---------- Previous post was at 17:27 ----------

    14 и 17 тактов. И -2 такта за счет размещения обработчика прямо в таблице прерывания. Все ок!

    ---------- Post added at 18:10 ---------- Previous post was at 18:06 ----------

    Код:
    interrupt [EXT_INT0] void ext_int0() {
    #asm
    .EQU PIND  = $10
    .EQU DDRD  = $11
    .EQU PORTD = $12
    .EQU PINC  = $13
    .EQU DDRC  = $14
    .EQU PORTC = $15
    .EQU PINB  = $16
    .EQU DDRB  = $17
    .EQU PORTB = $18
            ; На входе R9  = 0
            ; На входе R29 = 2              
            ; Можно использовать регистры R8, R9, R28, R29
            
            ; Переводим PORTC в режим ввода
            OUT  DDRC, R9             ; 1 1
            
            ; Сохраняем флаги попозже, что бы увеличить дистанцию до команды чтения
            IN   R8, SREG             ; 1 2
    
            ; DDRB = c2b[PINC]; 
            IN   R28, PINC            ; 1 3  Убрал команду ANDI R28, 0x3F, но может случаиться, что без неё работать не будет
            CPI  R28, 0x3F            ; 1 4
            BRNE  _v2                 ; 1 5  Если был переход, то 2 такта
    
            OUT  DDRD, _PREPARED_DDRD ; 1 6  Сначала записываем DDRD, что бы увеличить дистанцию до команды чтения
            OUT  DDRB, R9             ; 1 7  R9 равен 0         
            ; DDRC = d2c[PIND & 0x33] | b2c[PINB]
        	IN   R28, PIND            ; 1 8  Глюка нет, если заменить на PINB       
        	ORI  R28, $CC             ; 1 9  Инфа передается по линиям 00110011, поэтому маскируем остальные
            LD   R9, Y                ; 2 11 Адрес 0x200+R28+192        
            IN   R28, PINB            ; 1 12
        	LDI  R29, 1               ; 1 13
        	LD   R28, Y               ; 2 15 Адрес 0x100+R28
        	OR   R28, R9              ; 1 16
        	OUT  DDRC, R28            ; 1 17
    
            ; Выход
            LDI  R29, 2
            CLR  R9
            STS  _wrd, R9
            STS  _fl, R29
            OUT  SREG, R8
            RETI
    
    _v2:    ; DDRB = c2b[PINC]; 
            LD   R9, Y                ; 2 8 Адрес 0x200+R28
            OUT  DDRB, R9             ; 1 9 
    
            ; DDRD = (DDRD & 0xCC) | c2d[PINC]; 
            SUBI R28, -64             ; 1 10 
            LD   R28, Y               ; 2 12 Адрес 0x200+R28+64
            OR   R28, _PREPARED_DDRD  ; 1 13
            OUT  DDRD, R28            ; 1 14 
    
            ; Выход
            CLR  R9
            SER  R28
            STS  _wrd, R28
            STS  _fl, R28
            OUT  SREG, R8
    #endasm
    }

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

  8. #107
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё прекрасно! Вопрос возник. А сколько занимает таблица перекодировки. Сколько раскладок можно хранить в памяти Атмеги8?

  9. #108
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Две настраиваемых. Хранятся в еепром. Одна таблица занимает 208 байт. Еепром обьемом 512 байт. И еще 2 дефолтных, которые можно скопировать в настраиваемые. Хранятся в основном ПЗУ.

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

    но если надо, могу сделать 10 таблиц

  10. #109
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю нужно две раскладки: кириллица и латиница. Переключение по Alt. Не знаю какое у тебя соответствие, а я в Специалисте на FPGA делал так:



    Русская раскладка:



    Кнопки ТЕСТ, РЕЖИМ, TURBO и NORMAL - чисто программно реализованные переключения в плисине и нам не пригодятся.
    Последний раз редактировалось fifan; 02.02.2013 в 21:37.

  11. #110
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Настрой пару раскладок с помощью этой программы, я её встрою в МК.
    Вложения Вложения
    Последний раз редактировалось vinxru; 03.02.2013 в 00:38.

Страница 11 из 24 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 153
    Последнее: 16.12.2021, 19:07
  2. Адаптер Z80->ZX-BUS
    от zx-kit в разделе Несортированное железо
    Ответов: 12
    Последнее: 05.10.2011, 11:35
  3. CD адаптер
    от alexsan в разделе БК-0010/0011
    Ответов: 2
    Последнее: 12.09.2011, 21:54
  4. Изучается спрос на плату для Специалиста
    от Павел Рябцов в разделе Барахолка (архив)
    Ответов: 109
    Последнее: 30.11.2010, 10:16
  5. Продается Лик (клон Специалиста)
    от KALDYH в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 20.02.2010, 14:29

Ваши права

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