Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

18.2 TIM2/TIM3 main features
TIM2/TIM3 features include:
● 16-bit up counting auto-reload counter.
● 4-bit programmable prescaler allowing the counter clock frequency to be divided “on
the fly” by any power of 2 from 1 to 32768.
● 3 independent channels for:
– Input capture
– Output compare
– PWM generation (edge-aligned mode)
– One pulse mode output
● Interrupt request generation on the following events:
– Update: counter overflow, counter initialization (by software)
– Input capture
– Output compare
что-то я не нашел здесь, что он может считать внешние импульсы.
может чего не догоняю - подскажите.

зы: по-ходу только TIM1 имеет счетный вход.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

Capture/compare mode register 1 (TIM1_CCMR1)
и такой для любого канала, и можно настроить на вход и выход вроде как, вот только что то не получается.
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Capture/compare mode register 1 (TIM1_CCMR1)

Это несколько не то что тебе нужно.
CAPTURE - в регистр данных перепишется число из счетчика по приходу импульса на входную ногу.
COMPARE - при совпадении числа записанного в регистре и счетчике возникнет прерывание.
написал коряво :dont_know: , но смысл думаю понятен
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

Хммм тоже не плохо, можно будет считать время между событиями. Не уже ли нельзя организовать счетчик внешних событий, апаратный, чтоб сам считал а раз в секунду я смотрел сколько там набежало, число переписывал куда мне нужно и обнулял а он заново насчитывал бы.
Реклама
Эиком - электронные компоненты и радиодетали
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

смотри RM0016 стр.137, это структура TIM1, обрати внимание на TIM1_ETR.
Сам я его не юзал :))) , не было необходимости, но по-моему это оно.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

Его то я и шуршу, спасиб, буду смотреть. Печаль что у STM8S103 выхода TIM1_ETR то нет, только у 105го, ну все равно попробую. Просто програмно реализовывать не вариант при частоте событий в 2кГц он 12% в ремени будет считать, а прогу то кто за него будет делать. Если есть какие идеи по использованию другой периферии или другие хитрые идеи подсчета то с удовольствием расмотрю :) .
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Самое бональное решение - использовать внешнее прерывание на какой-нибудь ноге.
Считаешь приходящие импульсы, а с помощью таймера организуешь временное окно, и вот оно - счастье. :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

Была идея такая, но боюсь что больно частый ухот на прерывание будет мешать выполнению остальной части программы, а хотелось бы чтоб он тихо сам считал и все, я бы только получал результаты счета когда это необходимо. Ну завтра попробую TIM1_ETR настроить но вот что со 103й делать потом пока не знаю.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

mDI-WFG писал(а):... больно частый ухот на прерывание ....
это при 2 кГц то :shock:
прерывание будет генерироваться 1 раз в 500мкс, что при 16 МГц тактовой - 8000 тактов!!!, это примерно 3000-5000 исполняемых машинных команд.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

:)) на 3 порядка ошибся, виноват.

Еще один нубский вопрос, вот в IAR
__interrupt void TIM4_OVR_UIF(void)
прерывание от таймера так выглядит... внимание знатоки=)... как выглядит функция обработки прерывания от пина PD4?
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

mDI-WFG писал(а):... как выглядит функция обработки прерывания от пина PD4?
как ты ее напишешь так и быдет выглядеть :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

я немного не про то=), ээто то ясно.
там пишется #pragma vector=TIM4_OVR_UIF_vector где TIM4_OVR_UIF_vector и есть номер вектора, но в iostm8s105c6.h для порта что то не нашел, а с даташитом как то не понятно там для порта PD написан номер 0х00 8030, странный какой то а у например таймера 4 0х19, ни чего вот и не могу понять. Прога есть моя, там по прерыванию светодиод мигает, как нажимаю на кнопку так он уходит в непонятную часть, так как флаг прерывания приходит а оно не описанно, так вот как его описать?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Вот и у меня лыжи не едут в простейшей ситуации... Весь день бодаюсь с USART-ом. Начал с использования стандартной библиотеки, закончил ручной настройкой регистров. Результат один: на выводе USART_TX (PC5, STM8L DISCOVERY) всегда ноль и ничего не дрыгается :( Причем в RM0031 указано:
USART_TX is the serial data output. When the transmitter is disabled, the output pin returns
to its I/O port configuration. When the transmitter is enabled and nothing is to be
transmitted, the pin is at high level...
Т.е. дополнительно настривать gpio соответствующих лап не нужно... Или нужно?
Отладчиком (после передачи) вижу, что статусный регистр:
USART1_SR=0xC0
Что означает
Data is transferred to the shift register
и
Transmission is complete
USART_BRR1=0x03
USART_BRR2=0x04
Верно
USART_CR2=0x08
Значит
Transmitter is enabled
CLK_PCKENR1=0x20 - USART1 тактируется...

