Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
Я тут. Прошу прощения что пропал. Пытался все-таки понять о чем вы говорите тут. )) Я действительно смотрел пока, какими вариантами еще можно организовать опрос двух каналов ацп... Завтра попробую ваши варианты. )
Я тут. Прошу прощения что пропал. Пытался все-таки понять о чем вы говорите тут. )) Я действительно смотрел пока, какими вариантами еще можно организовать опрос двух каналов ацп... Завтра попробую ваши варианты. )
|
|
|
 |
Добавлено: 07 мар 2016, 20:08 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
Похоже изучает МК, и это правильно. 
Похоже изучает МК, и это правильно. 8-)
|
|
|
 |
Добавлено: 06 мар 2016, 12:38 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
это всё лирика, где автор топика?))
это всё лирика, где автор топика?))
|
|
|
 |
Добавлено: 06 мар 2016, 11:45 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
_zag_ писал(а): а зачем его поднимать, если я подкорректировал без него?)) Я в коде не увидел корректировку. Какая процедура это делает? _zag_ писал(а): Но если так необходим этот бит, то на рисунках показал что надо сделать: Выделить номер канала из ADMUX и изменить описание констант _ADC_Min_Ch и _ADC_Max_Chю Ну и естественно сам процесс обработки значения АЦП... Можно конечно и так (только битов выбора канала не три а пять)… но для универсальности алгоритма (имеется ввиду когда меняются и биты опорного напряжения в регистре ADMUX), я бы остановился на таком варианте, а константу _ADC_Max_Ch оставил бы как в первоначальном варианте. Вложение:
1.png [ 18.75 КБ | Просмотров: 1381 ]
[quote="_zag_"]а зачем его поднимать, если я подкорректировал без него?))[/quote] Я в коде не увидел корректировку. Какая процедура это делает? [quote="_zag_"]Но если так необходим этот бит, то на рисунках показал что надо сделать: Выделить номер канала из ADMUX и изменить описание констант _ADC_Min_Ch и _ADC_Max_Chю Ну и естественно сам процесс обработки значения АЦП...[/quote] Можно конечно и так (только битов выбора канала не три а пять)… но для универсальности алгоритма (имеется ввиду когда меняются и биты опорного напряжения в регистре ADMUX), я бы остановился на таком варианте, а константу _ADC_Max_Ch оставил бы как в первоначальном варианте. [attachment=0]1.png[/attachment]
|
|
|
 |
Добавлено: 06 мар 2016, 10:41 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
SVN писал(а): _zag_ писал(а): а если вот так Это ничего не меняет… подними бит ADLAR и увидишь. а зачем его поднимать, если я подкорректировал без него?)) Но если так необходим этот бит, то на рисунках показал что надо сделать: Выделить номер канала из ADMUX и изменить описание констант _ADC_Min_Ch и _ADC_Max_Chю Ну и естественно сам процесс обработки значения АЦП...
Вложения: |

Снимок2.PNG [ 4.8 КБ | Просмотров: 1393 ]
|

Снимок.PNG [ 8.23 КБ | Просмотров: 1393 ]
|
[quote="SVN"][quote="_zag_"]а если вот так[/quote] Это ничего не меняет… подними бит ADLAR и увидишь.[/quote] а зачем его поднимать, если я подкорректировал без него?)) Но если так необходим этот бит, то на рисунках показал что надо сделать: Выделить номер канала из ADMUX и изменить описание констант _ADC_Min_Ch и _ADC_Max_Chю Ну и естественно сам процесс обработки значения АЦП...
|
|
|
 |
Добавлено: 06 мар 2016, 02:38 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
_zag_ писал(а): а если вот так Это ничего не меняет… подними бит ADLAR и увидишь.
[quote="_zag_"]а если вот так[/quote] Это ничего не меняет… подними бит ADLAR и увидишь.
|
|
|
 |
Добавлено: 06 мар 2016, 01:03 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
_zag_ писал(а): по ADLAR справедливо только на первом круге, потом в ADMUX занесся 0 и все стало в норму... Не согласен… если в ADMUX записать 0, то обнулится бит ADLAR, тем самым отключится коррекция. А если она нужна, тогда как? Остаюсь при своём мнении… Вложение:
1.png [ 12.75 КБ | Просмотров: 1399 ]
[quote="_zag_"]по ADLAR справедливо только на первом круге, потом в ADMUX занесся 0 и все стало в норму...[/quote] Не согласен… если в ADMUX записать 0, то обнулится бит ADLAR, тем самым отключится коррекция. А если она нужна, тогда как? Остаюсь при своём мнении… [attachment=0]1.png[/attachment]
|
|
|
 |
Добавлено: 06 мар 2016, 00:54 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
а если вот так
Вложения: |
ADC.rar [8.91 КБ]
Скачиваний: 79
|
а если вот так
|
|
|
 |
