Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

Непрочитано 15.02.2018, 10:11  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Клавиатура Mera-REFA KL-13 теряет 1 бит при передаче в Arduino

Клавиатура Mera-REFA KL-13 (вероятно от компьютера Mazovia 1016, Polish PC XT) подключена к arduino, за основу взял ps/2 и доработал его до стабильной работы

все клавиши определяются, но если зажать и держать, или же нажимать несколько раз одну клавишу - она определяется двумя или тремя последовательностями символов, а не одной. Причина этого один бит, который иногда отваливается вначале или в конце последовательноси символов.

Сейчас по прерыванию CHANGE считывается пришедшая информация
FALLING дает похожий результат, но ошибок больше
HIGH дает результат такой же как CHANGE
остальные виды прерываний показывают нули
Реклама:
__________________
Самое главное умение - умение радоваться жизни.

Последний раз редактировалось AVRkin; 09.03.2018 в 16:15.
AVRkin вне форума  
Непрочитано 15.02.2018, 13:50  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

Ничего, что я только на передачу байтов насчитал больше 2,5 мс, а сколько времени уходит на ваш красивый serial print (hex)?
makakus вне форума  
Непрочитано 15.02.2018, 16:07  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

В таком варианте ошибок меньше, но они тоже есть

Я не могу обойтись без вывода, т.к. нужно знать что прочла Arduino

PHP код:
int clockPin = 7;
int dataPin = 4;
byte data = B0;
int test = 0;
int counter = 0;
int numbits = 14;
String  a ;
int get ;

void setup() {
 pinMode(dataPin, INPUT);
 pinMode(clockPin, INPUT);
 Serial.begin(19200);
}

void loop() {
 if(digitalRead(clockPin) == LOW && test == 0 && counter ‹ numbits) {
   test = 1;
   data = data ›› 1;
   if(digitalRead(dataPin) == HIGH) {
     bitSet(data, 7);
   }
   counter++;
 }
 if(digitalRead(clockPin) == HIGH && test == 1) {
   test = 0;
 }

 if(counter ›= numbits) {
  Serial.print(data, BIN);
   data = B0;
   counter = 0;
 }      
} 
__________________
Самое главное умение - умение радоваться жизни.
AVRkin вне форума  
Непрочитано 16.02.2018, 00:25  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

А давайте и я вам покидаю своих текстов?
Вот обработка в основном цикле:
Код:
	sbrc	flags,KEYBY	; byte recieved from keybd
	call keybyte
keybyte очень большая, я её приводить не буду.

А вот прерывание:
Нажмите, чтобы открыть спойлер
PHP код:
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
keyint:         ; синхросигнал клавиатуры _-        ; Ext Int 0
       ///  keyboard syn rising    -_                            
          ///  30-50us импульс и так же пауза S 0 1 2 3 4 5 6 7 p s             
      ///             kbitctr 10      9 8 7 6 5 4 3 2 1 0 -1             
    in    wri2,sreg
/* push2y y
ld2    Yh,Yl,$140
st    Y+,kbitctr
st2    $140,Yh,Yl
pop2y y */
    mov    wri1,kbitctr        dec    kbitctr    /// ctr = 10: start bit хоть приём хоть педерача 
    sbrc    kbdmode,INCMD        rjmp sykbcd        //; ---------› идёт передача в клаву    

    cpi    wri1,10        breq syend1            ; приём, start-bit            ===›                    

    tst    kbitctr        breq synpa            ; =0:  parity bit received, prepare to ACK
                     brlt synlb            ; =-1: ACK 400 us

    clc                sbic KBDPORT-PIN,KBDDATA    ; recieve bit lsb first, 1 is hi
    sec                ror    kbdin            ; shift data bit in kbdin
syend1:                rjmp syend            ;                       ===›

synpa:    cbr    flags,(1‹‹KEYPA)    sbis    KBDPORT-PIN,KBDDATA
                    sbr    flags,(1‹‹KEYPA)    ; set KEYPA = ~p
    in    wri1,MCUCR        cbr    wri1,(1‹‹ISC10)    
                    out    MCUCR,wri1        ; INT1 set falling keyb sync
                    rjmp syend             ;                         ===›

synlb:    lds    wri1,kbset+2        ori    wri1,2
                    sts    kbset+2,wri1        ; ***1  3*100us ACK + current interval piece
                    KBSYN_PULLDOWN                
    ldi    wri1,(1‹‹INCMD)    or    kbdmode,wri1
                    
syex:    ldi    wri1,10        mov    kbitctr,wri1        ; clear to receive from keybd
                    rjmp syend            ;                        ===›                

