Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Чт май 14, 2015 15:11:39 Сообщений: 424 Откуда: Саратов
Рейтинг сообщения:0
Всем привет. Настроил tim2 на генерацию шим на третьем канале (d4), взяв пример [url=blog.mark-stevens.co.uk/2012/08/generating-pwm-signals-using-the-stm8s]отсюда[/url] Хочу получить еще один шим сигнал на другом канале. Подскажите, где задается на каком канале генерировать сигнал?
На D4 выведен первый канал. У Марка в примере тоже первый. Каким образом у вас возникла мысль, что вы запустили третий канал?
Канал в его примере конфигурируется регистрами TIM2_CCRx и TIM2_CCMRx, где x -- это номер канала. Еще есть регистры TIM2_CCERх, где x не означает номер, но там тоже задаются для них (каналов) параметры. По аналогии с уже имеющимися в процедуре инициализации действиями, можно сконфигурировать и остальные каналы, подставляя нужные значения в вышеупомянутые регистры.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:2 Медали: 1
Добрый день. Решил "поиграться" с STM8S103F3, это первое мое знакомство с таким МК. Среду разработки выбрал IAR (никогда с такой раньше не работал).
Написал нижеследующий код. Данный код "мигает" портом, выполняя код то из флеш, то из ОЗУ. Цель проекта: первое ознакомление с данным МК и заодно проверка скорости выполнения кода из флеш и из ОЗУ.
ld a, Flag //если флаг 0 уйдем в ОЗУ jrne TR1 //ld a,#0 ld (0x09,SP),a //запишем адрес возврата на ОЗУ ld (0x08,SP),a mov Flag,#1 iret //выход и прерывания
TR1: //если флаг 1 уйдем в флеш ld A,#(low loop) ld (0x09,SP),a ld A,#(high loop) ld (0x08,SP),a
Код работает. Вопросов к самому коду нет. Вопрос к линковщику. Оказалось, что в IAR нет директивы .ORG или подобного. Немного поковырялся и поломал голову. Как писать линковщик нормально я не понял. Хотя смотрел разные источники, но моя голова как то понимать не захотела. Пробовал читать в том числе IAR Assembler™ Reference Guide for STMicroelectronics’ STM8 Microcontroller Family.
Взял пример готовый линковщика из IAR. Добавил туда регионы Vectors, RAM и изменил NearFuncCode на 0x8080.
Спойлер
Код:
///////////////////////////////////////////////////////////////// // Example ILINK command file for // STM8 IAR C/C++ Compiler and Assembler. // // Copyright 2015 IAR Systems AB. // /////////////////////////////////////////////////////////////////
define memory with size = 16M;
define region Vectors = [from 0x8000 to 0x807f]; place at start of Vectors { ro section .Vectors_sect };
define region RAM = [from 0x0000 to 0x03FF]; place at start of RAM { ro section .RAM_sect };
define region TinyData = [from 0x00 to 0xFF];
define region NearData = [from 0x0000 to 0x03FF];
define region Eeprom = [from 0x4000 to 0x427F];
define region NearFuncCode = [from 0x8080 to 0x9FFF];
define region FarFuncCode = [from 0x8000 to 0x9FFF];
define region HugeFuncCode = [from 0x8000 to 0x9FFF];
************************************************************************** Пока писал вопрос, понял в чем дело. Вопрос стер. Вопрос был по линковщику. Оказывается путь к файлу линковщика надо указывать для обеих конфигураций. Debug и Release. А я то думал, чего у меня ругается на релиз.
Задам тогда другой. Чем отличаются эти конфигурации?
************************************************************************** Ну и расскажу тогда, как мне кажется, интересный момент. Есть в МК такая команда INT. Код ее $82XXXXXX, где X трехбайтный адрес (из PM0044). Там же указано что данная инструкция может использоваться только в таблице прерываний в роли вектора. Не IAR не STVD команду int понимать не хочет. В iar таблицу векторов заполнял вот такими директивами dc32 (0x82000000+Tim2OV). Попробовал эту же директиву засунуть внутрь кода, чего вроде как делать нельзя. Если запускать код в режиме симуляции iar, то код виснет на ней. А вот если в режиме реальной отладки в железе, то эта инструкция работает как безусловный переход, содержимое указателя стека не меняется. Конечно я не говорю что эту инструкцию можно и нужно применять как безусловный переход, так, интересный факт.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
При скромном опыте программирования данного камня поделюсь опытом. Иногда камень переставал отвечать. Помогало в нужный момент нажатия резет. В stvd трудно было попасть в этот момент, в iar легко
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Еще легче попадать в резет, если завести его от программатора отдельным проводом на соответствующую ногу МК и в настройках среды прописать under reset. Тогда среда сама будет попадать в этот резет, причем, каждый раз удивительно точно.
Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Чт май 14, 2015 15:11:39 Сообщений: 424 Откуда: Саратов
Рейтинг сообщения:0
Всем привет. Управляю 4мя ДПТ через PWM с помощью таймеров 1 и 2. Параллельно опрашиваю АЦП. Бывает запуск АЦП совпадает с фронтом одного из PWM'ов. Как их сихнронизировать? Были идеи использовать режим счёта up+down, как бы добавляя еще одну метку в сигнал ШИМа где-нибудь посередине, чтобы запустить АЦП, но с этого таймера выведено только 3 канала у меня.
Добавлено after 1 minute 15 seconds:
axillent писал(а):
знает ли кто способ как отлаживать с одного компьютера паралельно два STM8?
IAR у меня хватает пераый программатор и второй игнорирует
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения