реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Неправильная работа BOD в ATtiny13A ?, похоже при запуске МК срабатывает BOD
MaxiMuz
сообщение Dec 8 2012, 10:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Доброго времяни суток !

Вообщем делаю автоотключение при снижении питания внут. средствами МК. Суть: при снижении Uп ниже 2,7В срабатывает BOD, сбрасывает МК , по идее напруга на батарейке должна подняться выше порога, МК перезапускается , в самом начале проверяется регистр MCUSR на установку бита BORF, если бит в 1 , то МК погружается в спячку sleep ом до лучших времен.
вот код проверки:
Код
0:    4d c0           rjmp    .+154       ; 0x9c <my_init>
    if (MCUSR&(1<<BORF))
9c:    04 b6           in    r0, 0x34   ; 52
9e:    02 fe           sbrs    r0, 2
a0:    04 c0           rjmp    .+8         ; 0xaa <__stack+0xb>
     MCUCR=(1<<PUD)|(1<<SE)|(1<<SM1);
a2:    80 e7           ldi    r24, 0x70   ; 112
a4:    85 bf           out    0x35, r24   ; 53
     asm ("sleep");
a6:    88 95           sleep
a8:    01 c0           rjmp    .+2         ; 0xac <__stack+0xd>
     MCUSR=0;
aa:    14 be           out    0x34, r1   ; 52
ac:    11 24           eor    r1, r1
ae:    1f be           out    0x3f, r1   ; 63


Установил фузы:
BODLEVEL 1..0: 01 - 2.7 v
CKSEL1..0: 01 - 4,8МГц от RC ген.
SUT1..0: 11 - 6+14 СК после сброса

Схема сброса приведена, Rсброса = 10кОм
Устройство не запускается не зависимо от питания , т.е. от гарнтированных 5В - результат такойже. Убрал команду sleep схема заработала. Т.е. получается при подаче Uп , хотя по идее в течении когото времяни должен действовать внешний сигнал Reset на входе, запускается BOD и устанавливает бит MCUSR.BORF .
Или внеш. Reset не действует на рег.MCUSR ? В чем может быть дело ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sKWO
сообщение Dec 8 2012, 15:38
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(MaxiMuz @ Dec 8 2012, 14:26) *
Или внеш. Reset не действует на рег.MCUSR ? В чем может быть дело ?

если у вас слиип обрабатываетя, тогда и зафиксирован сброс броунаутдетектора, ведь при старте (включении МК), он равен 1.
ещё есть смутное мнение, у Вас тау цепи сброса около 2 милисекунд. У же при старте Ваш МК фиксирует уровень ниже для срабатывания БОД.
Может тут собака?

Цитата(MaxiMuz @ Dec 8 2012, 14:26) *
SUT1..0: 11 - 6+14 СК после сброса

а вот тут уже спорный вопрос, SUT1..0: 11 у тини13 резервный, поставьте
(01 14CK + 4 ms Fast rising power) ну или
(10 14CK + 64 ms Slowly rising power)
в первом случае должно времени быть достаточно, чтобы не зафиксировать низкое напряжения при старте когда МК уже тактируется.

Сообщение отредактировал sKWO - Dec 8 2012, 15:26


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 8 2012, 20:10
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(sKWO @ Dec 8 2012, 18:38) *
а вот тут уже спорный вопрос, SUT1..0: 11 у тини13 резервный, поставьте
(01 14CK + 4 ms Fast rising power) ну или
(10 14CK + 64 ms Slowly rising power)
в первом случае должно времени быть достаточно, чтобы не зафиксировать низкое напряжения при старте когда МК уже тактируется.

извиняюсь, конечно же SUT1..0: выставил в 00 , просто с инверсией запутался, PonyProg у меня в обойх галочки стоят. Этот режим рекомендован в доках

Цитата(sKWO @ Dec 8 2012, 18:38) *
ещё есть смутное мнение, у Вас тау цепи сброса около 2 милисекунд. У же при старте Ваш МК фиксирует уровень ниже для срабатывания БОД.
Может тут собака?

тогда получается BOD начинает действовать во время когда еще reset не закончился (до старта) и смело уже тогда выставляет MCUSR ?
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 9 2012, 10:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(MaxiMuz @ Dec 8 2012, 14:26) *
Т.е. получается при подаче Uп , хотя по идее в течении когото времяни должен действовать внешний сигнал Reset на входе, запускается BOD и устанавливает бит MCUSR.BORF .
Или внеш. Reset не действует на рег.MCUSR ? В чем может быть дело ?

Попробуйте перед засыпанием вывести состояние интересующих Вас флагов регистра MCUSR на свободные пины проца.
Может стоит проверять не только BORF но и PORF?
Go to the top of the page
 
