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

Рекомендуемые сообщения

Если пользуетесь элементом из меню View - corse, то для адекватного отображения количества выполненных процессор тактов необходимо открывать и disassembly. Только тогда будет реальное количество тактов отладчик считать. Например:

double i=100;

void main(void){

i=i/3;

}

Посмотрите сколько будет отображаться тактов на эту команду с открытым меню disassembly и без. При этом должно быть активно окошко disassembly, нужно ткнуться на него мышкой, и выполняться step into(F11).

Такие вот особенности.

Опять же, надо иметь ввиду, что не все ассемблерные команды выполняются за один машинный такт. Т. е. таймеру можно доверять однозначно, а вот счётчику команд в отладчике нет)

При условии использования ST-LINK конечно.

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

А вообще, есть вариант смотреть сколько именно циклов выполняется там или иная функция. Но это возможно только в режиме "без железа" ,т .е. необходимо пользоваться симулятором.

В меню view/register находим register CPU, и там уже будут виртуальные счётчики CYCLECOUNTER - количество циклов после сброса, CCSTEP-количество циклов на последние действие, и два CCTIMER их можно сбрасывать когда необходимо и смотреть сколько с этого момента заняло циклов выполнение программы.

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Как вы подключили файл dalnomer.c ?

#include  <dalnomer.c>

- Если кинуть в папку с проектом этот файл, то компилятор выдает ошибку

- Если создать пустой файл и сохранить его под именем dalnomer.c и дальше кликнуть по main.c => add=>dalnomer.c

То подключения файла не происходит. Как его можно подключить не закидывая этот файл в папку с прогой?

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я вроде про это рассказывал в одном из уроков. А может позабыл. Надо препроцессору задать путь к файлу.e72be58203ba.jpg

Точнее к папке, где находиться файл.

Это в настройках проекта.

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

Если не сложно сделайте пожалуйста отдельный урок по прерываниям.

А то пока не очень понятно как это работает.

Например кто вызывает функцию TIMR4_ISR

