|
Неправильная работа BOD в ATtiny13A ?, похоже при запуске МК срабатывает BOD |
|
|
|
Dec 8 2012, 10:26
|

Местный
  
Группа: Участник
Сообщений: 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 ? В чем может быть дело ?
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 8 2012, 15:38
|

Местный
  
Группа: Участник
Сообщений: 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
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Dec 8 2012, 20:10
|

Местный
  
Группа: Участник
Сообщений: 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 ?
|
|
|
|
|
Dec 11 2012, 06:50
|

Местный
  
Группа: Участник
Сообщений: 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, этого вполне достаточно.
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Dec 13 2012, 08:15
|

Местный
  
Группа: Участник
Сообщений: 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 СК после сброса
|
|
|
|
|
Dec 13 2012, 12:33
|

Местный
  
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Dec 14 2012, 04:31
|

Профессионал
    
Группа: Свой
Сообщений: 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.
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Dec 14 2012, 07:51
|

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

|
Для обнаружения понижения напруги ниже в самом начале программы проверяю условие MCUSR.BORF=1 && MCUSR.PORF=0 , если истинно выполняю слип. но в любом случае после этого необходимо обнулить MCUSR. Цитата(ILYAUL @ Dec 14 2012, 07:31)  .. Сегодня вечером проверю Ваше утверждение на tiny13. а что на других камнях по другому ?!..
|
|
|
|
|
Dec 14 2012, 11:05
|

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

|
Цитата но в любом случае после этого необходимо обнулить MCUSR. Ну об этом я писал выше. Я говорю об этом Цитата Бит BORF при подаче U выставляется в "1" хотя DS, цитату из которого я привел , утверждает обратное, и чтобы не было разночтений проверю именно на таком же MC как у Вас.
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Dec 14 2012, 11:46
|

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

|
Цитата(zombi @ Dec 14 2012, 14:33)  А внешний ресет случайно не запрещён? нет , ресет разрешен. еще такое примечание: пробывал вариант с подключением reset через цепочку как в первом посте , так и оставлял вывод вообще не подключенным ни куда. Результат влияет только на MCUSR.EXTRF
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|