sykbcd:   //; command to keyboard =======================================
    cpi    wri1,2            breq sypa            ;  2    parity    1.37
                    brge syda            ;  A..3 data bits    1.20/1.29
    tst    wri1            breq syack             ;  0    ACK?         1.87
                    brge sy0h            ;  1    stop        1.20
;    cpi    wri1,-2        brge sys0            ; -1    ACK ends, set raising edge int 0.87
    
    ldi    wri1,~(1‹‹INCMD)    and    kbdmode,wri1    
                    rjmp syex            ; -2    release after stop

sypa:    asr    flags            rol    flags            ; flags[7] aka KEYPA --› (C)
                    rjmp sybit
syda:    lsr    kbdin                             ; (C) --› data    
sybit:    brcs sy0h
sy1h:                    KBDAT_PULLDOWN
                    rjmp syend            ;                        ===›
syack:
    sbic    KBDPORT-PIN,KBDDATA  nop            ; ACK: low from kbd
;    sbr flags,(1‹‹NAK)        
                                    ; NAK: release net

sys0:    in    wri1,MCUCR        sbr    wri1,(1‹‹ISC10)    
                    out    MCUCR,wri1        ; INT1 set raising keyb sync
                    rjmp syend    

sy0h:    KBDAT_RELEASE    
syend:    out    sreg,wri2    

    reti 


Будете разбираться?

PS Пардон, не удалось сделать, чтобы не разбегалась табуляция. Админы, а где тег ‹ ASM › ?

Последний раз редактировалось makakus; 16.02.2018 в 00:43.
makakus вне форума  
Непрочитано 16.02.2018, 00:56  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

ок, а какая инфа от меня требуется?
__________________
Самое главное умение - умение радоваться жизни.
AVRkin вне форума  
Непрочитано 16.02.2018, 10:11  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

Сообщение от AVRkin Посмотреть сообщение
какая инфа от меня требуется?
Мне от вас? Зачем? У меня всё работает: клавиши определяются, лампочки на клавиатуре загораются.

Вам нужен осциллограф, а лучше китайский клон лог.анализатора от saleae за $10, смотреть временные диаграммы на шине ps2 и дёргать ножками порта после/на время/ещё как-то возникновения событий в программе, наблюдать их все вместе. И получится.

Вот, нашёл свою картинку из 2013 года, когда разбирался:

Нажмите на изображение для увеличения
Название: logged_keyb.jpg
Просмотров: 0
Размер:	293.5 Кб
ID:	125346

Кстати, а они ещё бывают - клавы с PS/2? Понятно, что большинство с usb-разъёмом совместимы, но встречались и не- встречались с "оригинальной" времянкой...
makakus вне форума  
Непрочитано 16.02.2018, 22:23  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,282
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

AVRkin Полностью присоединяюсь к сказанному уважаемым makakus - тут не инфа нужна и не исходный текст. В текущей ситувции только у Вас на столе комбинация подопытных. Логический анализатор и дополнение в программе на место вывода - формирование строба на любой ноге по завершению чтения байта.
И анализ происходящего. Вот с такими данными уже будет о чем говорить дальше…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
makakus (17.02.2018)
Непрочитано 17.02.2018, 22:48  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

Сообщение от mike-y-k Посмотреть сообщение
формирование строба на любой ноге
А я ещё знаете как делаю? Сдвигаю байт в свободную лапку, с максимально возможной скоростью. Потом saleae мне расшифровывает эти байты по протоколу rs232. Скорость приходится подстраивать по букве 'U' получается порядка 1,6 - 1,8 Мбод (кварц 14,7456 МГц)
makakus вне форума  
Сказали "Спасибо" makakus
mike-y-k (18.02.2018)
Непрочитано 18.02.2018, 03:40  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,282
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

makakus, можно и так, плюс добавить к стандартному анализатору обработку дополнительного канала и сравнение с прошедшим по последовательной шине с учетом получающейся задержки. Весьма полезное дополнение для отладки.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 19.02.2018, 23:06  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Re: Клавиатура Mera-REFA KL-13 теряет 1 бит при передачи в Arduino

постоянно на выходах +5в
__________________
Самое главное умение - умение радоваться жизни.

Последний раз редактировалось AVRkin; 09.03.2018 в 16:15.
AVRkin вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Помогите начинающему по ATmega8515 Vladlen23 Микроконтроллеры, АЦП, память и т.д 510 27.03.2012 06:08


Часовой пояс GMT +4, время: 06:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.