+Quote Post
sKWO
сообщение Dec 11 2012, 06:50
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(MaxiMuz @ Dec 8 2012, 23:10) *
Этот режим рекомендован в доках

ТАУ= R*C; C=0.22мкФ, R= 10 000 Ом. ТАУ = 2,2 мС.
После подачи питания на ресете будет Ваших 5 вольт только после 2 миллисекунд. Почему 2 миллисекунды? Насколько я помню ресет у АВР подвешен к источнику питания внутри 33 килоомами. Все подтяжки Вы отключаете позже перед уходом в павер давн.

Когда SUT = 00, Вы просто разрешили детектор напряжения.

Цитата(MaxiMuz @ Dec 8 2012, 23:10) *
тогда получается BOD начинает действовать во время когда еще reset не закончился (до старта) и смело уже тогда выставляет MCUSR ?

да.
14* 1/5 МГц = 2,8 микросек.
То есть в MCUSR выставляется BORF.
BODLEVEL у Вас = 10, срабатывание ниже 1.8 Вольта, этого уровня напряжение на ресете достигнет через 0.72 миллисек.
при тактовой МК 5 МГц через 3 микросекунды в MCUSR выставляется BORF.
Если SUT выставить равным 01 то Вы получите 14CK + 4 ms, этого вполне достаточно.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 13 2012, 08:15
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(sKWO @ Dec 11 2012, 09:50) *
BODLEVEL у Вас = 10, ..

у меня установленно
Цитата
Установил фузы:
BODLEVEL 1..0: 01 - 2.7 В
CKSEL1..0: 01 - 4,8МГц от RC ген.
SUT1..0: 00 - 6+14 СК после сброса

Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 13 2012, 09:02
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Он у Вас с самого первого включения сразу сваливался в спячку?
И где очистка этого флага перед сном , что бы при следующем запуске он его заново проверил , а не читал предыдущее значение.?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 13 2012, 09:30
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(ILYAUL @ Dec 13 2012, 12:02) *
Он у Вас с самого первого включения сразу сваливался в спячку?

в том варианте программы кот. приведен выше, да.

Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 13 2012, 12:33
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(sKWO @ Dec 11 2012, 09:50) *
14* 1/5 МГц = 2,8 микросек.
То есть в MCUSR выставляется BORF.
BODLEVEL у Вас = 10, срабатывание ниже 1.8 Вольта, этого уровня напряжение на ресете достигнет через 0.72 миллисек.
при тактовой МК 5 МГц через 3 микросекунды в MCUSR выставляется BORF.
Если SUT выставить равным 01 то Вы получите 14CK + 4 ms, этого вполне достаточно.

Возможно на выводе Reset RC цепочка и не нужна.
Бит BORF при подаче U выставляется в "1" независимо от того как и когда срабатывает сброс, также как и бит PORF.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 14 2012, 04:31
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(MaxiMuz @ Dec 13 2012, 16:33) *
Бит BORF при подаче U выставляется в "1" независимо от того как и когда срабатывает сброс, также как и бит PORF.

Да , ладно.. Сегодня вечером проверю Ваше утверждение на tiny13.
Цитата
• Bit 2 – BORF: Brown-out Reset Flag
This bit is set if a Brown-out Reset occurs. The bit is reset by a Power-on Reset, or by writing a
logic zero to the flag.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 14 2012, 07:51
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Для обнаружения понижения напруги ниже в самом начале программы проверяю условие MCUSR.BORF=1 && MCUSR.PORF=0 , если истинно выполняю слип. но в любом случае после этого необходимо обнулить MCUSR.
Цитата(ILYAUL @ Dec 14 2012, 07:31) *
.. Сегодня вечером проверю Ваше утверждение на tiny13.
а что на других камнях по другому ?!..
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 14 2012, 11:05
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
но в любом случае после этого необходимо обнулить MCUSR.
Ну об этом я писал выше.
Я говорю об этом
Цитата
Бит BORF при подаче U выставляется в "1"

хотя DS, цитату из которого я привел , утверждает обратное, и чтобы не было разночтений проверю именно на таком же MC как у Вас.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 14 2012, 11:33
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



А внешний ресет случайно не запрещён?
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Dec 14 2012, 11:46
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(zombi @ Dec 14 2012, 14:33) *
А внешний ресет случайно не запрещён?

нет , ресет разрешен.
еще такое примечание:
пробывал вариант с подключением reset через цепочку как в первом посте , так и оставлял вывод вообще не подключенным ни куда. Результат влияет только на MCUSR.EXTRF
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 15 2012, 20:39
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Да BORF живёт и после выкл. питания


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.02126 секунд с 7
ELECTRONIX ©2004-2016