21.08.2016, 10:49
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Регистр флагов состояния SR позволяет читать биты или записывать в них "0", сбрасывая бит. Запись "1" ничего не дает, потому как биты в регистре помечены как w0, то есть, только запись "0".
То есть, аналогично регистрам BSRR, BRR, только наоборот
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
21.08.2016, 11:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Сообщение от miwutka
|
AR_Favorit, Как же мне тогда правильно считывать значение с двух каналов при последовательном сканировании?...
|
Да примерно как в вашем посте #15, только
1) выкинуть проверку ADC_IT_EOSEQ
2) не разрешать прерывание по флагу EOS
3) поместить очистку бита EOC не перед, а после получения текущего результата преобрарования
4) разрешить прерывание по overrun, поставить его обработчик и в случае попадания программы в этот обработчик останавливать сканирование и запускать его сначала (и знать при этом, что где-то косяк - программа не успевает забрать результат преобразования)
Но вообще я никогда не делал на прерываниях, всегда использовал ДМА, если надо более одного канала. Так гораздо удобнее.
|
|
|
|
21.08.2016, 11:11
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Жаль конечно, что в F030 нет группы инжектированных каналов с раздельным регистрами результатов для разных каналов.
|
|
|
|
21.08.2016, 12:01
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Мужики, не подскажите почему у меня на stm32f030C8 от HSI не работает PLL при умножении больше 2. Короче говоря, частоту больше 8 Мгц. получить не могу. Думал, что это я какую-то лажу пишу, но пытаюсь сгенерить проект в Кубе - эффект аналогичный. Вот мой код
PHP код:
|
RCC-›CR &= ~(1‹‹24);
while(RCC-›CR&1‹‹25);
RCC-›CFGR &= ~(0x0F‹‹18); //PLL=2
//RCC-›CFGR 1= 1‹‹18; //PLL=3
RCC-›CR |= 1‹‹24; //(after this string - no connect if PLL›2)
while(!(RCC-›CR&1‹‹25));
|
Если устанавливаю множитель больше двух у меня обрывается связь.
|
|
|
|
21.08.2016, 12:12
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Первая страница этой темы, сообщение #9 - рабочий код. RCC_CFGR_PLLMUL16 определяет умножитель.
А какая связь обрывается? С СТ-Линком?
...блин, циферки... опять копать распределение битов в регистре, чтобы понять что в коде написано.
|
|
|
|
21.08.2016, 12:17
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Сообщение от NewWriter
|
А какая связь обрывается? С СТ-Линком?
|
Ну, у меня ST-Linck 2 miny. А работаю из Keil.
Цитата:
|
...блин, циферки... опять копать распределение битов в регистре, чтобы понять что в коде написано.
|
Я пока не выучил что там в дефайнах, просто мне быстрее открыть регистры в даташите, чем отыскать в этих портянках определения (особенно когда даже приблизительно не знаешь какие искать).
Посидел, полистал портянку хидера. Получилось вот-что.
PHP код:
|
RCC-›CR &= ~(RCC_CR_PLLON); while(RCC-›CR&RCC_CR_PLLRDY); // RCC-›CFGR |= RCC_CFGR_PLLMUL2; //PLL=2 RCC-›CFGR |= RCC_CFGR_PLLMUL3; //PLL=3 RCC-›CR |= RCC_CR_PLLON; //(after this string - no connect if PLL›2) while(!(RCC-›CR&RCC_CR_PLLRDY));
|
Эффект тот-же. Правда, может не связь теряется, а ругается, что нет доступа к цели.
При RCC_CFGR_PLLMUL2 такого нет, все работает нормально.
Последний раз редактировалось МВА; 21.08.2016 в 13:08.
|
|
|
|
21.08.2016, 14:56
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Попробовал два варианта программы залить через ST-LINK Utility. При PLL›2 МК тупо не хочет работать, я в главный цикл забросил простую мигалку. Может от HSI больше 8 Мгц не получается? Я уже и не знаю, в каком направлении думать.
|
|
|
|
21.08.2016, 15:33
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
А другие не знают, как у вас не работает то, что у других всегда работает.
Ноги питания все подключены? Ёмкостя на ногах питания присутствуют? Бут правильно подтянут?
|
|
|
|
21.08.2016, 15:40
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Сообщение от МВА
|
Может от HSI больше 8 Мгц не получается?
|
Да нет, почему же.
Я на первой странице же выложил код, самолично протестированный с оверклоком на частоте аж до 64 МГц, с источником PLL именно от HSI, умножитель до 16.
Когда берется от HSI, тогда частота HSI предварительно делится на 2, а потом умножается на значение умножителя.
И перед выключением PLL нужно битами SW регистра CFGR переключить источник системной частоты с PLL на HSI или HSE.
Код намертво зависает в строчке
while(RCC-›CR&RCC_CR_PLLRDY);
потому что перенастройка и выключение PLL блокированы до тех пор, пока PLL является источником системной частоты МК. А выхода из while не предусмотрено
Первоначальная настройка системной частоты производится в файле system_stm32f0xx.c. Он запускается раньше функции main(), поэтому при отладке не виден, первая остановка идет на входе в main()
|
|
|
|
21.08.2016, 15:49
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: SOFTPWM stm32f030f4
Сообщение от NewWriter
|
Я на первой странице же выложил код, самолично протестированный с оверклоком на частоте аж до 64 МГц, с источником PLL именно от HSI, умножитель до 16.
|
И как же никто раньше до этого не додумался?
Сообщение от NewWriter
|
Когда берется от HSI, тогда частота HSI предварительно делится на 2, а потом умножается на значение умножителя.
|
В референсе всё есть.
Сообщение от NewWriter
|
И перед выключением PLL нужно битами SW регистра CFGR переключить источник системной частоты с PLL на HSI или HSE.
Код намертво зависает в строчке
while(RCC-›CR&RCC_CR_PLLRDY);
потому что перенастройка и выключение PLL блокированы до тех пор, пока PLL является источником системной частоты МК. А выхода из while не предусмотрено
|
И кто виноват?
Сообщение от NewWriter
|
Первоначальная настройка системной частоты производится в файле system_stm32f0xx.c. Он запускается раньше функции main(), поэтому при отладке не виден, первая остановка идет на входе в main()
|
Ну и что? Сброс в отладке закидывает в стартовый файл, где сначала можно пошагать по системному файлу перед попаданием в майн. Один проводок на РЕСЕТ пожалели, ну и кто же снова виноват?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:22.
|
|