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

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

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

Сообщение 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 имеет счетный вход.
Чем дальше, тем больше становлюсь занудой...
Изображение
mDI-WFG
Родился
Сообщения: 10
Зарегистрирован: Чт мар 17, 2011 07:38:54

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

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

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

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

Сообщение GP1 »

Capture/compare mode register 1 (TIM1_CCMR1)

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

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

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

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

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

Сообщение GP1 »

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

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

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

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

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

Сообщение GP1 »

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

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

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

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

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

Сообщение GP1 »

mDI-WFG писал(а):... больно частый ухот на прерывание ....

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

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

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

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

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

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

Сообщение GP1 »

mDI-WFG писал(а):... как выглядит функция обработки прерывания от пина PD4?

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

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

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

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

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

Сообщение 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;
   }

}

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

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

Сообщение Goodefine »

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

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

Сообщение dosikus »

Goodefine писал(а):А что тогда за USART1_TX на PC5?


Читаем о Alternate function remapping . Подробно расписано в RM0031
11 Routing interface (RI) and system configuration
controller (SYSCFG)


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

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

Сообщение Goodefine »

dosikus писал(а):Читаем о Alternate function remapping ...

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

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

Сообщение dosikus »

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

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

Сообщение 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;

Подскажите где собака зарыта и что не так, может что то забыл или наоборот лишнего сделал? Даже как просто ацп не получаеться запустить.
qwerky
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Пт июн 12, 2009 19:17:35
Контактная информация:

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

Сообщение qwerky »

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

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

Сообщение Zheleznjakov »

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

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