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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
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(dataPinINPUT);
 
pinMode(clockPinINPUT);
 
Serial.begin(19200);
}

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

 if(
counter ›= numbits) {
  
Serial.print(dataBIN);
   
data B0;
   
counter 0;
 }      

__________________
Самое главное умение - умение радоваться жизни.
AVRkin вне форума  
Непрочитано 16.02.2018, 00:25  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
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 receivedprepare to ACK
                     brlt synlb            
; =-1ACK 400 us

    clc                sbic KBDPORT
-PIN,KBDDATA    recieve bit lsb first1 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 endsset raising edge int 0.87
    
    ldi    wri1
,~(1‹‹INCMD)    and    kbdmode,wri1    
                    rjmp syex            
; -2    release after stop

sypa
:    asr    flags            rol    flags            flags[7aka KEYPA --› (C)
                    
rjmp sybit
syda
:    lsr    kbdin                             ; (C) --› data    
sybit
:    brcs sy0h
sy1h
:                    KBDAT_PULLDOWN
                    rjmp syend            
;                        ===›
syack:
    
sbic    KBDPORT-PIN,KBDDATA  nop            ACKlow from kbd
;    sbr flags,(1‹‹NAK)        
                                    ; 
NAKrelease 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.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
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
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
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.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
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
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
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, время: 15:52.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot