Спасибо!
Вот так оно делается:
Реестр:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_06A3&PID_053C\Calibration\0\Type\Axes
(VID_06A3&PID_053C - может быть другим значением, т.е. от джойстиков зависит)
Там оси:
0 - х
1 - у
2 - ..
3 - ..
5 - ..
6 - ..
Значение Calibration типа REG_BINARY содержит 3 слова по 4 байта:
левое слово - минимальное значение на оси
среднее слово - среднее значение на оси
правое слово - максимальное значение на оси
besheniy_suslik
E8500 (3,8ГГц), Asus P5K, 4Гб, MSI GTX 570 1280Мб, Win7 64bit, 1920х1200
Скажите кто-нибудь, есть ли прошивка на Мега16 в которой значение AREF берется не от внутреннего генератора, а задается внешней обвязкой.
Крайний раз редактировалось YuretsKm; 15.02.2008 в 17:20.
Что значит от внутреннего генератора? Насколько я понимаю, речь идет об опорном напряжении АЦП. У Меги существует 3 варианта опоры АЦП:
1 AREF pin
2 AVCC pin
3 Через внешний конденсатор на AREF
Насколько я вижу в схеме MJoy16 от Mindaugas Milasauskas вывод AREF посажен через конденсатор на землю (вообще-то не понятно, зачем это). Соответственно, опора берется с AVCC. Если нужно переделать на AREF, то в программе надо править значение регистра ADMUX. Если есть исходники, могу помочь.
А вообще, зачем это? Чтобы опора была не 5В, а скока-нить еще?
VID_****&PID_**** - таких пунктиков насчитал 81 штуку, примерно треть из них пустые(без \Calibration\0\Type\Axes).
Можно ли это всё безболезнено выкинуть, и если можно, то в каких ещё местах реестра удалить строки?
Винда живёт с мая 2005года, вобщем то без проблем, но барахла(в реестре) скопилось шибко много, и понять какая строчка к какому джою относится трудно.
Не знаю, у меня их тоже там много...не удалял..да они вроде и не мешают.
besheniy_suslik
E8500 (3,8ГГц), Asus P5K, 4Гб, MSI GTX 570 1280Мб, Win7 64bit, 1920х1200
Я спрашивал у одного программера по поводу AVR-ов, там есть такая фишка, что уровень сигнала который приравнивается максимальному значению (в случае Меги 16 - 1024 отсчета) может задаваться 2-мя способами:
1. внутренним опорным напряжением
2. внешним сигналом как раз на AREF.
У Миндога первый вариант. Способ задается прошивкой, там нужно изменить всего два бита (мне так объяснили).
А причина простая - SS49X не дают полный размах напряжения на выходе, не дотягивают 2-5%.
Про исходник не знаю, на Мегу 8 точно есть, а на 16 не встречал.
ТО ALL
На Мегу16 исходник есть?
Вот так и рушатся детские мечты![]()
Вообще, там 3 варианта:
- AREF, Internal Vref turned off
- AVCC with external capacitor at AREF pin
- Internal 2.56V Voltage Reference with external capacitor at AREF pin
Который вариант используется, надо смотреть в прошивке. Но вроде как внутренная опора не подходит - напряжение мало, всего 2.56В. По всей видимости опора берется от AVCC. Можно попробовать подать на AVCC напряг поменьше, чем на Холлы. Но, следует учитывать, что AVCC не должен оличаться от VCC больше чем на 0.3В.
Если исходников нет, можно дизассемблировать. IDA с этим неплохо справляется
P.S. Да, кстати, максимальное значение не 1024, а 1023...
Крайний раз редактировалось BeerLover; 17.02.2008 в 13:54. Причина: почитал pdf-ку
Пробовал на AREF поменьше подавать - безполезно, на AVCC еще не пробовал. А 0,3В за глаза хватит, нудно срезать не больше 0,15В.
Максимальное значение действительно 1023, но отсчетов 1024 (начиная с 0000) хотя это не существенно.
Если не трудно, посмотри пожалуйста прошивку, я в программистике полный ноль.
YuretsKm, вот поробуй...
Объясните... это для того, чтобы полный диапазон выбрать датчиков (у меня МАРСы не до конца доходят при калибровке с кнопочкой INIT Мджой16), т.е. если на AREF подать AVCC=5В, то всё будет ОК?
Сорри, если туплю, но я собсно не особый специалист.... если объяснить я всё пойму![]()
besheniy_suslik
E8500 (3,8ГГц), Asus P5K, 4Гб, MSI GTX 570 1280Мб, Win7 64bit, 1920х1200
Да, но, насколько понимаю, это для датчиков Холла(типа ss49*), так как эти датчики не выдают весь диапазон напряжений от 0 до 5 вольт для контроллера, фактически выдают примерно от 0,2 до 4,8(при питании от 5вольт USB). Вот и получается либо в чипе с "корректировать", либо на датчик подать больше 5 вольт(типа 5,2 вольта получить каким то образом из USB, например поднять напругу микрой max757). ...или подать отдельно питание на датчики 6-12 вольт и ограничить напругу на выходе.
C MaRSами, по идее не должно быть такой проблемы, они весь диапазон разруливают.
Крайний раз редактировалось BeerLover; 18.02.2008 в 18:44. Причина: внимательно прочитал доку
Это точно так, с МАРС контроллер на полный не калибруется, потому как 0,95 от 5В выдаёт. чуток не дотягивает.
besheniy_suslik
E8500 (3,8ГГц), Asus P5K, 4Гб, MSI GTX 570 1280Мб, Win7 64bit, 1920х1200
Да ладно вам, какие-то 5% Я померял, чего у меня холлы в X52 выдают - от 0.9В до 3.3В...
Пойду повешусь %-)