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

STM8S103F3P6


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

Объясните пожалуйста следующие, на руках имеется STM8S103F3P6, сначала была проблема запустить SPI, проблема была даже не в запуске а корректной работе - сделал! А вот с таймером я засел вообще. Хочу сделать программный delay по средствам таймера TIM1 без прерываний. Ниже скидываю инициализацию таймера TIM1 и обработчник(функция delay)

 

Тактовая частота 2MHz.

 

Где загвоздка?

 

#include "iostm8s103f3.h"

void TIM1_init(void);
void delay_us(unsigned int d);

void TIM1_init(void)
{
  ////Величина автоперезагрузки////
  unsigned int auto_preload = 65535;
  TIM1_ARRH=((auto_preload&0xFF00)>>8);
  TIM1_ARRL=auto_preload&0x00FF;
  ////////////////////////////////
  ////////Установка делителя//////
  unsigned int div_load = 2000;
  TIM1_PSCRH=((div_load&0xFF00)>>8);
  TIM1_PSCRL=div_load&0x00FF;
  ////////////////////////////////
  TIM1_CR1|=(1<<7)|(1<<1)|(1<<0);
}

void delay_us(unsigned int d)
{
  TIM1_CNTRH=0;TIM1_CNTRL=0;
  TIM1_ARRH=((d&0xFF00)>>8);
  TIM1_ARRL=d&0x00FF;
  while(((unsigned int)((TIM1_CNTRH<<8)+TIM1_CNTRL))<d){};
}

 int main()
{
  /////////////////////////////////////
  //Отключаем Всю периферию			// 
  CLK_PCKENR1=0x00;
  CLK_PCKENR2=0x00;
  /////////////////////////////////////
  CLK_PCKENR1|=(1<<7);//Включаем тактирование для TIM1
  TIM1_init();
  //Настройка ногодрыга для проверки таймера//
  PB_DDR|=(1<<5);
  PB_CR1|=(1<<5);
  PB_CR2|=(1<<5);
  ////////////////////////////////////////////
   while(1)
  {
    PB_ODR&=~(1<<5);
    delay_us(1000);//1сек
    PB_ODR|=(1<<5);
    delay_us(1000);//1сек
  }
  return 0;
}
                                                           

 

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

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

Ну если я правильно помню, то для обновление счетных регистров надо сгенерировать update event. Далее, зачем сравнивать счетные регистры с числом d, если за вас это сделает счётчик и поднимет флаг переполнения?

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

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

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

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

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

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

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

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

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

Да кажется этот флаг.

@gafbich вот код для STM8L152C6T6. На седьмом пине на дискавери светодиод, все моргает.

 

#include <iostm8l152c6.h>

void delay( unsigned int d )
{
  TIM1_ARRH = d >> 8; //TIM1 ovf value
  TIM1_ARRL = d & 0xFF;
  TIM1_CNTRH = 0; //counter = 0 now
  TIM1_CNTRL = 0; 
  TIM1_EGR_bit.UG = 1;  //Call for Update Event
  TIM1_SR1_bit.UIF = 0; //clear flag
  TIM1_CR1_bit.CEN = 1; //start TIM1
  while ( TIM1_SR1_bit.UIF == 0 ); //waiting for event
}


void main()
{
  unsigned int prsc = 15999; // TIM1 prescaler - 1
  
  CLK_CKDIVR_bit.CKM = 0; //16 MHz system clocking
  CLK_PCKENR2_bit.PCKEN21 = 1; //Timer1 clocked
  TIM1_PSCRH = prsc >> 8; //High byte of prescaler
  TIM1_PSCRL = prsc & 0xFF; //Low byte of prescaler
  TIM1_CR1_bit.OPM = 1; // start only onse
  TIM1_CR1_bit.URS = 1; //event only if OVF
  //1 tick = 1 ms
  
  PC_DDR_bit.DDR7 = 1; //PC7 as outout
  PC_CR1_bit.C17 = 1; //PP mode
  PC_CR2_bit.C27 = 1; // high speed
  
  while ( true )
  {
    PC_ODR_bit.ODR7 ^= 1; //invert LED
    delay( 1000 ); //1000 ms delay
  }
}

 

Писал минут пять, проблем не возникло

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

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

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

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

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

Попробовал Ваш пример - не пашет( Вот в чем проблема не пойму.

Прошу прощения, Ваш пример и в правду работает! Спасибо

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

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

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

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

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

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

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

Еще один вопрос, в чем может быть затык в работе SPI на STM8S, к примеру настраивал на STM32 проблем вообще не было. а на данном камне мне посл каждой посылки (передачи) надо делать задержу в 20 nop`ОВ, а  иначе выброс кривой, если что могу кинуть с лог анализатора что получается без nop а что с nop

 

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

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

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

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

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

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

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

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

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

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

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