19.10.2016, 02:33
|
|
Частый гость
Регистрация: 14.03.2008
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Переключение генератора на время сна.
Приветствую!
Пытаюсь писать под PIC16F876A на CCS, но уперся в тупик.
Контроллер тактуется от внешних часов, при этом нужно отключать /включать питание схемы самим контроллером через ногу RB_0. Проблема заключается в том, что при отключении питания и переводе контроллера в sleep, отключатся и внешние часы (вход OSC1/CLKIN).
Можно ли на время сна переключать контроллер на внутренний генератор?
|
|
|
|
19.10.2016, 08:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,217 раз(а) в 1,315 сообщении(ях)
|
Re: Переключение генератора на время сна.
В 16F876 нет внутреннего осциллятора. Сверьтесь с даташитом.
Выберите другой МК. Например, 16F886.
И кстати, режим Sleep подразумевает остановку всех осцилляторов, кроме wdt. Это дает остановку МК и низкое энергопотребление.
Для выхода из sleep используйте внешнее прерывание или wdt.
|
|
|
|
19.10.2016, 21:30
|
|
Частый гость
Регистрация: 14.03.2008
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Переключение генератора на время сна.
С внешним прерыванием вопросов нет, только что толку - когда камень проснется, клока на входе не будет из за того что внешние часы обесточены. Нужно по прерыванию подать 1 на ключ включения питания периферии.
|
|
|
|
19.10.2016, 21:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,217 раз(а) в 1,315 сообщении(ях)
|
Re: Переключение генератора на время сна.
Одновременно с выходом из sleep по внешнему прерыванию запускается осциллятор ("внешние часы" - неправильное название осциллятора, если вы имеете ввиду именно кварцевый резонатор или иной тактовый генератор). Когда генерация будет запущена, начнет работать счетчик команд и продолжится исполнение кода. Далее, в вашем коде вы должны будете прописать подачу на выход 1 для включения какого-то там ключа.
Сверьтесь с даташитом.
Или же под "внешними часами" вы подразумеваете какой-то генератор тактового сигнала, запитанный от отключаемого участка питания? Так во-первых, зачем такие сложности, в подавляющем большинстве случаев они не нужны. Во-вторых, если уж хотите именно так, тогда выберите другой микроконтроллер, у которого ЕСТЬ внутренний осциллятор, например 16F886 - это близкий аналог 16F876A, с расширенными возможностями.
Последний раз редактировалось NewWriter; 19.10.2016 в 22:03.
|
|
|
|
19.10.2016, 22:44
|
|
Частый гость
Регистрация: 14.03.2008
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Переключение генератора на время сна.
Под внешними часами я имею ввиду не кварц на контроллере а отдельный самостоятельный термостатированный TXCO генератор, питание которого отключается при переходе контроллера в слип.
|
|
|
|
20.10.2016, 00:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
|
Re: Переключение генератора на время сна.
Сообщение от isavi
|
ри этом нужно отключать /включать питание схемы
|
Что в данном случае относится к понятию "схема"?
Сообщение от isavi
|
TXCO генератор, питание которого отключается при переходе контроллера в слип.
|
Это питание и должно отключаться? Так и задумано?
Или так получается, что в данном устройстве это питание отключается, но вы хотите, чтобы оно не отключалось?
Просто формулировки довольно двусмысленные, можно их понимать и так, и так.
|
|
|
|
20.10.2016, 08:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,217 раз(а) в 1,315 сообщении(ях)
|
Re: Переключение генератора на время сна.
Интересно, для чего такая точность кварца то.
Ну нету в 16F876A внутреннего осциллятора, ну нету.
А отключать внешний ТХСО потому и приходится, что у него потребление высоковато.
Там схема вот такая:
Кстати, как вариант. Той же кнопкой, которой подается внешн.прерыв. для запуска МК, можно с нее подать на базу транз. для первоначального включения питания схемы. Надо поэкспериментировать, хватит ли времени для запуска.
Последний раз редактировалось NewWriter; 20.10.2016 в 08:56.
|
|
|
|
20.10.2016, 11:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
|
Re: Переключение генератора на время сна.
Решение этой проблемы я пока вижу только в том, что надо применить логический элемент с тремя состояниями на выходе. К процессору подключить обычный кварц. Это даст возможность работать процессору при отключенном генераторе, или пока генератор выйдет на режим после включения питания.
На вход OSC1 подключить выход логического элемента. На вход логического элемента подключить выход внешнего генератора, а вход логического элемента, который управляет состоянием выхода - подключить к ножке процессора.
Например, в исходном состоянии проц не спит. И его надо тактировать от внешнего генератора. Для этого проц подает на логический элемент уровень, переводящий его выход в активное состояние. При этом тактовые импульсы генератора поступают на вход встроенного генератора. И тот не сможет сопротивляться такому натиску, и будет тактировать проц с навязанной частотой.
Когда придет пора впадать в спячку, проц переводит выход логики в третье состояние. При этом внутренний генератор получает свободу, и начинает генерить сам, на частоте кварца. Что даст возможность процу спокойно отключить питание генератора, и после этого спокойно самому впасть в спячку.
Пробуждение из спячки ничем не будет отличаться от обычного. В первый момент пробуждения проц будет тактироваться от своего кварца. При этом он спокойно может сделать все свои дела, спокойно подать питание на внешний генератор, подождать, пока тот выйдет на режим, и после этого может переключить выход логики в активное состояние. И с этого момента начнет тактироваться от внешнего генератора.
Вроде ничего не упустил.
|
|
|
|
20.10.2016, 18:42
|
|
Частый гость
Регистрация: 14.03.2008
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Переключение генератора на время сна.
NewWriter, вы абсолютно правы со схемой, только вместо транзистора будет стоять MAX890.
Точность нужна для подсчета частоты.
По поводу того что при подаче внешнего клока внутренний генератор отключится есть сомнения. Есть риск того что возникнут проблемы с синхронизацией - фазы клоков по любому не совпадут, и как камень отреагирует на такой спектр неизвесно.
Но вот идея с переключением часов и кварца мне нравится, спасибо за совет. Попробую переключать вход OSC1/CLKIN перед уходом в спячку на кварц, а после выхода из спячки на внешник клок. Думаю SA630D подойдет для этих целей - время переключения 20ns, надеюсь что за этот период не сорвется синхронизация.
не хотелось бы еще один корпус лепить, но видимо без этого не обойтись.
И еще один момент.
Если внешние часы имеют одну частоту, скажем 13Мгц, и в заголовке прописана эта же частота, а кварц будет на 10мгц, не возникнет ли проблем с генерацией? По идее контроллеру все равно какой кварц на входе, понятно что будет сильно не совпадать длительность тактов, но в sleep-е это не принципиально.
Последний раз редактировалось isavi; 20.10.2016 в 18:53.
|
|
|
|
20.10.2016, 18:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
|
Re: Переключение генератора на время сна.
Сообщение от isavi
|
По поводу того что при подаче внешнего клока внутренний генератор отключится есть сомнения.
|
А никто и не обещал, что он отключится. Просто он не сможет генерить на частоте своего кварца. А будет просто работать в роли буферного усилителя входного сигнала. А входной сигнал в нормальном режиме - это слабенький дохленький импульсик, поступающий с выхода этого усилителя через емкость кварца. Куда ему тягаться с выходным сигналом логического элемента! Как муравей против слона. Поэтому выход логического элемента победит, и никакие фазы его не смогут сбить с дороги.
А вот когда логику перевести в третье состояние - я не стал уже дописывать сообщение, а сейчас добавлю - придется учитывать, что у ее выхода есть некоторая собственная емкость. Поэтому не надо впаивать керамическую емкость на вход кварца, достаточно будет и этой паразитной, на выходе логики.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:04.
|
|