Перейти к содержанию

Абсолютные адреса регистров в ATXmega64A3U

Давно работаю с мегами. Решил вот на хмеги перейти. Смотрю в ДШ – спагетти. Явно писали не те писатели, что для мег нормальные портянки писали. Ну да ладно, сейчас не об этом.

По существу.
Вот дурацкая система (извините, опять эмоции) адреса регистров писать +0х00, +0х01, ... . А вот к чему это приплюсовывать-то? Ну для некоторых регистров нашел. А вот, в частности, для RCOSC2M не могу найти в ДШ ни на XMEGA-AU ни на конкретно ATXmega64A3U.
Подскажите, пожалуйста, где такое искать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Diusha @ Oct 10 2017, 20:19) <{POST_SNAPBACK}>
Давно работаю с мегами. Решил вот на хмеги перейти. Смотрю в ДШ – спагетти. Явно писали не те писатели, что для мег нормальные портянки писали. Ну да ладно, сейчас не об этом.

По существу.
Вот дурацкая система (извините, опять эмоции) адреса регистров писать +0х00, +0х01, ... . А вот к чему это приплюсовывать-то? Ну для некоторых регистров нашел. А вот, в частности, для RCOSC2M не могу найти в ДШ ни на XMEGA-AU ни на конкретно ATXmega64A3U.
Подскажите, пожалуйста, где такое искать?

4.23 Register Summary - Production Signature Row

Система не дурацкая, а приспособленная для того, чтобы удобно было создавать программы на С/С++. Сейчас практически у всех МК, в документации такая система отсчета.
Чтобы не выглядеть дураком, обзывая систему дурацкой, курите внимательно мануалы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(prottoss @ Oct 10 2017, 19:27) <{POST_SNAPBACK}>
4.23 Register Summary - Production Signature Row

И? Адрес-то где?
Чтобы не выглядеть дураком, обзывая других дураками, курите внимательно вопрос, на который пытаетесь ответить.
А система была бы не дурацкой, если бы было написано, напимер,
ABC+0x01
и эту ABC можно было бы легко найти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Они не отображаются на память. Их надо вычитывать через NVM Controller.

Цитата
33.11.2.14 Read User Signature Row / Production Signature Row
The read user signature row and read production signature (calibration) row commands are used to read one byte from
the user signature row or production signature (calibration) row.
1. Load the Z-pointer with the byte address to read.
2. Load the NVM CMD register with the read user signature row / production signature (calibration) row command
3. Execute the LPM instruction.
The destination register will be loaded during the execution of the LPM instruction.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спасибо, VladislavS
Но еще требуется уточнение.
Я правильно понимаю, что для чтения RCOSC32K («+0х02», п. 4.17.3) нужно
ZH=0x00
ZL=0x02
?
А доступ к CMD = +0x0A (4.15.7) это обращение к памяти (LDS/STS в случае ассемлера) по адресу NVM (=0x01C0) плюс это смещение, т.е. 0x01CA?

И вот кто же догадается, что для того чтобы прочитать калибровочный байт, нужно читать раздел «Self-programming and Boot Loader Support»?
Последний вопрос, конечно, риторический )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вам больше заняться не чем, кроме как адреса и смещения высчитывать? Производители чипов и компиляторов специально для вас написали хидеры с символьными определениями всех регистров - пользуйтесь!

О риторическом. Эмбеддерский скилл на половину состоит из умения правильно контролэфать. К слову, я никогда в жизни не программировал XMega, но скачать даташит и найти в нём RCOSC и вторым проходом Production Signature Row это что-то около 5 минут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация