Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Цитата:
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 имеет счетный вход.
_________________ Чем дальше, тем больше становлюсь занудой...
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Цитата:
Capture/compare mode register 1 (TIM1_CCMR1)
Это несколько не то что тебе нужно. CAPTURE - в регистр данных перепишется число из счетчика по приходу импульса на входную ногу. COMPARE - при совпадении числа записанного в регистре и счетчике возникнет прерывание. написал коряво , но смысл думаю понятен
_________________ Чем дальше, тем больше становлюсь занудой...
Зарегистрирован: Чт мар 17, 2011 07:38:54 Сообщений: 10
Рейтинг сообщения:0
Хммм тоже не плохо, можно будет считать время между событиями. Не уже ли нельзя организовать счетчик внешних событий, апаратный, чтоб сам считал а раз в секунду я смотрел сколько там набежало, число переписывал куда мне нужно и обнулял а он заново насчитывал бы.
Зарегистрирован: Чт мар 17, 2011 07:38:54 Сообщений: 10
Рейтинг сообщения:0
Его то я и шуршу, спасиб, буду смотреть. Печаль что у STM8S103 выхода TIM1_ETR то нет, только у 105го, ну все равно попробую. Просто програмно реализовывать не вариант при частоте событий в 2кГц он 12% в ремени будет считать, а прогу то кто за него будет делать. Если есть какие идеи по использованию другой периферии или другие хитрые идеи подсчета то с удовольствием расмотрю .
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Самое бональное решение - использовать внешнее прерывание на какой-нибудь ноге. Считаешь приходящие импульсы, а с помощью таймера организуешь временное окно, и вот оно - счастье.
_________________ Чем дальше, тем больше становлюсь занудой...
Зарегистрирован: Чт мар 17, 2011 07:38:54 Сообщений: 10
Рейтинг сообщения:0
Была идея такая, но боюсь что больно частый ухот на прерывание будет мешать выполнению остальной части программы, а хотелось бы чтоб он тихо сам считал и все, я бы только получал результаты счета когда это необходимо. Ну завтра попробую TIM1_ETR настроить но вот что со 103й делать потом пока не знаю.
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
mDI-WFG писал(а):
... больно частый ухот на прерывание ....
это при 2 кГц то прерывание будет генерироваться 1 раз в 500мкс, что при 16 МГц тактовой - 8000 тактов!!!, это примерно 3000-5000 исполняемых машинных команд.
_________________ Чем дальше, тем больше становлюсь занудой...
Зарегистрирован: Чт мар 17, 2011 07:38:54 Сообщений: 10
Рейтинг сообщения:0
я немного не про то=), ээто то ясно. там пишется #pragma vector=TIM4_OVR_UIF_vector где TIM4_OVR_UIF_vector и есть номер вектора, но в iostm8s105c6.h для порта что то не нашел, а с даташитом как то не понятно там для порта PD написан номер 0х00 8030, странный какой то а у например таймера 4 0х19, ни чего вот и не могу понять. Прога есть моя, там по прерыванию светодиод мигает, как нажимаю на кнопку так он уходит в непонятную часть, так как флаг прерывания приходит а оно не описанно, так вот как его описать?
Вот и у меня лыжи не едут в простейшей ситуации... Весь день бодаюсь с 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 тактируется...
Но на выходе всегда ноль.. Уже руками подтяжку прописывал - тогда всегда единица...
угу, причем таких граблей разработчики STM8 набросали кучу. Напр. мин.нарпяжение 2.9В (от таблетки уже не запитать, могли бы и понизить на 0.2..0.3В), отсутствие компаратора, отсутствие входа счета таймера, неудачная разводка портов (разбросаны кусками, а не полные 8 бит) у STM8S103, у 8L101 - отсутствие АЦП, второго входа и выхода компаратора, кварцевого генератора также нет входа счета таймера (был бы отличный чип с такими параметрами).
stm8s я сразу отложил, посмотри в сторону stm8l более поздняя версия мк и соотв очень много чего поменяли, в частности stm8l151k серия в паябельном корпусе.
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения