Братцы! Очень срочно понадобились адреса регистров в ATxmega128A1.
Работаю под IAR. Почему-то в ATxmega128A1.h нашёл только первые 15 из них (GPIO0...15). А где же R16...R31???
Или я чего-то не понимаю.
Помогите!
R16...R31 в памяти XMEGA
Re: R16...R31 в памяти XMEGA
Неужели никто не знает???
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: R16...R31 в памяти XMEGA
Всё, забудьте. R0..R31 в Xmega не адресуются как память, как это было у остальных AVR.
А GPIO -- это другое. Таких регистров по одному-два-три и у свежих "обычных" AVR-ок есть, доступны для in/out и, что приятно, для размещения глобальных битовых флагов под sbi/cbi/sbis/sbic, так как с байтами в ОЗУ AVR8 такого не умеют.
А GPIO -- это другое. Таких регистров по одному-два-три и у свежих "обычных" AVR-ок есть, доступны для in/out и, что приятно, для размещения глобальных битовых флагов под sbi/cbi/sbis/sbic, так как с байтами в ОЗУ AVR8 такого не умеют.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: R16...R31 в памяти XMEGA
avreal писал(а):Всё, забудьте. R0..R31 в Xmega не адресуются как память, как это было у остальных AVR.
А GPIO -- это другое. Таких регистров по одному-два-три и у свежих "обычных" AVR-ок есть, доступны для in/out и, что приятно, для размещения глобальных битовых флагов под sbi/cbi/sbis/sbic, так как с байтами в ОЗУ AVR8 такого не умеют.
Пипец, до чего дошли...
А как тогда быть при использовании ассемблерной функции, возвращающей что-нибудь? (Если байт, то он возвращается в R16). Ну, нет, в принципе, понятно, всё будет работать, но компилятор ругнётся, если чисто формально не написать что-то вроде return XXX; где XXX - это тот самый R16, или его содержимое, перенесённое в память... Возня, однако...
Re: R16...R31 в памяти XMEGA
Братцы, ещё просьба...
Чтобы новую тему не создавать, здесь отпишу:
Никто не может подарить файлик для IAR - ATxmega128A1.h посвежее? А то лажа какая-то, в частности, с ADC - структура в заголовочном не соответствует приведенной в описании (калибровочные байты - точно, может, и ещё чего). Задолбался сегодня, такой бред намеряется. Вообще этот ADC, по отзывам, не подарок, а тут ещё, блин, это. И деваться некуда, в срок до позавчера нужно изделие сдавать.
Чтобы новую тему не создавать, здесь отпишу:
Никто не может подарить файлик для IAR - ATxmega128A1.h посвежее? А то лажа какая-то, в частности, с ADC - структура в заголовочном не соответствует приведенной в описании (калибровочные байты - точно, может, и ещё чего). Задолбался сегодня, такой бред намеряется. Вообще этот ADC, по отзывам, не подарок, а тут ещё, блин, это. И деваться некуда, в срок до позавчера нужно изделие сдавать.
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: R16...R31 в памяти XMEGA
Я с IAR практически не работаю, у меня какой-то kick-start живёт.
В нём
С документацией вроде бы совпадает.
В нём
Код: Выделить всё
/*
----------
-- - ATxmega128A1.h -
--
-- This file declares the internal register addresses for ATxmega128A1.
--
-- Used with IAR System's iccAVR and aAVR.
--
-- Copyright Atmel Corporation 2008. All rights reserved.
--
----------
*/
...
/** @addtogroup adc Analog/Digital Converter
* @{
*/
/// ADC Channel
typedef struct ADC_CH_struct {
register8_t CTRL; ///< Control Register
register8_t MUXCTRL; ///< MUX Control
register8_t INTCTRL; ///< Channel Interrupt Control
register8_t INTFLAGS; ///< Interrupt Flags
WORDREGISTER(RES); ///< Channel Result
register8_t reserved_0x6; ///< reserved
register8_t reserved_0x7; ///< reserved
} ADC_CH_t;
/// Analog-to-Digital Converter
typedef struct ADC_struct {
register8_t CTRLA; ///< Control Register A
register8_t CTRLB; ///< Control Register B
register8_t REFCTRL; ///< Reference Control
register8_t EVCTRL; ///< Event Control
register8_t PRESCALER; ///< Clock Prescaler
register8_t reserved_0x05; ///< reserved
register8_t INTFLAGS; ///< Interrupt Flags
register8_t TEMP; ///< Temporary register
register8_t reserved_0x08; ///< reserved
register8_t reserved_0x09; ///< reserved
register8_t reserved_0x0A; ///< reserved
register8_t reserved_0x0B; ///< reserved
WORDREGISTER(CAL); ///< Calibration Value
register8_t reserved_0x0E; ///< reserved
register8_t reserved_0x0F; ///< reserved
WORDREGISTER(CH0RES); ///< Channel 0 Result
WORDREGISTER(CH1RES); ///< Channel 1 Result
WORDREGISTER(CH2RES); ///< Channel 2 Result
WORDREGISTER(CH3RES); ///< Channel 3 Result
WORDREGISTER(CMP); ///< Compare Value
register8_t reserved_0x1A; ///< reserved
register8_t reserved_0x1B; ///< reserved
register8_t reserved_0x1C; ///< reserved
register8_t reserved_0x1D; ///< reserved
register8_t reserved_0x1E; ///< reserved
register8_t reserved_0x1F; ///< reserved
ADC_CH_t CH0; ///< ADC Channel 0
ADC_CH_t CH1; ///< ADC Channel 1
ADC_CH_t CH2; ///< ADC Channel 2
ADC_CH_t CH3; ///< ADC Channel 3
} ADC_t;
/** @} */Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: R16...R31 в памяти XMEGA
Спасибо огромное!!!
Уф...
Всё получилось.
Именно в калибровке было дело, с правильной структурой заработало (сам её подправил, а потом убедился в своей правоте благодаря приведенному фрагменту).
Хотя, сам ADC - та ещё пакость. В режиме несимметричного входа вблизи опорного напряжения очень паршиво работает. Перевёл в дифференциальный - вроде, лучше.
Ещё раз спасибо!
Уф...
Всё получилось.
Именно в калибровке было дело, с правильной структурой заработало (сам её подправил, а потом убедился в своей правоте благодаря приведенному фрагменту).
Хотя, сам ADC - та ещё пакость. В режиме несимметричного входа вблизи опорного напряжения очень паршиво работает. Перевёл в дифференциальный - вроде, лучше.
Ещё раз спасибо!