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

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

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

double i=100;

void main(void){

i=i/3;

}

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

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

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

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

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

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

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

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

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

#include  <dalnomer.c>

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

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

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

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

Я вроде про это рассказывал в одном из уроков. А может позабыл. Надо препроцессору задать путь к файлу.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 пользователей онлайн

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

  • Сообщения

    • Шота дохрена. Это если мультик может на килогерце. Обычно нет, предел 400 Гц.
    • Да, сначала был написан бутлодер для тини 24. Там нет выделенной памяти под бутлодер и заморочек с областями откуда можно записывать и перезаписывать флеш из программы, там все просто! Также там нет УАРТА, пришлось написать. Ну и самое главное: перезаписывай любые страницы флеш из любого места! В тини 24 под бутлодер ушло 48% памяти. В проекте технологи выделили слишком мало физического места под схему. Потом развел плату, оказалось, что места не так уж и мало. Потом выяснилось, что пинов впритык, и если будет дальнейшее расширение, их может не хватить. И после долгих (ну очень долгих) изысканий (цена, доступность, размеры) остановился на 88 (очень низкая цена, корпус чуть больше чем у 24, датчик температуры, а это важно, но не критически). Да, и сейчас все программируют на С и др. языках высокого уровня, что занимает очень (ну очень) много места, и чипы с небольшой памятью остаются не востребованы, и как следствие низкий спрос, и низкая цена!!! И при тупом переносе программы перезаписи страниц флеш программа не заработала... Ну и пошли изыскания, и я набрел на ВАШ проект, самый полный и законченный на то время. Нужно было выяснить чип который был у меня битый или я что-то упустил при программировании? (в бутлодерах я новичек) Недостаток 88 на сегодня, то что из пользовательской памяти нельзя перепрограммировать флеш, хотя страница стирается.   По поводу ВАШЕЙ программы: выяснилось, что при включенном фьюзе WDT в конфигурации, соединение не устанавливается, а в хелпе это не отражено. В некоторых ситуациях соединение можно восстановить лишь отключив / включив питание, сброс через ножку ресет не помагает. Будем копать дальше,... и глубже....!   Иногда при "установить соединение" выдается сообщение, "соединение не установлено", а на осциллографе виден ответ с чипа?
    • Сейчас по входу стоит керамика 0,1 мкФ + электролит 220 мкФ, иголок вроде нет, ну во всяком случае старичек С1-93 их не показывает.
    • Платы материнки и УВ пока в брак.  - Семён Семёныч... (с) Вы ничего не забыли, сэр? Как вы собрались регулировать УВ по уровню выходного сигнала??? Решение уже есть, пока в процессе. Вот так оно лучше работает.
    • Ну в идеале каптоновым скотчем как вам сказали,но можно обмотать чем угодно лижбе диалектриком было и хотябы немного высокотемпературное,я бы термо усадку взял,поидеи хорошо пойдет  Ещё видел где трансформатор медно алюминиевой жилой был на ампер 10 если не больше на вид аж,и там алюминиевая обмотка сечением пол сантиметра была замотана в бумагу пропитанную в воске,слоем миллиметр примерно эта изоляция была 
    • Всем привет. Собрал мх50, запустился с первого раза, когда делал замеры, соскочил щуп, спалил выходники и пред, заменил, все ок. Питание тор 250 ватт 30х2 выход, после выпрямителя 44В 20000мкф в плечо  увеличил входные емкости на оконечниках, добавил шунтирующую пленку  плата софт старта присутсвует цепь буше взял из ОМ2.7 ТП выставил 100мА добавлена термозащита на каждый канал( но как оказалось, с таким корпусом хрен перегреешь) АС kef q150 dac Aiyima a5 max получилось снять 81 ватт с канала при 8ом нагрузке (на фото самое точное измерение на левом мультиметре) без сигнала если прислонится к ас еле уловимое шипение  при наличии сигнала все ок, играет отлично, мне очень понравилось. в планах ОМ2.7
    • Уже 52 скачивания. Значит актуальна.
  • Похожий контент

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