Страница 7 из 130

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

Добавлено: Чт мар 17, 2011 09:44:01
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 имеет счетный вход.

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

Добавлено: Чт мар 17, 2011 10:26:17
mDI-WFG
Capture/compare mode register 1 (TIM1_CCMR1)
и такой для любого канала, и можно настроить на вход и выход вроде как, вот только что то не получается.

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

Добавлено: Чт мар 17, 2011 11:32:01
GP1
Capture/compare mode register 1 (TIM1_CCMR1)

Это несколько не то что тебе нужно.
CAPTURE - в регистр данных перепишется число из счетчика по приходу импульса на входную ногу.
COMPARE - при совпадении числа записанного в регистре и счетчике возникнет прерывание.
написал коряво :dont_know: , но смысл думаю понятен

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

Добавлено: Чт мар 17, 2011 11:41:19
mDI-WFG
Хммм тоже не плохо, можно будет считать время между событиями. Не уже ли нельзя организовать счетчик внешних событий, апаратный, чтоб сам считал а раз в секунду я смотрел сколько там набежало, число переписывал куда мне нужно и обнулял а он заново насчитывал бы.

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

Добавлено: Чт мар 17, 2011 11:52:01
GP1
смотри RM0016 стр.137, это структура TIM1, обрати внимание на TIM1_ETR.
Сам я его не юзал :))) , не было необходимости, но по-моему это оно.

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

Добавлено: Чт мар 17, 2011 12:05:33
mDI-WFG
Его то я и шуршу, спасиб, буду смотреть. Печаль что у STM8S103 выхода TIM1_ETR то нет, только у 105го, ну все равно попробую. Просто програмно реализовывать не вариант при частоте событий в 2кГц он 12% в ремени будет считать, а прогу то кто за него будет делать. Если есть какие идеи по использованию другой периферии или другие хитрые идеи подсчета то с удовольствием расмотрю :) .

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

Добавлено: Чт мар 17, 2011 12:17:07
GP1
Самое бональное решение - использовать внешнее прерывание на какой-нибудь ноге.
Считаешь приходящие импульсы, а с помощью таймера организуешь временное окно, и вот оно - счастье. :)))

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

Добавлено: Чт мар 17, 2011 19:07:38
mDI-WFG
Была идея такая, но боюсь что больно частый ухот на прерывание будет мешать выполнению остальной части программы, а хотелось бы чтоб он тихо сам считал и все, я бы только получал результаты счета когда это необходимо. Ну завтра попробую TIM1_ETR настроить но вот что со 103й делать потом пока не знаю.

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

Добавлено: Чт мар 17, 2011 19:33:31
GP1
mDI-WFG писал(а):... больно частый ухот на прерывание ....
это при 2 кГц то :shock:
прерывание будет генерироваться 1 раз в 500мкс, что при 16 МГц тактовой - 8000 тактов!!!, это примерно 3000-5000 исполняемых машинных команд.

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

Добавлено: Пт мар 18, 2011 08:22:54
mDI-WFG
:)) на 3 порядка ошибся, виноват.

Еще один нубский вопрос, вот в IAR
__interrupt void TIM4_OVR_UIF(void)
прерывание от таймера так выглядит... внимание знатоки=)... как выглядит функция обработки прерывания от пина PD4?

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

Добавлено: Пт мар 18, 2011 15:50:19
GP1
mDI-WFG писал(а):... как выглядит функция обработки прерывания от пина PD4?
как ты ее напишешь так и быдет выглядеть :)))

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

Добавлено: Сб мар 19, 2011 18:02:44
mDI-WFG
я немного не про то=), ээто то ясно.
там пишется #pragma vector=TIM4_OVR_UIF_vector где TIM4_OVR_UIF_vector и есть номер вектора, но в iostm8s105c6.h для порта что то не нашел, а с даташитом как то не понятно там для порта PD написан номер 0х00 8030, странный какой то а у например таймера 4 0х19, ни чего вот и не могу понять. Прога есть моя, там по прерыванию светодиод мигает, как нажимаю на кнопку так он уходит в непонятную часть, так как флаг прерывания приходит а оно не описанно, так вот как его описать?

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

Добавлено: Вт мар 22, 2011 01:09:11
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;
   }

}
Где грабли?..

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

Добавлено: Вт мар 22, 2011 13:51:05
Goodefine
Грабли нашлись :)
Оказалось что пин не тот... PC3 нужен. А что тогда за USART1_TX на PC5?

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

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


Вкратце- один пин имеет несколько функций, а также выходы модулей могут быть на разные пины ...
PS Не пренебрегайте сносками...

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

Добавлено: Вт мар 22, 2011 21:21:08
Goodefine
dosikus писал(а): Читаем о Alternate function remapping ...
Спасибо! Почитаю...

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

Добавлено: Вт мар 22, 2011 21:31:34
dosikus

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

Добавлено: Пт мар 25, 2011 08:04:41
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;
Подскажите где собака зарыта и что не так, может что то забыл или наоборот лишнего сделал? Даже как просто ацп не получаеться запустить.

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

Добавлено: Пт мар 25, 2011 20:48:45
qwerky
Печаль что у STM8S103 выхода TIM1_ETR
угу, причем таких граблей разработчики STM8 набросали кучу. Напр. мин.нарпяжение 2.9В (от таблетки уже не запитать, могли бы и понизить на 0.2..0.3В), отсутствие компаратора, отсутствие входа счета таймера, неудачная разводка портов (разбросаны кусками, а не полные 8 бит) у STM8S103, у 8L101 - отсутствие АЦП, второго входа и выхода компаратора, кварцевого генератора также нет входа счета таймера (был бы отличный чип с такими параметрами).

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

Добавлено: Сб мар 26, 2011 07:19:18
Zheleznjakov
stm8s я сразу отложил, посмотри в сторону stm8l более поздняя версия мк и соотв очень много чего поменяли, в частности stm8l151k серия в паябельном корпусе.