Например TDA7294

Форум РадиоКот • Просмотр темы - 10F322 не хочет спать, помогите.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:41:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Пт окт 21, 2016 21:02:37 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Доброго времени суток!

Подскажите пожалуйста!
Не могу заставить уйти МК в сон. Точнее могу, во всех частях программы где есть сон все ок!
Но вот в одном месте хоть убей не засыпает, как будто игнорирует строки со сном.
Хотя в симуляторе все норм.
Отслеживаю эту ситуацию осциллографом.
Ниже приведен кусок кода который не корректно отрабатывается, данный кусок кода вызывается через "GOTO",
"SLEEP" не выполняет а все остальное отрабатывает. В другой части кода есть также слипы собранные из разных
интервалов времени и все прекрасно работает. ДШ читал, никаких оговор не увидел(
В дизассемблере все норм, строки не выкинуты)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Сб окт 22, 2016 01:35:29 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19
Сообщений: 378
Рейтинг сообщения: 0
А какой именно из SLEEP не выполнятся? По коду не очень понятно. И для чего для получения задержек в одних местах используется WDT, а в других TMR0? Я подобные вещи делал не ассемблерными вставками, а раз уж за такты приходится бороться, на asm-е, в отдельной функции, в отдельном asm-файле. А вызывалась эта функция уже из Си. Всё работало так, как было написано. Делать goto в ассемблерной вставке, IMHO, как-то через задницу, мягко говоря. :) Ну и для общего развития, где описаны функции asm_MARK и asm_BTFSS? Хотелось-бы посмотреть. Это Вы сами писали? Или с компилятором идёт? Проект на этом МК вырисовывается. И код целиком нужно смотреть, х.з. где эта метка rec_0 и какие ещё прерывания разрешены.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Сб окт 22, 2016 09:23:01 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Все 3 "sleep" не выполняются, выяснил это тем что питание отключается только на то время что сформировано таймером.
Задержки на слипах только на "большие" интервалы времени для экономии батарейки, а так как отрезки фиксированные,
то недостающее (до алгоритма) добираю таймером.

Знал бы я asm достаточно то на нем бы и накатал) Но дело в том что я знаю только те инструкции которые описаны в ДШ.
Не знаю как память размечать, как инклюдить внешние файлы, ну короче не уметь)
Вызовы вроде как тоже тратят время))))
Прерываний нет вообще, по крайней мере нету ухода на вектор, только анализ флагов.
Да функции сам писал, и не функции а дефайны. Работает все отлично, в дизассемблере именно то что задумано)
Собственно дефайны:


Остальной код тут не причем думаю, так как выполняется все за тем исключением того что питание приемника
отключается не на 89мс как задумано, а на ~1ms (то что таймер формирует после слипов).

Да эти "goto" все равно появляются при использовании IF, FOR, WHILE, но дело в том что при дизассемблировании
происходит не очень хорошая их замена и где можно было обойтись 2 инструкциями может и по 6 висеть((((
Потому все ветвления сделаны через вставки, и приведенный кусок кода как раз является одной из веток
при проверке флага переполнения таймера.

В общем выяснил, что "слипы отмирают" когда соединяю вместе RA1(дискретный выход) и RA2(дискретный вход с подтяжкой внутренней). Как с этим бороться?
То есть если я запитываю приемник с пина и соединяю другой пин с выходом приемника, начинается этот баг.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Вт ноя 15, 2016 12:13:19 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 9
Рейтинг сообщений: 53
Зарегистрирован: Чт авг 16, 2012 10:41:42
Сообщений: 154
Рейтинг сообщения: 0
Я писал прошивку для лед драйвера на этом же контроллере и столкнулся с аналогичной проблемой. Контроллер засыпает, но почему то не с первого раза.
Решил вот как
Код:
            bcf         WDTCON,0      ; отключаем сторожевой таймер на период сна
            sleep
            clrf        IOCAF         ; сбрасываем флаг IOCAF (свидетельствующий о прерывании RA3)
            btfsc       button        ; опрашиваем кнопку
            goto        $-3           ; отправляем спать, если кнопка отжата

Ну а в вкратце в вашей ситуации нужно добавить флаг определяющий режим сна. Если после режима сна проверяется этот флаг и выясняется что контроллер должен спать, то должна исполниться команда goto $-х переводящая контроллер в режим сна (закольцовка)


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Вт ноя 15, 2016 13:24:58 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
4uvak, WDT можно не отключать вручную перед сном, если в конфиге выставить биты 4-3 в позицию

10 = WDT enabled while running and disabled in Sleep


И, хотя явного указания по данному МК нет, желательно следующей после sleep командой ставить nop.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: 10F322 не хочет спать, помогите.
СообщениеДобавлено: Вт ноя 15, 2016 14:24:42 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 9
Рейтинг сообщений: 53
Зарегистрирован: Чт авг 16, 2012 10:41:42
Сообщений: 154
Рейтинг сообщения: 0
Я знаю, можно проще в конфигурации написать _WDTE_NSLEEP
Но мне по ходу программы нужно было отключать/включать WDT. WDT же здесь универсальный перестраиваемый от 1мсек до 256сек. В некоторых режимах в SLEEP соответственно можно установить периоды пробуждения от 1мсек до 256сек. Ну а nop после SLEEP ничего не значит, я экспериментировал


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y