Страница 2 из 3

Добавлено: 23.08.2016,16:54
Tronix
Ekb И еще в этом PIC есть заморочка с OSCCAL - это калибровочное значение для внутреннего 4MHz генератора, записывается на заводе в последнюю ячейку памяти. Его нельзя затереть при записи. Нормальные люди при покупке нового контроллера считывают его, записывают на бумажке и клеют его на брюхо. Я не знаю, как ты шил PIC, каким программатором. Как правило, нормальные программаторы сначала считывают это значение и потом при записи программы во флеш записывают его обратно. Но всякие китай-поделки могут этого и не делать. Так же в нормальных программаторах есть некий алгоритм, который может попытаться восстановить утраченное значение OSCCAL, например Willem так умеет.

Запись левого значения в эту ячейку грозит увеличением разброса точности встроенного генератора 4MHz с 1% до не предсказуемости, как в большую сторону, так и в меньшую. И проц может работать на меньшей частоте, например на 3MHz. И соответственно программа будет не успевать реагировать на декодинг клавиш.

Добавлено: 23.08.2016,21:55
Darko
Ekb, работоспособность переходника подтверждаю с любыми мамами-клавами с участием квм и без, если нужна хт-клава, то есть у меня.

Добавлено: 23.08.2016,23:30
EJSanYo
Tronix по поводу OSCCAL: http://www.minuszerodegrees.net/at2xtkb ... _value.htm Говоря по-русски, паршивка автора сама его зачем-то меняет на своё значение ещё в самом начале. Причём действительно непонятно, зачем? Когда там же далее упоминается, что высокая точность тактового генератора там как бы и не нужна. И я пожалуй с этим согласен: AT клава сама даёт клоки с частотой, какой считает нужным. Ядро PIC-а на 4 МГц работает с огромным запасом быстрее, чем протоколы обмена данными. А уж по клокам у клавы XT-шек, судя по данным из Сети, вообще допуск +/- километр!
PS пардон, пишет не своё, а и правда заводское, перепутал. Хотя может ли его значение оказывать какое-либо влияние на работу в данном случае - всё равно кажется маловероятным.

Добавлено: 24.08.2016,09:25
i8088
И там еще не используется reset для XT клавиатуры, я не понимаю
зачем автор взял контроллер с таким ограниченным количеством выводов...

Добавлено: 24.08.2016,10:46
gfeiw
По объяснениям автора устройства, поскольку оригинальная клавиатура XT не использует линию RESET, то и в переходнике она не нужна.

Фактически сброс XT-клавиатуры происходит за счет удержания сигнала CLK в лог. "0" в течение минимум 20 мс. Линия CLK - сигнал с открытым коллектором: перед выдачей синхросигнала клавиатура проверяет, не удерживается ли линия CLK в лог. "0" со стороны мат. платы. Если да, то происходит сброс микроконтроллера клавиатуры и выход на новый цикл.


Добавлено: 24.08.2016,11:38
alecv
Коллеги, а герберов этого контроллера AT2XTKBD не осталось ?
Или поменяю несколько плат на PIC-и, можно прошитые v0.9 или неофициальную v1.0.

Добавлено: 24.08.2016,11:49
Tronix
EJSanYo писал(а):Говоря по-русски, паршивка автора сама его зачем-то меняет на своё значение ещё в самом начале. Причём действительно непонятно, зачем?
Это не так. Инструкции

Код: Выделить всё

;	Calibrate the internal oscillator
 
	call	0x3ff			; get the calibration value
	movwf	OSCCAL			; calibrate oscillator
нужны, чтобы прочитать калибровочное значение с адреса 0x3ff (возвращается в регистр W) и записать его в регистр OSCCAL:

Изображение

где 0x34 - это опкод команды RETLW, а 8C - то самое калибровочное значение. Таким образом прыгнув на адрес 0x3FF выполнится команда RETLW, которая вернет в регистре W значение 0x8C. Далее с помощью команды MOVWF OSCCAL это значение запишется в регистр OSCCAL, тем самым откалибруя генератор на 4MHz ровно. Поэтому важно не затереть при записи прошивки заводское калибровочное значение в последней ячейке.

Добавлено: 24.08.2016,12:38
alecv
Tronix Если значение потерялось, на сайте minuszerodegrees рекомендуют просто записать 3480.

Добавлено: 24.08.2016,12:49
Tronix
alecv Можно и так, но тайминги все равно поплывут. Потому как, на первый взгляд, для генерации XT клока используется таймер, для отслеживания и отсылки команд в AT так же используется таймер. Может будет работать, а может и нет, лень вникать в листинг.
Правильно - не потерять калибровочное значение изначально (считать с микроконтроллера и записать в блокнот/приклеить этикетку на пузо/etc). Если все-таки потерялось, многие программаторы умеют подбирать его методом перебора, например Willem так умеет. Ну а если совсем никак - тогда да, 3480.

Добавлено: 24.08.2016,12:56
i8088
gfeiw писал(а):По объяснениям автора устройства, поскольку оригинальная клавиатура XT не использует линию RESET, то и в переходнике она не нужна.
Это понятно, но все же я бы сделал и использование RESET в том числе,
коль скоро он имеется.

Добавлено: 24.08.2016,13:11
alecv
Ну вот как раз для желающих сегодня бодрый итальянец запостил вариант конвертора на Ардуинке
http://www.vcfed.org/forum/showthread.p ... -converter