Добавлено: 06 мар 2016, 00:37 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
SVN писал(а): Akademik писал(а): Вот что у меня получилось. Но ничего не работает... Дык, понятно почему... Что касается регистра управления мультиплексором АЦП ( ADMUX). Дело в том, что корректировка значений регистра ADC осуществляется битом ADLAR. Который тоже находится в регистре ADMUX. Так вот, как только ты его (бит ADLAR) установил в 1, значение всего регистра увеличится на $20. И когда ты сохраняешь регистр ADMUX в r16, то при нулевом канале мультиплексора, в r16 запишется не 0 а 32 ($20). Затем умножаешь r16 на 2… короче твой результат записывается чёртикуда, но не в переменную ADC0. Все остальные результаты по этому же подобию. Второй момент… ты используешь все 8 каналов при измерении… зачем? Третий момент… постоянно передаёшь значение по UART не зависимо от того произвёл ты замер напряжения или нет. Так не делается…  по ADLAR справедливо только на первом круге, потом в ADMUX занесся 0 и все стало в норму... в передаче используется пауза в 9мС за это время не один круг АЦП сделает.
[quote="SVN"][quote="Akademik"]Вот что у меня получилось. Но ничего не работает...[/quote] Дык, понятно почему... ;)
Что касается регистра управления мультиплексором АЦП ([u]ADMUX[/u]). Дело в том, что корректировка значений регистра ADC осуществляется битом [u]ADLAR[/u]. Который тоже находится в регистре ADMUX. Так вот, как только ты его (бит ADLAR) установил в 1, значение всего регистра увеличится на $20. И когда ты сохраняешь регистр ADMUX в r16, то при нулевом канале мультиплексора, в r16 запишется не 0 а 32 ($20). Затем умножаешь r16 на 2… короче твой результат записывается чёртикуда, но не в переменную ADC0. Все остальные результаты по этому же подобию. :-) Второй момент… ты используешь все 8 каналов при измерении… зачем? 8-) Третий момент… постоянно передаёшь значение по UART не зависимо от того произвёл ты замер напряжения или нет. Так не делается… ;)[/quote]
по ADLAR справедливо только на первом круге, потом в ADMUX занесся 0 и все стало в норму... в передаче используется пауза в 9мС за это время не один круг АЦП сделает.
|
|
|
 |
Добавлено: 06 мар 2016, 00:29 |
|
|
 |
|
|
Заголовок сообщения: |
Re: джойстик - UART |
Цитата |
|
Akademik писал(а): Вот что у меня получилось. Но ничего не работает... Дык, понятно почему... Что касается регистра управления мультиплексором АЦП ( ADMUX). Дело в том, что корректировка значений регистра ADC осуществляется битом ADLAR. Который тоже находится в регистре ADMUX. Так вот, как только ты его (бит ADLAR) установил в 1, значение всего регистра увеличится на $20. И когда ты сохраняешь регистр ADMUX в r16, то при нулевом канале мультиплексора, в r16 запишется не 0 а 32 ($20). Затем умножаешь r16 на 2… короче твой результат записывается чёртикуда, но не в переменную ADC0. Все остальные результаты по этому же подобию.  Для универсальности алгоритма АЦП необходимо после записи ADMUX -> r16, проверять бит ADLAR, и если он равен 1, то из регистра r16 отнять значение 32 ($20). Тогда всё срастутся… Второй момент… ты используешь все 8 каналов при измерении… зачем? Третий момент… постоянно передаёшь значение по UART не зависимо от того произвёл ты замер напряжения или нет. Так не делается… 
[quote="Akademik"]Вот что у меня получилось. Но ничего не работает...[/quote] Дык, понятно почему... ;)
Что касается регистра управления мультиплексором АЦП ([u]ADMUX[/u]). Дело в том, что корректировка значений регистра ADC осуществляется битом [u]ADLAR[/u]. Который тоже находится в регистре ADMUX. Так вот, как только ты его (бит ADLAR) установил в 1, значение всего регистра увеличится на $20. И когда ты сохраняешь регистр ADMUX в r16, то при нулевом канале мультиплексора, в r16 запишется не 0 а 32 ($20). Затем умножаешь r16 на 2… короче твой результат записывается чёртикуда, но не в переменную ADC0. Все остальные результаты по этому же подобию. :-) Для универсальности алгоритма АЦП необходимо после записи ADMUX -> r16, проверять бит ADLAR, и если он равен 1, то из регистра r16 отнять значение 32 ($20). Тогда всё срастутся… ;) Второй момент… ты используешь все 8 каналов при измерении… зачем? 8-) Третий момент… постоянно передаёшь значение по UART не зависимо от того произвёл ты замер напряжения или нет. Так не делается… ;)
|
|
|
 |
Добавлено: 06 мар 2016, 00:11 |
|
|
 |
|