Но на выходе всегда ноль.. Уже руками подтяжку прописывал - тогда всегда единица...

Код:

Код: Выделить всё

#include "stm8l15x.h"

void main(void)
{
uint32_t i=0x0fff;
//Тактирование ядра 2Мгц:
 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_8);
//Разрешаем тактирование USART:
CLK->PCKENR1 |= CLK_PCKENR1_USART1;
//Задаем скорость передачи 38400 (при 2Мгц):
USART1->BRR2 = 0x04;
USART1->BRR1 = 0x03;
//Включаем передатчик:
USART1->CR1 = 0;
USART1->CR3 = 0;
USART1->CR4 = 0;
USART1->CR5 = 0;
USART1->CR2 = USART_CR2_TEN;

  while (1)
  { 
	USART1->DR = 0x38;
	while(!(USART1->SR & USART_SR_TC));
	 //delay
	 while(i)i--;
	 i=0x0fff;
   }

}
Где грабли?..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Грабли нашлись :)
Оказалось что пин не тот... PC3 нужен. А что тогда за USART1_TX на PC5?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Goodefine писал(а):А что тогда за USART1_TX на PC5?
Читаем о Alternate function remapping . Подробно расписано в RM0031
11 Routing interface (RI) and system configuration
controller (SYSCFG)


Вкратце- один пин имеет несколько функций, а также выходы модулей могут быть на разные пины ...
PS Не пренебрегайте сносками...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

dosikus писал(а): Читаем о Alternate function remapping ...
Спасибо! Почитаю...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

Сообщение mDI-WFG »

Помогите плиз запустить аналогового сторожа. Вроде все настроил а на прерывание не уходит. Подаю сигнал на PD3/ADC_ETR
ADC_CSR_bit.EOC=1; //Полное преобразование
ADC_CSR_bit.AWD=1; //Включение слежения (Сам не пойму за чем следить и зачем)
ADC_CSR_bit.AWDIE=1; //Включение прерывания от AWD
ADC_CR1_bit.ADON=1; //Включение преоьразования
ADC_CR2_bit.EXTTRIG=1; //Включение срабатывания от внешнего события
ADC_CR2_bit.EXTSEL=1; //Внешнее событие ADC_ETR
ADC_HTRH=0x99; //Верхний предел срабатывания
ADC_HTRL=0x03;
ADC_LTRH=0x0C; //Нижний предел срабатывания
ADC_HTRL=0x02;
Подскажите где собака зарыта и что не так, может что то забыл или наоборот лишнего сделал? Даже как просто ацп не получаеться запустить.
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Пт июн 12, 2009 19:17:35

Сообщение qwerky »

Печаль что у STM8S103 выхода TIM1_ETR
угу, причем таких граблей разработчики STM8 набросали кучу. Напр. мин.нарпяжение 2.9В (от таблетки уже не запитать, могли бы и понизить на 0.2..0.3В), отсутствие компаратора, отсутствие входа счета таймера, неудачная разводка портов (разбросаны кусками, а не полные 8 бит) у STM8S103, у 8L101 - отсутствие АЦП, второго входа и выхода компаратора, кварцевого генератора также нет входа счета таймера (был бы отличный чип с такими параметрами).
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Сб июн 12, 2010 16:19:17
Откуда: Россия, Томск

Сообщение Zheleznjakov »

stm8s я сразу отложил, посмотри в сторону stm8l более поздняя версия мк и соотв очень много чего поменяли, в частности stm8l151k серия в паябельном корпусе.
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»