реклама на сайте
подробности

 
 
> Вывод 2 байтов АЦП в одну переменную, ATMega 2561 - как считать ADCH:ADCL одним числом?
Slavast
сообщение Feb 7 2011, 09:52
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Всем Доброго!
Atmega 2561. 1024 разрядный АЦП.
Мах значение на АЦП 0x03FF:
ADCH 0000.0011
ADCL 1111.1111
Хочу прочитать в одну переменную значение регистров АЦП ADCH и ADCL! Как в Си в старший разряд 2-байтовой переменной загнать значение ADCH, а в младший разряд - значение ADCL? Может есть какая-то команда сдвига внутри переменной, которую я никак не найду?
Ведь просто сложить ADCH и ADCL в одну переменную нельзя, т.к. мы нарушим паритет разрядности! (03+FF не будет равно 03FF)
Благодарю!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
arttab
сообщение Feb 12 2011, 03:47
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



а если создать в озу указатель на регистровую пару ADCL ADCH типа int? для флешь и озу это нормально, а тут сообразить не могу.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 12 2011, 08:10
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Код
uint16_t* pADC = &ADC;
Вы об этом?

Цитата(_Pasha @ Feb 11 2011, 18:54) *
+1 или за UART_RX_vect, USART_RX_vect, UART_RX_vect - приходится костылями обзаводиться.
Да с U(S)ART'ами та ещё песня. Ну почему бы всегда не давать им номер?
Пусть будет под номером 0, даже если он один одинёшенек.
Что-то размечтался я:-)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 12 2011, 10:30
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(demiurg_spb @ Feb 12 2011, 11:10) *
Код
uint16_t* pADC = &ADC;
Вы об этом?

Он об этом - дык там всегда чтение младший-старший, запись старший-младший. А шо тут думать?
Go to the top of the page
 
+Quote Post
OlegNZH
сообщение Feb 12 2011, 18:08
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782



Цитата(_Pasha @ Feb 12 2011, 13:30) *
Он об этом - дык там всегда чтение младший-старший, запись старший-младший. А шо тут думать?

А шо туть думать ? А если подумать?
Цитата
Практическая полезность представления результата с выравниванием слева существует, когда достаточно 8-разрядное разрешение, т.к. в этом случае необходимо считать только регистр ADCH. В другом же случае необходимо первым считать содержимое регистра ADCL, а затем ADCH, чем гарантируется, что оба байта являются результатом одного и того же преобразования. Как только выполнено чтение ADCL блокируется доступ к регистрам данных со стороны АЦП. Это означает, что если считан ADCL и преобразование завершается перед чтением регистра ADCH, то ни один из регистров не может модифицироваться и результат преобразования теряется. После чтения ADCH доступ к регистрам ADCH и ADCL со стороны АЦП снова разрешается.
Конец цитаты.

"...то ни один из регистров не может модифицироваться и результат преобразования теряется...." вот здесь скорее всего некорректно- "...то ни один из регистров не может модифицироваться и результат преобразования не должен потеряться". ИМХО (не проверял- просто - логика)
upd. Задело меня что-то - АЦП - последовательного приближения - старший байт - первый- рабочий ...Он - самый живой должен быть "и преобразование завершается перед чтением регистра ADCH" да есть уже в Н байт! L- вторично!


Сообщение отредактировал OlegNZH - Feb 12 2011, 18:15
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 12 2011, 21:00
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Ничего не понял из написанного Вами, может это после 6-ти рабочих дней...
Что конкретно Вам не понятно или с чем Вы не согласны?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
OlegNZH
сообщение Feb 13 2011, 08:39
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782



Цитата(demiurg_spb @ Feb 13 2011, 01:00) *
Ничего не понял из написанного Вами, может это после 6-ти рабочих дней...
Что конкретно Вам не понятно или с чем Вы не согласны?

я просто развернул предыдущее сообщение - по поводу- кто старшее... младший-старший - это просто перевод из даташита- как нужно обращаться с байтами АЦП , ничего более.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Slavast   Вывод 2 байтов АЦП в одну переменную   Feb 7 2011, 09:52
- - Alex_1811   =ADCH<<8+ADCL   Feb 7 2011, 10:15
|- - 777777   Цитата(Alex_1811 @ Feb 7 2011, 13:15) =AD...   Feb 7 2011, 11:00
|- - defunct   Цитата(Alex_1811 @ Feb 7 2011, 12:15) =AD...   Feb 7 2011, 12:50
|- - Slavast   Спасибо! Получилось a=ADC!   Feb 11 2011, 08:08
- - Сергей Борщ   Alex_1811 подсказал, как сделать то, что вы хотите...   Feb 7 2011, 10:31
- - firstvald   вот несколько по другому: adc=ADCL+ADCH*0x100; к...   Feb 11 2011, 08:20
|- - _Pasha   Цитата(firstvald @ Feb 11 2011, 12:20) во...   Feb 11 2011, 08:40
|- - demiurg_spb   Народ! Это же стандартная фишка для AVR! Н...   Feb 11 2011, 09:01
|- - Палыч   Цитата(demiurg_spb @ Feb 11 2011, 12:01) ...   Feb 11 2011, 15:02
||- - demiurg_spb   Цитата(Палыч @ Feb 11 2011, 18:02) Зачем ...   Feb 11 2011, 15:12
||- - _Pasha   Цитата(demiurg_spb @ Feb 11 2011, 18:12) ...   Feb 11 2011, 15:54
|- - 777777   Цитата(demiurg_spb @ Feb 11 2011, 12:01) ...   Feb 14 2011, 10:21
|- - demiurg_spb   Перечитайте внимательно еще раз, а уже потом матер...   Feb 14 2011, 11:44
|- - _Pasha   Цитата(OlegNZH @ Feb 13 2011, 12:39) я пр...   Feb 14 2011, 07:54
- - ae_   Цитата(OlegNZH @ Feb 13 2011, 02:08) А шо...   Feb 13 2011, 11:40


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 23:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016