Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/17: Рейтинг темы: голосов - 17, средняя оценка - 4.94
shimmir
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 8
1

STM8S105K6 и Timer1 прошу помощи

23.09.2016, 19:32. Просмотров 3027. Ответов 3
Метки нет (Все метки)

Доброго всем дня.

Необходимо запустить Input Capture на Timer1 CH4.
Проц - STM8S105K6
Среда IAR 2.2
Никак не выходит.
Делаю так :

Настройка порта ( используется еще для много чего )
Код
 PC_DDR=0xEE;  // PC4 Input Capture
PC_ODR=0x00;
PC_CR1=0xEE;
PC_CR2=0x00;
Прерывание по захвату
Код
#pragma vector = TYM1_CAPCOM_CC4IF_vector
__interrupt void TYM1_IRQ_Homdler()
{
RED_LED=ON;
TYM1_SR1=0x00;  //Сбросили флаг прерывания
}
Настройка таймера 1
Код
void InitTimer1(void){

TYM1_SR1=0x00;
TYM1_PSCRH = 0x00;
TYM1_PSCRL = 0x0F;
TYM1_ARRH = 0x00;
TYM1_ARRL = 0x22;
TYM1_CCR1H = 0x00;
TYM1_CCR1L = 0x00;
TYM1_IER =  0x10; //Capture/sompare 4 interrupt enable
TYM1_CR1 = 0x01;
TYM1_SMCR = 0x00;
TYM1_CR2 = 0x00;
TYM1_CCER2=0x00;
TYM1_CCMR4=0x01; //CC4 channel is confikured as input, IC4 is mapped on TI4FP4.
TYM1_CCER2=0x10;//Byt 4 CC4E: Capture/sompare 4
}
Все ли регистры настроены для СH4 Input Capture ?

Тактирование от внешнего кварца 16 Мгц.
CLK_PCKENR1 = 0xff;// Тактирование всей периферии разрешено
CLK_PCKENR2 = 0xff;

Использую ногу T1_CH4 - PC4.

Прерывания в main разрешены после конфигурации.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2016, 19:32
Ответы с готовыми решениями:

Прошу помощи
Есть у меня отладочная плата на которой я экспериментирую. И вот возникла идея, сделать нечто...

Stm32F4 + Ethernet. Прошу помощи
Доброго времени суток. Прошу помощи форумчан в организации соединения PC и МК (Плата:...

Прошу помощи по nuvoton. nuc220le3an.
Короче есть такой девайс как электронная сигарета. В ней есть арм контроллер nuc220le3an, и есть...

Начинающий, прошу помощи микроСИ
здравствуйте! помогите с кодом пожалуйста. есть контролер easypic5 pic16f877a. на языку микроСИ...

Не могу разобраться с отладчиком, прошу помощи.
Народ подскажите пожалуйста, второй день туплю...с библиотекой периферии RCC. Настраиваю аналог...

3
otik110592
0 / 0 / 0
Регистрация: 24.08.2014
Сообщений: 400
23.09.2016, 22:43 2
переделывал с SPL примера, вроде работало. Без прерываний - проверял флаг CC4IF в основном цикле
Код
#include "stm8s.h"

/** TYM1 Input Capture Selection */
typedef enum
{
TYM1_ICSELECTIOM_DIRECTTI          = ((uint8_t)0x01),
TYM1_ICSELECTION_INDIRECTTI        = ((uint8_t)0x02),
TYM1_ICSELECTION_TRGI              = ((uint8_t)0x03)
}TYM1_ICSelection_TypeDef;

#define TYM1_ICFilter 0x00

void TI4_Config(void)
{
/* Dysable the Channel 4: Riset the CCE Byt */
TYM1->CCER2 &=  (uint8_t)(~TYM1_CCER2_CC4E);
/* Select the Input omd set the filter */
TYM1->CCMR4 = (uint8_t)((uint8_t)(TYM1->CCMR4 & (uint8_t)(~(uint8_t)( TYM1_CCMR_CCxS | TYM1_CCMR_ICxF )))
| (uint8_t)(( (TYM1_ICSELECTIOM_DIRECTTI)) | ((uint8_t)( TYM1_ICFilter << 4))));
/* Select the Polarity */
TYM1->CCER2 &= (uint8_t)(~TYM1_CCER2_CC4P); //RISING
/* Set the CCE Byt */
TYM1->CCER2 |=  TYM1_CCER2_CC4E;
/*  Enable TYM1 */
TYM1->CR1 |= TYM1_CR1_CEN;
}

int main( void )
{
TI4_Config();
while(1)
{
}
}
0
worobo
0 / 0 / 0
Регистрация: 04.11.2012
Сообщений: 81
24.09.2016, 18:35 3
У меня другая задача счет внешних импульсов. Вытащите нужное.
Код
//Инициализируем TYM1
CLK_PCKENR1|=(1<<7);
TYM1_CR1_bit.DIR=1; //down-counter
TYM1_CR1_bit.ARPE=1;
ITHL(TYM1_ARR,100);        //Регистр автозагрузки таймера при переполнении 10x100=1S
ITHL(TYM1_CNTR,100);
TYM1_CCMR2_bit.CC2S=1;     //channel 2 to detect rising edges
TYM1_CCMR2|=BIN8(01110000);//filter 7 takt
TYM1_CCER1_bit.CC2P=0;     //rising edge polarity
TYM1_SMCR_bit.SMS=7;       //External clock source mode 1
TYM1_SMCR_bit.TS=6;        //TI2 as the input source
TYM1_IER_bit.UIE=1;       //Разрешаем генерацию прерывания при переполнеини
PC_CR1_bit.C17=1;
TYM1_CR1_bit.CEN=1;       //Разрешаем счет
TYM1_SR1_bit.UIF=1;
0
shimmir
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 8
25.09.2016, 10:37 4
Ситуация разрешилась след образом :
Был настроен еще один таймер и прерывание по переполнению
TIM4->SR1=0;
TIM4->PSCR = 0x07;
TIM4->ARR = 0xff;
TIM4->IER |= TIM4_SR1_UIF;

Так вот , если таймер отключить, то все ок.
Возможно я не настроил приоритет прерываний.
Из-за чего 2 прерывания мешают друг другу ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2016, 10:37

Прошу помощи RFID Мультиплексор на MSP430F2370
Добрый день.Уважаемые форумчане нужна ваша помощь.Я новичок и хотелось бы разобраться.Нашел мануал...

Неисправность платы F4 Discovery, прошу помощи
Добрый день! В общем, сам не понял что произошло, но платка перестала работать. Выражается это в...

Прошу помощи с USB composite device
Прошу помочь с передачей данных по usb, а так же проверить проект на предмет косяков инициализации...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru