1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
1 | |
Аналог CPUID для AVR25.08.2018, 21:27. Показов 1172. Ответов 27
Метки нет (Все метки)
Собираюсь написать библиотеку, которая использует таймер 0 (в идеале - любой по дефайну пользователя, но это вопрос второстепенный), но в разных МК таймер реализован различным набором регистров, да ещё и расположенных по разным адресам. Соответственно, вопрос - может ли МК каким-либо образом определить свою модель, и где у него например находится регистр, отвечающий за делитель таймера 0? Например, путём проверок срабатывания различных резервных битов, в которые не происходит запись, и они читаются всегда в одинаковом состоянии. Или может быть это возможно реализовать директивами компилятора (вариант перебора всех моделей не предлагать)?
0
|
25.08.2018, 21:27 | |
Ответы с готовыми решениями:
27
Не удается запустить параллельный программатор для AVR (аналог STK500) Аналог AVR studio под мобильные устройства Аналог устройства ПВ-1 приемника Альтаир ПТ-305 на AVR Отчет AIDA64 для Intel® Core™ i7-3770 (CPUID) CPUID |
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|||||||||||
26.08.2018, 19:49 [ТС] | 21 | ||||||||||
Пока что нашёл компромиссное решение объявить тип таймера 0
И далее
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
27.08.2018, 16:19 | 22 |
Нарисуй генератор библиотек - виндозную прогу, в которой бы пользователь выбирал типа камня, нажимал кнопку SAVE и на диск шлепался бы вариант библиотеки именно под этот камень.
0
|
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
27.08.2018, 17:09 | 23 |
В принципе, может. Для этой цели служит регистр SPMCSR, после установки бита SIGRD можно прочитать три байта сигнатуры, однозначно определяющие камень.
Но! Тогда придется хранить таблицу ВСЕХ сигнатур для всех камней и таблицы ВСЕХ подпрограмм. Лично мне не хочется впустую тратить порой весьма драгоценное место в программной памяти... Имхо, это тупиковый путь. Гораздо лучше, как советовали выше, условная компиляция. Как говорит мой товарищ, "у компа мозгов больше", пусть хранит все многообразие ашек и либов... А в проекте будет только то, что надо.
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
27.08.2018, 17:55 | 24 |
Но сам регистр SPMCSR есть не на всех камнях, даже среди тех, что имеют инструкцию spm. А на тех у которых нет spm ему и вовсе неоткуда взяться.
0
|
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
27.08.2018, 18:50 | 25 |
Ethereal, согласен, не на всех. Те, у кого нет, отвечают сигнатурой на внешнюю команду. Изнутри допуска нет.
Ну тогда, по-любому, для универсальности, только условная компиляция. Добавлено через 6 минут Ethereal, есть камни, у которых SPMCSR есть, а прочитать сигнатуру нет возможности. Только fuses, lock да self programming... Но это только подтверждение выше сказанного Добавлено через 37 минут Kukuxumushu, если заглянуть в папку lib, например, компилятора WINAVR, то можно увидеть множество подпапок с разными версиями библиотек для разных конфигураций... Так что, другого пути нет... Все так делают...
0
|
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
27.08.2018, 19:13 [ТС] | 26 |
Если вы невнимательно прочитали тему, то альтернативный путь я всё-таки нашёл. И пока что он меня вполне устраивает. Один лишний дефайн не стоит того, чтобы писать сотни реализаций одного и того же. Мне сейчас вот этот вопрос больше интересен.
0
|
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
28.08.2018, 11:02 | 27 |
Kukuxumushu, видел я, можете не сомневаться... Это и есть условная компиляция...
Сам так делаю в программах на асме (а пишу только на асме). Очень удобно конфигурировать для разных ситуаций. Как помочь во втором вопросе, не знаю. У меня не получилось. Кстати, в асме таких проблем нет
0
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
28.08.2018, 12:37 | 28 |
...мне кажется, это сизифов труд. Обычно архитектура софта строится на принципе HW->HAL->LIB->APP. То есть вы разделяете функцию в LIB, оставляя поле для предефайнов из HAL, который уже как правило HW-specific. То есть "по 100 раз" придется написать HAL, но LIB останется почти без изменений (кода). По крайней мере это грамотный подход, когда в LIB вы уже ничего трогать не будете, даже при добавлении нового чипа. Достаточно будет просто добавить новый файлик в список HAL
1
|
28.08.2018, 12:37 | |
28.08.2018, 12:37 | |
Помогаю со студенческими работами здесь
28
AVR JTAG mkI + avarice + avr-gdb + Linux AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC Подмена CPUID CPUID и FeatureSet Cpuid информация Команда CPUID Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |