[Украина, Винница] Печатная плата для Поиска-2 (новодел) (Новодельная печатная плата для "Поиска-2". Заказывали 40шт, осталась одна лишняя.)
- Tronix
- Advanced Member
- Сообщения: 3634
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
- Поблагодарили: 1 раз
-
Вклад в сообщество
Ekb И еще в этом PIC есть заморочка с OSCCAL - это калибровочное значение для внутреннего 4MHz генератора, записывается на заводе в последнюю ячейку памяти. Его нельзя затереть при записи. Нормальные люди при покупке нового контроллера считывают его, записывают на бумажке и клеют его на брюхо. Я не знаю, как ты шил PIC, каким программатором. Как правило, нормальные программаторы сначала считывают это значение и потом при записи программы во флеш записывают его обратно. Но всякие китай-поделки могут этого и не делать. Так же в нормальных программаторах есть некий алгоритм, который может попытаться восстановить утраченное значение OSCCAL, например Willem так умеет.
Запись левого значения в эту ячейку грозит увеличением разброса точности встроенного генератора 4MHz с 1% до не предсказуемости, как в большую сторону, так и в меньшую. И проц может работать на меньшей частоте, например на 3MHz. И соответственно программа будет не успевать реагировать на декодинг клавиш.
Запись левого значения в эту ячейку грозит увеличением разброса точности встроенного генератора 4MHz с 1% до не предсказуемости, как в большую сторону, так и в меньшую. И проц может работать на меньшей частоте, например на 3MHz. И соответственно программа будет не успевать реагировать на декодинг клавиш.
Tronix по поводу OSCCAL: http://www.minuszerodegrees.net/at2xtkb ... _value.htm Говоря по-русски, паршивка автора сама его зачем-то меняет на своё значение ещё в самом начале. Причём действительно непонятно, зачем? Когда там же далее упоминается, что высокая точность тактового генератора там как бы и не нужна. И я пожалуй с этим согласен: AT клава сама даёт клоки с частотой, какой считает нужным. Ядро PIC-а на 4 МГц работает с огромным запасом быстрее, чем протоколы обмена данными. А уж по клокам у клавы XT-шек, судя по данным из Сети, вообще допуск +/- километр!
PS пардон, пишет не своё, а и правда заводское, перепутал. Хотя может ли его значение оказывать какое-либо влияние на работу в данном случае - всё равно кажется маловероятным.
PS пардон, пишет не своё, а и правда заводское, перепутал. Хотя может ли его значение оказывать какое-либо влияние на работу в данном случае - всё равно кажется маловероятным.
Хорошо иметь DOOM-ик в деревне!
По объяснениям автора устройства, поскольку оригинальная клавиатура XT не использует линию RESET, то и в переходнике она не нужна.
Фактически сброс XT-клавиатуры происходит за счет удержания сигнала CLK в лог. "0" в течение минимум 20 мс. Линия CLK - сигнал с открытым коллектором: перед выдачей синхросигнала клавиатура проверяет, не удерживается ли линия CLK в лог. "0" со стороны мат. платы. Если да, то происходит сброс микроконтроллера клавиатуры и выход на новый цикл.
Фактически сброс XT-клавиатуры происходит за счет удержания сигнала CLK в лог. "0" в течение минимум 20 мс. Линия CLK - сигнал с открытым коллектором: перед выдачей синхросигнала клавиатура проверяет, не удерживается ли линия CLK в лог. "0" со стороны мат. платы. Если да, то происходит сброс микроконтроллера клавиатуры и выход на новый цикл.
- Tronix
- Advanced Member
- Сообщения: 3634
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
- Поблагодарили: 1 раз
-
Вклад в сообщество
Это не так. ИнструкцииEJSanYo писал(а):Говоря по-русски, паршивка автора сама его зачем-то меняет на своё значение ещё в самом начале. Причём действительно непонятно, зачем?
Код: Выделить всё
; Calibrate the internal oscillator
call 0x3ff ; get the calibration value
movwf OSCCAL ; calibrate oscillator

где 0x34 - это опкод команды RETLW, а 8C - то самое калибровочное значение. Таким образом прыгнув на адрес 0x3FF выполнится команда RETLW, которая вернет в регистре W значение 0x8C. Далее с помощью команды MOVWF OSCCAL это значение запишется в регистр OSCCAL, тем самым откалибруя генератор на 4MHz ровно. Поэтому важно не затереть при записи прошивки заводское калибровочное значение в последней ячейке.
- Tronix
- Advanced Member
- Сообщения: 3634
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
- Поблагодарили: 1 раз
-
Вклад в сообщество
alecv Можно и так, но тайминги все равно поплывут. Потому как, на первый взгляд, для генерации XT клока используется таймер, для отслеживания и отсылки команд в AT так же используется таймер. Может будет работать, а может и нет, лень вникать в листинг.
Правильно - не потерять калибровочное значение изначально (считать с микроконтроллера и записать в блокнот/приклеить этикетку на пузо/etc). Если все-таки потерялось, многие программаторы умеют подбирать его методом перебора, например Willem так умеет. Ну а если совсем никак - тогда да, 3480.
Правильно - не потерять калибровочное значение изначально (считать с микроконтроллера и записать в блокнот/приклеить этикетку на пузо/etc). Если все-таки потерялось, многие программаторы умеют подбирать его методом перебора, например Willem так умеет. Ну а если совсем никак - тогда да, 3480.
- alecv
- Advanced Member
- Сообщения: 6995
- Зарегистрирован: 05.10.2004,11:13
- Откуда: Санкт-Петербург
- Поблагодарили: 2 раза
- Контактная информация:
-
Вклад в сообщество
Ну вот как раз для желающих сегодня бодрый итальянец запостил вариант конвертора на Ардуинке
http://www.vcfed.org/forum/showthread.p ... -converter
http://www.vcfed.org/forum/showthread.p ... -converter