4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|||||||||||
1 | |||||||||||
Как еще можно пользоваться регистрами микроконтроллеров?24.11.2014, 15:27. Показов 3518. Ответов 51
Метки нет (Все метки)
Обычно обращение к регистрам МК проходит так:
Нужно составить обращение к регистрам разных модулей в компактной форме, то есть в функции по номеру канала уметь найти адрес нужного регистра и запрограммировать его. Вопрос: возможно ли это сделать с помощью такой схемы: зная глобальное смещение адресов регистров каждого модуля в отдельности прямо в выражении рассчитывать адрес конкретного регистра?
0
|
24.11.2014, 15:27 | |
Ответы с готовыми решениями:
51
Без понятия как регистрами пользоваться Как можно пользоваться Mathcad 15 на Windows 10 как можно пользоваться методами одного класса в другом? как пользоваться программатором для Whirlpool, раздобыл программатор, а как им пользоваться я не знаю Как объявить массив чтобы им можно было пользоваться в любом методе? |
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,714
|
||||||
24.11.2014, 16:36 | 2 | |||||
можно
А зачем??? создаешь структуру и приводишь адреса к ней например
и работа со структурой в плюсовом стиле, в Си несколько по другому (нужно typedef использовать)
0
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
24.11.2014, 16:37 | 3 |
1. Использовать указатель volatile u32 *p_Reg;
2. Передать в указатель адрес p_Reg = & (имя регистра) или p_Reg = адрес 3. Работа с регистром через указатель (*p_Reg) = данные
0
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 16:44 [ТС] | 4 |
В смысле, выравнивать структуру так, чтобы ее элементы лежали точно там, где должны быть регистры? Это ацкий труд. У меня есть готовый список адресов каждого регистра, из него легко сделать список смещений. А вот располагать их в порядке следования в памяти, а еще чтобы не было "зазоров", имхо, нереально. Или я че-то не так понял?
Добавлено через 2 минуты Я не понял, это три разных варианта или три шага одного варианта? Указатель volatile u32 *p_Reg использовать я могу, но тогда мне придется делать 4 разные функции под каждую настройку: настойка baudrate для 1, 2, 3, 4 канала отдельно, т.к. адреса регов разные. Пункт 2 и 3 вообще не понял
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
24.11.2014, 17:15 | 5 |
Вы не поверите, но так это сделано во всех без исключения SDK абсолютного большинства контроллеров. Скажем, для кортексов тот же УАРТ объявлен набором 32битных регистров в структуре, а каждый из конкретно взятых уартов просто имеет свое смещение в общей области. Таким образом, обращаясь USORT1->DR и USORT2->DR мы имеем дело с регистром данных разных портов, с одинаковым набором регов. Этот путь общепринятый.
Добавлено через 1 минуту ...зазоры могут присутствовать в виде пустых (reserved) байт или вообще - массивов. Ничего страшного в этом нет.
0
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 17:16 [ТС] | 6 |
Есть отличие в работе с такой структурой, когда она уже готова и тем, чтобы самостоятельно такую структуру бадяжить.
0
|
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,714
|
||||||
24.11.2014, 17:17 | 7 | |||||
не такой уж адский
зато потом будет гораздо проще при переходе с одного камня на другой, не надо будет править везде адреса да и чаще всего эту работу сделали за тебя производители компилятора или(и) процессора вот пример из Кеила штатный "stm32f10x_usart.h"(просто он у меня открыт )
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
24.11.2014, 17:18 | 8 |
ValeryS, это ж не то
0
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 17:19 [ТС] | 9 |
Ну вот у тебя здесь шесть регистров. У меня в Infineon/Keil такой клевой структуры нет и регистров 110 штук.
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||||
24.11.2014, 17:20 | 10 | |||||
вот USORT:
0
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 17:20 [ТС] | 11 |
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
24.11.2014, 17:22 | 12 |
какая разница? Вам советуют рациональное, а не быстро-легкое решение. Как сделать проще, я, например, пока не знаю... Ждем гуру
0
|
Модератор
8951 / 6717 / 921
Регистрация: 14.02.2011
Сообщений: 23,714
|
|||||||||||
24.11.2014, 17:23 | 13 | ||||||||||
вот от туда же файл stm32f10x.h
1
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 17:24 [ТС] | 14 |
А чем мой вариант не рациональный? Мой вопрос был в том легитимно ли вообще таким образом обращаться к регистру.
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
24.11.2014, 17:26 | 16 |
Тем, что запись, суммирующая адреса нечитабельна. Структуры привычнее и удобнее.
легитимно .
1
|
4 / 4 / 1
Регистрация: 20.04.2011
Сообщений: 141
|
|
24.11.2014, 17:26 [ТС] | 17 |
Там вперемешку регистры настройки параметром и/ф, буфера все, настройки прерываний.
XC2000 серия (C166 ядро)
0
|
Voland_
|
24.11.2014, 17:27
#18
|
Не по теме: PS: похоже на изобретение велосипеда... Счас выяснится, что эта чудесная структура регистров это USB или Ethernet :)
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
24.11.2014, 17:28 | 20 |
tiger(), так разбейте на части - мухи и котлеты отдельно, а затем соберите в доп.структуры укрупненными блоками.
0
|
24.11.2014, 17:28 | |
24.11.2014, 17:28 | |
Помогаю со студенческими работами здесь
20
Какими ещё способами можно ещё сделать? Можно ли при работающем макросе как то пользоваться другими excel? Открывать, изменять, закрывать? Как еще можно достучаться до БД? Можно ли пользоваться блоком питания ноутбука, после того как сработал автомат в электро щитке? как создать передаточную функцию звена, чтобы ей можно дальше пользоваться?(заменить элемент p, умножить. и т д)? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
|
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
|
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
|
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
|
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
|
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных
В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
|
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
|
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
|
Что такое паттерны программирования и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения
В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
|
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт
В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
|
Что такое javascript:void(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
|
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов
В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
|