17.04.2014, 20:51
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: FAQ по STM8
Я на TIM4 делал. Задержки с прерываниями нормально работают только с таймером. Надо на системном делать по науке, конечно.
|
|
|
|
18.04.2014, 07:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от Easyrider83
|
Надо на системном делать
|
Вы о чем? Я не понимай! Где его взять, этот системный таймер? У меня только TIM1, TIM2 и TIM4. Ну еще собаки. Вы с STM32 не путаете?
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
18.04.2014, 08:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,630
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от DK
|
Вы с STM32 не путаете?
|
Путает. На STM8 нужно использовать тот таймер, который не нужен. У меня в делах, не связанных с подключением входов-выходов таймеров к ногам, использовался TIM1, а вот, скажем, в управлялке ШД (там TIM1, TIM2 и TIM3 используются для генерирования меандра с разной частотой — CLK на каждый из трех двигателей) в качестве системного используется TIM4.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
18.04.2014, 08:34
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FAQ по STM8
DK, на любом таймере сделай декрементирующий счетчик в прерывании .
Загрузка и проверка в главном цикле . А там или в state machines или тупая задержка...
nixto, алаверды ...
__________________
Осторожно , злой кот
|
|
|
|
18.04.2014, 10:25
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: FAQ по STM8
dosikus, я врода выкладывал уже:
Код:
|
void delays_init (void)
{
CLK-›PCKENR1 |= CLK_PCKENR1_TIM4;
TIM4-›PSCR = TIM4_PRESCALER_16; //16MHz core frequency
TIM4-›EGR |= TIM4_EGR_UG;
TIM4-›CR1 = TIM4_CR1_CEN;
}
void delay_us (u8 us)
{
TIM4-›CNTR = 0;
while (TIM4-›CNTR ‹ us);
}
void delay_ms (u16 ms)
{
ms = ms‹‹2;
while (ms--) delay_us(250); |
Не забывайте менять прескалер. Должен от 1МГц работать.
|
|
|
|
18.04.2014, 10:49
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FAQ по STM8
Я о вариации Systick :
Код:
|
int TimingDelay;
void delay_ms (uint16_t nTime)
{
TimingDelay = nTime;
while (TimingDelay);
} |
Код:
|
extern int TimingDelay;
INTERRUPT void Tim4_update(void)
{
TIM4-›SR1 &=~TIM4_SR1_UIF;
if (TimingDelay) {
TimingDelay--;
}
} |
инит таймера опускаю...
__________________
Осторожно , злой кот
|
|
|
|
18.04.2014, 20:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: FAQ по STM8
У меня вот такое получилось (ну тут тупо задержки нужны, на энкодерах дребезг устранить).
Проверял от 50мкс до 1с - более-менее правильно считает (до 100мкс слегка косячит, да и х бы с ним, десяток нопов воткнуть).
[HTML]void delayus(uint32_t aa)
{
if(aa ›= 50000)
TIM1_TimeBaseInit(1600, TIM1_COUNTERMODE_DOWN,(uint16_t)(aa / 100), 0);
else if(aa ›= 1000)
TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_DOWN,(uint16_t)aa, 0);
else if(aa › 100 && aa ‹ 1000)
TIM1_TimeBaseInit(13, TIM1_COUNTERMODE_DOWN, (uint16_t)aa, 0);
else if(aa ‹ 100)
TIM1_TimeBaseInit(10, TIM1_COUNTERMODE_DOWN, (uint16_t)aa, 0);
TIM1_Cmd(ENABLE);
while(!flagT1);
flagT1 = 0;
TIM1_Cmd(DISABLE);
}
[/HTML]
В прерывании только флаг выставляется. А ежели нужен будет основной цикл - переделаю на проверку этого флага.
Ну да, на 16МГц расчитано.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
Последний раз редактировалось DK; 18.04.2014 в 20:50.
|
|
|
|
18.04.2014, 20:52
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FAQ по STM8
DK, Что за камень ? Есть же режим encoder для таймера .
__________________
Осторожно , злой кот
|
|
|
|
18.04.2014, 21:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: FAQ по STM8
Походу схемку прикидываю (пока все но отладочной крутится) - что там насчет подводных камней в схемотехнике? Без кондюка, как я понял, не работает. Ладно, есть у меня несколько по 1мкФ - насколько критична емкость? От 0.47 до 3.3 мкФ вроде написано, но вот из опыта?
Ногу сброса нужно на STM8S103F3 к питанию притягивать (видел на эту тему разные мнения)?
И еще один шкурный вопрос У меня STM8S VL-discovery (STM8S003). Будет егойный ST-LINK другие процы шить? На STM32 я не замахиваюсь пока Мне б с STM8 немного разобраться.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
18.04.2014, 21:10
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от DK
|
Ногу сброса нужно на STM8S103F3 к питанию притягивать (видел на эту тему разные мнения)?
|
Нет не надо, только блокировочный конденсатор
Сообщение от DK
|
И еще один шкурный вопрос У меня STM8SVL-discovery (STM8S003). Будет егойный ST-LINK другие процы шить?
|
Только STM8x и будет. Но есть финт ушами - можно из твоего набортного STLink сделать полноценный STLink v2. Шить будет все ...
Сообщение от DK
|
На STM32 я не замахиваюсь пока Мне б с STM8 немного разобраться.
|
Режим encoder'а есть и в STM8 ...
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:27.
|
|