Страница 585 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс авг 20, 2017 21:02:49
ARV
ПЛК - это законченное устройство промышленной автоматики, МК - это только микроконтроллер.
ПЛК - это больше похоже на миниатюрный компьютер с собственной ОС, интерфейсом с пользователем и т.п.
В конце концов, что мешает вам почитать хотя бы
википедию?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 22, 2017 17:38:36
Chip115
Всем привет!
Столкнулся с акселерометром FXOS8700. Управляется по I2C. Адрес устройства 0х1E. Контроллер STM32L476.
Проблема с чтением регистра WHOAMI. (ID устройства). Точнее, в целом проблема чтения данных с устройства. Набросал функцию.
В качестве аргумента передаю адрес регистра который намерен считать.
Код: Выделить всё
uint8_t FXOS8700_ReadByte (uint8_t ui8reg)
{
uint8_t ui8byteFromReg;
HAL_I2C_Master_Transmit (&hi2c3, (0x1E<<1), &ui8reg, 1, 200);
HAL_I2C_Master_Receive (&hi2c3, ((0x1E<<1)|0x01), &ui8byteFromReg,1, 200);
return ui8byteFromReg;
}
Как я понял (до этого делов с I2C не имел), для чтения должны придерживаться диаграммы single byte read.
вот вырезка из доки.

Вот тут непонятки. Адрес имеет длину 7 бит. Я так понял, просто так мы его передать не можем? Надо его сдвинуть влево на бит и тогда подсунуть в функцию HAL_I2C_Master_Transmit . Сначала мы передаем устройству адрес+W, получаем от устройсва AK, затем передаем адрес регистра который будем читать (в нашем случае это 0х0D). После этого опять ожидаем AK. За эту часть отвечает HAL_I2C_Master_Transmit.
Затем, (не понял как сгенерить SR) отсылаем адрес + R И после этого ожидаем AK и содержимое регистра 0х0D устройства. Но вот что-то на этом этапе линия данных ложится в нуль, хотя ID != 0. Вот сфотал (по другому не получается) экран с данным от лог. анализатора.
Работа функции transmit

Receive

