|
Вывод 2 байтов АЦП в одну переменную, ATMega 2561 - как считать ADCH:ADCL одним числом? |
|
|
|
Feb 11 2011, 08:40
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(firstvald @ Feb 11 2011, 12:20)  вот несколько по другому: вот несколько по-третьему Код val=ADCL; val |= (uint16_t)ADCH<<8; В отличие от . - сохраняет правильный порядок и не содержит ошибки с приведением типов.
|
|
|
|
|
Feb 11 2011, 15:12
|

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

|
Цитата(Палыч @ Feb 11 2011, 18:02)  Зачем это делать? Просто нужно усвоить/запомнить, что к шестнадцатибитным регистрам нужно обращаться по их именам, а не побайтно! Это разумеется - компилятор обучен порядку чтения-записи слов. Но бывает так, что старший и младший байты слова располагаются в памяти не в соседних ячейках. Поубивал бы...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Feb 12 2011, 08:10
|

неотягощённый злом
     
Группа: Свой
Сообщений: 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, даже если он один одинёшенек. Что-то размечтался я:-)
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|