15.11.2016, 23:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
NewWriter, выходит что нужно бит PWR-›CSR |= PWR_CSR_EWUP1; прописывать а не 2-ой? И тогда только РА0 будет пробуждать? Я хочю сейчас и кнопкой проверить, и потом через RTC. Сам механизм хочу понять.
|
|
|
|
15.11.2016, 23:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от AR_Favorit
|
Если систик работает, это не STOP
|
в Standby систик работает, да?
настроил еще и А0 на просыпание. Флаг поднимается и всё... ща почитаю Progr. manual...
Последний раз редактировалось miwutka; 15.11.2016 в 23:22.
|
|
|
|
15.11.2016, 23:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от miwutka
|
в Standby систик работает, да?
настроил еще и А0 на просыпание. Флаг поднимается и всё... ща почитаю Progr. manual...
|
систик работает только в sleep
|
|
|
|
15.11.2016, 23:25
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
В стэндбае не работает ваапще ничего, кроме низкочастотоного генератора, если он разрешен. Отключены даже все выводы, содержимое всех регистров и ОЗУ теряется. Остаются включенными регистры бэкапа, в них можно сохранять какую-то небольшую инфу (этих регистров очень мало) и ножка PA0. После возобновления работы МК начинает работу со сброса и начальной инициализации.
Зато потребление в этом режиме минимально.
Сообщение от miwutka
|
выходит что нужно бит PWR-›CSR |= PWR_CSR_EWUP1;
|
Да.
Причем, саму ножку PA0 желательно либо притянуть к земле внешним резистором, или переключить ее в режим input PD (притянута к земле).
Последний раз редактировалось NewWriter; 15.11.2016 в 23:28.
|
|
|
|
15.11.2016, 23:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от NewWriter
|
В стэндбае не работает ваапще ничего, кроме низкочастотоного генератора, если он разрешен. Отключены даже все выводы, содержимое всех регистров и ОЗУ теряется. Остаются включенными регистры бэкапа, в них можно сохранять какую-то небольшую инфу (этих регистров очень мало) и ножка PA0. После возобновления работы МК начинает работу со сброса и начальной инициализации.
Зато потребление в этом режиме минимально.
Да.
Причем, саму ножку PA0 желательно либо притянуть к земле внешним резистором, или переключить ее в режим input PD (притянута к земле).
|
Он не стендбай пытается сделать, а стоп. Но в стопе тоже внутренние осцилляторы выключены.
Только кода мы не видим, что там у него после WFE происходит, и как.
Ведь при выходе из stop, как и из sleep, программа продолжает выполнение со следующей за WFE команды, и, возможно, например, условие, которое в прошлый раз вызывало подпрограмму, оканчивающуюся WFE, все еще действует, и она снова тут же и выполняется)))
|
|
|
|
15.11.2016, 23:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Вот код/ Потребление 12 мА
PHP код:
|
void SysTick_Handler (void) {
MSec++; if(MSec==999){ MSec = 0; Sec++; if (Sec == 30) {SCB-›SCR &= ~1‹‹1 ;} if(Sec==60){ Sec = 0; Min++; // Stop mode RCC-›APB1ENR |= RCC_APB1ENR_PWREN;//вкл тактирование PWR SCB-›SCR |= 1‹‹1 | 1‹‹4;//0x00000002 ; //для M0 разрешаем SLEEPONEXIT PWR-›CR |= PWR_CR_LPDS;//выбираем режим Power Down Stop mode PWR-›CR |= PWR_CR_CWUF ; //очищаем wakeup flag PWR-›CSR |= PWR_CSR_EWUP2 | PWR_CSR_EWUP1; // разрешаем вэйкап __WFE(); //уснули //********** if(Min==60){ Hour++; Min = 0; if(Hour == 24){ Hour = 0; } } } }
}
|
Похоже что чип уходит в какойто режим... Потребление 6 мА. В отладке включил окно системного регистра. Там устанавливается галочка SLEEPONEXIT
ногу А0 и С13 притянул к земле.
Убрал галочку в отладке SLEEPONEXIT и проц дальше пошел работать и вышел из этого режима... Прописал чтоб каждые 30 секунд выходил из режима сна. Вот ток не пойму что это за режим...
Последний раз редактировалось miwutka; 16.11.2016 в 00:42.
|
|
|
|
16.11.2016, 00:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от miwutka
|
Убрал галочку в отладке SLEEPONEXIT и проц дальше пошел работать и вышел из этого режима...
|
Странно, что этот бит был установлен, по умолчанию он должен быть сброшен.
Его смысл - автоматически сваливать процессор обратно в сон при выходе из прерывания. То есть: в программе пустой главный цикл, ничего в нем не делается. Вся работа в прерываниях, которые будят процессор. Программа после инициализации проц усыпила, юзер нажал кнопку (или RTC дало прерывание) - программа проснулась, обработала прерывание и по выходу из него снова уснула, автоматом, без лишних команд. Максимальная экономия энергии.
Правда это все предназначено для работы с режимом ожидания прерывания WFI, а в режиме WFE не знаю, должен ли этот бит работать, видимо, работает, и как только проц возвращался из прерывания по систику, он обратно и засыпал.
А почему вы решили, что во время сна систик работал? Все должно было "зависать" в точке после __WFE()...
Выкиньте команды отправки процессора в сон из прерывания по систику и повесьте их на отдельную процедуру, вызываемую по изменению состояния какой-нить ножки. Тогда будет понятнее.
Последний раз редактировалось AR_Favorit; 16.11.2016 в 00:56.
|
|
|
|
16.11.2016, 00:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
секунды которые в систике работают без остановки. Я отладку включил и видно что работают. Сейчас на 30-ой секунде я возвращаю из сна проц, а на 59-ой усыпляю чип. Но это какойто самый слабый сон )) 24 МГц проц работает, и потребление 12 мА, а в этом сне 6 ма. А должно быть меньше 1 мА как я понимаю... Фиг с этим СТОП модом. Надо в слип попасть который NewWriter, использует...
Ах да, в этом режиме что у меня проц после просыпания продолжает работу, а не стартует с самого начала, с резета. NewWriter говорил что после просыпания программа стартует с самого начала. А у меня нет...
Последний раз редактировалось miwutka; 16.11.2016 в 01:00.
|
|
|
|
16.11.2016, 01:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от miwutka
|
Надо в слип попасть который NewWriter, использует..
|
У него не слип, а стендбай, и таки да - при выходе из стендбай происходит полный ресет. А при выходе из слип или стоп - программа продолжает работу со следующей за WFI/WFE инструкции.
ЗЫ присмотрелся к коду.
SCB-›SCR |= 1‹‹1 | 1‹‹4;//0x00000002 ;
Это что за чудеса? Вы сами же зачем-то и устанавливаете и SLEEPONEXIT (бит 1 SCB-›SCR), и до кучи еще и SEVEONPEND (бит 4 SCB-›SCR), а вот SLEEPDEEP (бит 2 SCB-›SCR) у вас при первом засыпании так и остается нулем (запись в него не прошла при не включенном тактировании), и естественно, в этом случае после WFE процессор уходит не в STOP, а в куда более жрущий SLEEP, с работающими генераторами, отчего и систик продолжает систикать)))
SCB-›SCR |= 1‹‹2; - и все! Не надо больше ничего там трогать!
Разбудить проц из программы вы уже никак не можете ни на какой секунде. Она не выполняется, как только он уснул. Только событием, возникающим независимо от программы.
Выкиньте эту галиматью, сделайте одну простую вещь: обработку любого входа, чтобы по его замыканию вызывалось то, что вы писали изначально на первой странице. Прошейте в проц. Отключите отладчик и посмотрите по потреблению, засыпает проц или нет, просыпается от тех входов, что должны выводить из спящего режима или нет.
Последний раз редактировалось AR_Favorit; 16.11.2016 в 01:37.
|
|
|
Сказали "Спасибо" AR_Favorit
|
|
|
16.11.2016, 01:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Изучил немного RTC stm32F030C8
Сообщение от AR_Favorit
|
SCB-›SCR |= 1‹‹2; - и все! Не надо больше ничего там трогать!
|
Ну да, это я уже понял. Значит я в слип уводил. А вот в стоп он уходил этой командой. Но давал я +3.3 вольта на РС13 и на РА0 и всеравно он не выходил из СТОПа... Ща заново покумекаю.....
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:19.
|
|