__interrupt void TIMR4_ISR(void){

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

Функции прерывания не вызываются, это адрес, на который процессор переходит автоматически. Т. е. это определённая ячейка в памяти программ, куда записывается адрес функции обслуживания прерывания, процессор автоматически переходит по этому адресу, там лежит адрес программы обслуживания прерывания. Компилятор позволяет выполнить эту операцию в полной мере, сохраняя в стек данные регистров процессора, счётчика команд и т. д. На самом деле обслуживание прерываний необходимо хотя бы один раз попробовать сделать на ассемблере, чтобы получить полное представление об этом. Ну а видео, хорошо, следующие сделаю про прерывания.

Устройства будут такие. Ну и наверное индикатор.

http://ru.aliexpress...1725211643.html

http://ru.aliexpress...05-427fcc1ec4a3

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

Конспект к уроку 5.

869a9c52e8dd.jpg

Схема подключения:

4932398217f2.jpg

Характеристики датчика HC-SR04

В отличие от инфракрасных дальномеров

+ не влияют источники света или цвет препятствия

- Могут возникнуть затруднения при определении расстояния до пушистых или тонких объектов

- скорость звука в воздухе зависит от температуры

Характеристики

Напряжение питания

Ток потребления в режиме ожидания: 2мА

Ток потребления в режиме работы: 15мА

Частота ультразвука 40 кГц

Угол обзора 15 градусов

Измеряемое расстояние

от 0,03 до 0,6м с разрешающей способностью 3 мм

от 0,6 до погрешность увеличивается

Расчет расстояния

S=F/58,

S – расстояние в сантиметрах,

F – продолжительность импульса в микросекундах.

Для запуска датчика необходимо:

1. МК сформировывает импульс на вход датчика trigger длительностью не менее 10 мкс, по даташиту рекомендуют 60мкс (Т.е. даем единицу на соответствующую ногу микропроцессора)

2. ДАТЧИК передает 8 звуковых импульсов для измерения расстояния (далее датчик сам сформирует на выходе echo сигнал, чем он дольше, тем больше расстояние.)

3. МК принимает сигнал по каналу echo, считает его длительность и далее мы можем перевести это в расстояние по формуле: длительность импульса / 58

//функция ообслуживания датчика
int time_count(void){
int time=0;
i=30; // устанавливаем длительность запускающего импульса
__disable_interrupt(); // запрещаем прерывания
PD_ODR_bit.ODR6=1; // включаем порт D6
while(--i,i); // держим сигнал включенным (30)
PD_ODR_bit.ODR6=0; //Выключаем наш сигнал, порт D6
while(PD_IDR_bit.IDR7==0); // ожидаем импульс с датчика порт D7 echo
while(PD_IDR_bit.IDR7==1){ //как только видим на порту D7 единицу начинаем считать его длительность
++time; //считаем время
}
__enable_interrupt();
return time;
}

//функция измерения дальности
void izm_dalnost(void){
dalnost=time_count()/58; // 58 - рекомендуемый делитель по даташиту, Зависит от скорости тактирования нашего процессора
}

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Тут возник вопрос.

Вот у меня есть рабочая частота - 16 МГц . Как мне узнать сколько тактов будет в одной секунде?

Или если я ее понижу до 2 МГц или до 4 МГц. Сколько тактов будет в секунде?

Если секунды слишком большая величина, то сколько тактов будет в наносекунде?

Есть ли какая то формула? или зависимость?

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

1/fmaster для периферийных устройств, 1/fcpu для ядра процессора. Т. е. если рабочая частота процессора 16 МГц, то время одного машинного такта - 1/16000000 Гц = 62,5 нс.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

А не подскажите при какой частоте процессора начинаются проблемы?

Типа дорожки воспринимаются за емкости и им подобные проблемы. Какая максимально комфортная работа процессора? 16МГц, 24МГц или 64МГц и тд?

Как я понимаю, частоту процессора можно держать значительно выше, чем частоту шины?

Какая максимально комфортная частота процессора и шины?

Изменено пользователем IDis
Ссылка на комментарий
Поделиться на другие сайты

Лучше не экспериментировать, какая указана в документации, ту и использовать. Т. е. 16 МГц, или 24 МГц(для тех МК, где это указано в документации) Возможно ядро оно и сможет работать на более высокой частоте, но оно внутри процессора, доступа к нему нет, а узел тактирования может просто кварц/генератор с более высокочастотный не признавать.

Хотя, можете и провести эксперимент. Страшного ничего не должно случиться, только советую на DISCOVERY этого не делать. На отдельном процессоре.

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

время одного машинного такта - 1/16000000 Гц = 62,5 нс

Не подскажите, как подсчитать что бы светодиод моргал с периодичностью точно 1 секунду? Какое значение i должно тут быть?

void delay (unsigned long int i)
{while (i-->0);}
...
PB_CR2_bit.C20=1;
...
 PB_ODR_bit.ODR0=1;
 delay (100000);
 PB_ODR_bit.ODR0=0;
 delay (100000);

Возможно ли выполнить следующую задачу:

- "Светодиод 1" подключен к порту Е6 и мигает на частоте 16МГц с периодичностью в 1 000 тактов

- "Светодиод 2" подключен к порту В1 и мигает на частоте 16/8/128 с периодичностью в 1 000 тактов

- при срабатывании кнопки на порту А4, частоты меняются местами. То есть "Светодиод 1" тактируется с частотой 16/8/128 а "Светодиод 2" тактируется с частотой 16МГц

Как указать, что порт Е6 работает с одной частотой, а порт В1 с другой.

Или это невозможно сделать?

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

Нет, так нельзя. Порты не работают как таковые на какой либо частоте. Собственно порт представляет из себя буферный регистр. Например К1533ИР27 будет хорошим примером порта. Единственное что, тут он ещё и побитно доступен.

Таймер заведи по прерыванию и там время отсчитывай.

Собственно даже и таймер то не нужен. Всё программно можно сделать.

Т. е. не надо указывать никаких частот портам. Нужно временные задержки их переключения менять.

Напремер в функцию delay можно передавать не константу, а переменную, и менять её значение, в зависимости от состояния входа.

Изменено пользователем i80186
Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
  • 2 недели спустя...

офигеть, как тонко и информативно. Столько уважения в этих словах. Сразу видно человек с богатым опытом.

Отправлено с моего Wileyfox Swift через Tapatalk

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

  • 1 год спустя...

Если в МК не установлена защита от чтения, то считать можно. Записать вообще без проблем. А вот сможете разобраться в том что считаете или нет?

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

  • 5 месяцев спустя...

Очень нужная тема , рад что нашел , уроки просто луч света во тьме , автору спасибо !

вопрос ,  можно ли перепрограммировать уже прошитый контроллер SMT8  поясню : пытаюсь на свою машину  установить китайский автозапуск  который создан на этом микроконтролере ,  все установил но модуль почему то тупит ,  есть опция  заглушить двигатель после старта  нажатием педали тормоза , но после этого нажатия модуль как будь то засыпает минут на 40 ,  предполагаю что так прописано в коде , у платы есть четыре пина , я догадываюсь это под STlink  его я уже заказал с али , первый раз с этим связываюсь , очень интересно , хотелось бы допилить , освоить это с вашей помощью ,  если пишу не по адресу , скажите  я поищу другой форум .

Фото контроллера прикрепил 

спасибо 

IMG_20181222_233411[1].png

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

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...