Правильно ли я понял принцип обмена данными с устройством, которое сидит на I2C шине и в чем ошибка?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 23, 2017 08:13:17
АСУ
[uquote="Chip115",url="/forum/viewtopic.php?p=3167881#p3167881"]Затем, (не понял как сгенерить SR) отсылаем адрес + R И после этого ожидаем AK...[/uquote]
Перед отправкой адреса + бит направления (R) необходимо отправить повторно команду СТАРТ.
ST - "команда" СТАРТ
SR - "команда" повторно СТАРТ
SP - "команда" СТОП
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 23, 2017 16:46:35
Chip115
Да, но не понятно как средствами HAL это сделать. Конечно можно опуститься на уровень (уровни) ниже, поковырять регистры, но хотелось быть заставить высокоуровневые функции заставить работать.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 23, 2017 19:28:50
Chettuser
Народ! А есть ли что-нибудь у STM32 для сравнения заменяемости по ногам серий F4->F7->H7 ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб сен 16, 2017 09:01:44
Chettuser
Перепрошил STM32F407G-DISC1 из папки v1.0.0 - теперь не работает пример с акселерометром. Чип у меня квадратный. (
http://forum.easyelectronics.ru/viewtop ... 35&t=18213). Самое интересное, что теперь даже заранее слитая заводская прошивка тоже не работает! Запросы от МК идут. Чудеса, бл@!

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн окт 02, 2017 22:03:51
NebelWefer
подскажите, как узнать загруженность ЦП во время выполнения программы? Только через отладчик? atmega/tiny
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 03:26:11
КРАМ
Загруженность ЦП в одноядерных МК всегда 100%. За исключением режима сна. Узнать скважность режима сна можно либо расчетным путем, либо косвенно по току потребления.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 08:52:35
NebelWefer
не совсем точно выразился, понятно, что всегда есть while (1), вот узнать сколько примерно % ресурсов мк затрачивает на этот пустой цикл...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 10:28:53
abc
В начале цикла - включили светодиод, в конце - погасили.
Сигнал подаете на логический анализатор (или осциллограф) и оцениваете.
http://radiokot.ru/forum/download/file.php?id=289220
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 10:33:48
Z_h_e
NebelWefer писал(а):вот узнать сколько примерно % ресурсов мк затрачивает на этот пустой цикл...
КРАМ писал(а):Загруженность ЦП в одноядерных МК всегда 100%.
МК без разницы что выполнять. Выбирает команду согласно указателю "счетчик команд" и выполняет ее. И делать он это будет всегда.
Пустой цикл while(1) скомпилируется в команду безусловного перехода саму на себя.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 12:35:25
Zhuk72
Такие вопросы задают те, кто не писал на асме

Для них "пустой цикл" - это висящий в состоянии покоя ЦП

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 19:23:29
Chettuser
Можно попробовать примерно прикинуть - я так делал с SysTick, который считывался по выходу в активную задачу, и вычислялось относительное время "простоя". Но это баловство конечно.
Кстати, я не ковырялся в исходниках F429Discovery, но там есть что то похожее. Даже график "загрузки" строит.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 19:56:15
dosikus
Chettuser, я ещё есть DWT...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 19:58:47
Chettuser
Я DWT пока не раскурил

Но чую классная штука!
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 20:12:49
dosikus
Угу, вот только жаль его в F0 нет...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт окт 03, 2017 20:23:34
Z_h_e
Zhuk72 писал(а):Такие вопросы задают те, кто не писал на асме
Может просто вопрос правильно задать не может. А посчитать загруженность можно от обратного. Например сделать программный счетчик во время работы пустого цикла и потом через определенное время посмотреть это значение. По этому значению сделать вывод сколько времени МК херней занимался.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 04, 2017 00:14:14
NebelWefer
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3197233#p3197233"]Такие вопросы задают те, кто не писал на асме

Для них "пустой цикл" - это висящий в состоянии покоя ЦП

[/uquote]
Вы это с потолка взяли? Кто говорил о покое? Вопрос был об определении времени затрачиваемого на определенные команды
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 04, 2017 09:21:48
Zhuk72
Я этого взял с вашего же вопроса.
Вам же сразу ответили, что ЦП никогда не простаивает, если находится не в спящем режиме. Но на это от вас опять последовал вопрос
сколько примерно % ресурсов мк затрачивает на этот пустой цикл...
Пустой цикл в реальности не пустой. Это либо (буду писать на асм ПИКов, который знаю) goto $, т.е. зацикливание на себя же в ожидании прерывания, где происходит основная работа, либо один или цепочка из нескольких btfss/btfsc REG,bit и goto в ожидании смены состояния бита. Могут быть и вариации, но в любом случае процессор ВСЕГДА ходит по командам и ВСЕГДА загружен на все 100.
Другое дело, сколько времени занимает этот цикл. Ну так это надо либо дебаггером/симулятором с таймером отслеживать, либо посмотреть на полученный асм код, просуммировать количество машинных циклов каждой команды и пересчитать в секунды в зависимости от системной частоты.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 04, 2017 09:39:04
ARV
Zhuk72 писал(а):но в любом случае процессор ВСЕГДА ходит по командам и ВСЕГДА загружен на все 100
не скажу за PIC, но для AVR это утверждение не такое категоричное

есть режим Noise reduction ADC, в котором ядро спит (остановлено) в течение цикла преобразования АЦП. то есть здесь загрузка явно не 100%, а меньше
помимо этого можно еще и усыплять его принудительно, ожидая внешних событий, например, что тоже перечеркивает категоричное ВСЕГДА ЗАГРУЖЕН НА 100%