Гость do_not_know_Linux 19 декабря, 2021 Опубликовано 19 декабря, 2021 · Жалоба Не побеспокоил бы вас столь занятых людей таким школьным вопросом, но реально запутался. в регистре Quote TIMx_CCMR1 в CC1S[1:0] заношу значение Quote 01 это значит что настраиваю канал на вход, то есть на захват сигнала TI1. Вот тут и начинается непонимание. помним что канал настрое на вход. дальше иду в регистр TIMx_CCER и в бит CC1E записываю единицу. так как канал настрое на вход то это будет значить что я включил входную фиксацию то есть текущее значение счетчика будет помещено в регистр TIMx_CCR_x теперь иду в регистр к примеру TIMx_CCR1 и читаю что если канал настроен как вход, а он у меня именно так и настроен как мы помним выше, то ССR1 содержит значение счетчика. запускаю свою программу и ничего не работает. Хорошо, помещаю в регистр TIM_CCR1=7 и шим работает. Это значит что теперь ССR1 содержит значение которое используется для сравнения с текущим значением счетчика, то есть с TIM1_CNT. Но ведь это режим выхода!!! помогите пожалуйста разобраться где я напутал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 19 декабря, 2021 Опубликовано 19 декабря, 2021 · Жалоба При отличном от нуля CC1S должно работать как вход, а регистр CCR1 становится только для чтения. Если у вас работает как выход, значит нужно проверять конкретную реализацию в коде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 21 декабря, 2021 Опубликовано 21 декабря, 2021 (изменено) · Жалоба On 12/19/2021 at 7:55 PM, Alex-lab said: При отличном от нуля CC1S должно работать как вход, а регистр CCR1 становится только для чтения. Если у вас работает как выход, значит нужно проверять конкретную реализацию в коде. кажется разобрался, но это не точно. а так спасибо огромное что нашли время и постарались помочь Изменено 21 декабря, 2021 пользователем do_not_know_Linux Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 22 декабря, 2021 Опубликовано 22 декабря, 2021 · Жалоба Изменять эти биты нужно до того, как запустили таймер на счет. Если во время, то он не переключит режим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба 14 hours ago, Alex-lab said: Изменять эти биты нужно до того, как запустили таймер на счет. Если во время, то он не переключит режим. спасибо. просто я тупил, ну может быть и сейчас туплю, но я когда творил ШИМ то конфигурировал таймер как вход. при этом в регистре TIMx_CCR1 у меня лежало значение. но так как таймер был настроен на вход то TIMx_CCR1 был доступен только для чтения и поэтому не мог быть перезаписан значением счетчика. И из-за этого ШИМ даже работал и настраивался. Но опять же, это не точно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба 10 hours ago, do_not_know_Linux said: TIMx_CCR1 был доступен только для чтения и поэтому не мог быть перезаписан значением счетчика Там помимо CEN в CR1 нужно еще учитывать следующее: Bits 1:0 CC1S: Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. 00: CC1 channel is configured as output 01: CC1 channel is configured as input, IC1 is mapped on TI1 10: CC1 channel is configured as input, IC1 is mapped on TI2 11: CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register)Note: CC1S bits are writable only when the channel is OFF (CC1E = ‘0’ in TIMx_CCER). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость do_not_know_Linux 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба 2 hours ago, Alex-lab said: Note: CC1S bits are writable only when the channel is OFF (CC1E = ‘0’ in TIMx_CCER). 2 hours ago, Alex-lab said: Note: CC1S bits are writable only when the channel is OFF (CC1E = ‘0’ in TIMx_CCER). это я понимаю. спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться