Например TDA7294

Форум РадиоКот • Просмотр темы - работа wdt в Attiny2313
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 14:22:57

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


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



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: работа wdt в Attiny2313
СообщениеДобавлено: Пт май 22, 2009 17:49:22 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Здравствуйте.Я пробую реализовать работу охранного таймера в режиме прерывания.Вроде бы и бит WDIE установлен и прерывания разрешены,но они не происходят.Может есть у кого нибудь исходник на асме показывающий работу wdt ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 00:43:11 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
Чего-то в вашем сообщении ничего не сказано об установленом fuse - wdton


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 06:20:44 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Vov123 писал(а):
Чего-то в вашем сообщении ничего не сказано об установленом fuse - wdton

Насколько я понял из книги (читаю Белова) wdton надо устанавливать в том случае,если нужно чтобы охранный таймер запускался автоматически,я его хочу запустить уже в процессе работы.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 08:39:21 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
wdt включается fus-ом,включить его без программатора не получится.
Там к книге идёт диск,на диске fuse-calculator,к каждому fuse короткий коментарий:
" Сторожевой таймер предназначен для вывода микроконтроллера из режима "зависания". Прежде чем включать таймер, необходимо предусмотреть в вашей программе специальные команды работающие с ним. Подробнее смотрите в документации."

Не понятно,если вы читаете Белова,зачем спрашиваете.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 18:31:26 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Vov123 писал(а):
"

Не понятно,если вы читаете Белова,зачем спрашиваете.

Затем,что после прочтения книги я так и не смог добится нормальной работы охранного таймера. И видимо исходников ни у кого нет :(

Если вы правы и нужно установить wdton то получается что я не смогу увидеть работу таймера через AVR Studio?


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

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

Подробнее>>
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 18:55:48 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Nolk писал(а):
Насколько я понял из книги (читаю Белова) wdton надо устанавливать в том случае,если нужно чтобы охранный таймер запускался автоматически,...
Именно так и есть (не слушай никого), а каким кодом запускаешь таймер-то?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 20:07:52 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Цитата:
а каким кодом запускаешь таймер-то?

Вот этим.
Код:
cli
wdr
in r16,MCUSR
andi r16,(0xff&(0<<WDRF))
out MCUSR,r16
in r16,WDTCR
ori r16,(1<<WDCE)|(1<<WDE)
out WDTCR,r16
ldi r16,(1<<WDIE)
out WDTCR,r16
sei


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 20:49:22 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Хм, код взят из ДШ, значит нужно копать в другом направлении. А как ты пришел к выводу, что прерываний нет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 21:09:29 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Yellow Tiger писал(а):
Хм, код взят из ДШ, значит нужно копать в другом направлении. А как ты пришел к выводу, что прерываний нет?

Проверял работу на AVR Studio.По прерыванию управление должно было передатся на определенную метку.Кстати если не трудно поясни
с каким регистром работает команда wdr,а то про нее написано "сброс сторожевого таймера" и все. Опять же AVR Studio на нее никак не реагирует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 21:31:33 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
Nolk
Ваша инициализация - полный бред.
А где у вас вообще запуск дога?

Вот эта строчка бессмыслена
Код:
andi r16,(0xff&(0<<WDRF))

Если хотите сбросить бит, то
Код:
andi r16, ~(1 << WDRF)


Насчёт WD.
Как я понял, вы делаете режим "Прерывание потом сброс".
Желательно одной командой устанавливать и WDE и WDIE. Не помешает сбросить флаг прерывания.
Код:
cli
wdr
in r16, WDTCSR
ori r16, (1<<WDCE) | (1<<WDE)
out WDTCSR, r16
ldi r16, (1<<WDIF) | (1<<WDIE) | (1<<WDCE) | (1<<WDE) | (1<<WDP0)
out WDTCSR, r16
sei


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 21:32:15 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Nolk писал(а):
Проверял работу на AVR Studio.
Ну так может ты просто не дождался прерывания? При симуляции масштаб времени другой. :)
Ни в каком регистре следов от WDR нет, эта инструкция попросту сбрасывает внутренний счетчик, по переполнению которого и производится сброс или вызов прерывания от WDT. Попробуй выставить самый мелкий прескейлер (WDP0..3 = 0), поставь точку останова в процедуре прерывания по WDT и затем дооолго жди, когда произойдет останов - частота встроенного генератора у WDT всего 128кГц, представляешь сколько тактов CPU должно пройти на один его такт? А ведь самый маленький прескейл у WDT равен 2048 тактов!
Кстати, может быть время ожидания удастся сократить, наврав Студии - скажи ей, что тактовая у твоего CPU маленькая. :)))
На всякий случай спрошу - а ты wdr как часто вызываешь? Если вот так:
Код:
void main()
{
        while (1){
            wdr();
        }
}
то прерывания и не должно быть... :)))

asteroid7 писал(а):
Nolk Ваша инициализация - полный бред.
Это не его инициализация - это Атмела, срочно сообщи им! А-то, дурят народ своими байками (ДШ ревизии 2543-I-AVR-04/06, стр.43):
Изображение

asteroid7 писал(а):
1. Как я понял, вы делаете режим "Прерывание потом сброс".
2. Желательно одной командой устанавливать и WDE и WDIE.

1. Нет - ему нужен режим только с прерываниями, судя по его коду ("ldi r16,(1<<WDIE) \ out WDTCR,r16")
2. Почему WDE и WDIE нужно устанавливать одной командой? Что-то не припомню такого требования у Атмела... :?
3. Можно пояснить, какой смысл разрешать изменения и не делать их?:
Код:
in r16, WDTCSR
ori r16, (1<<WDCE) | (1<<WDE)  ; разрешаем изменения
out WDTCSR, r16    ; но пишем неизмененную величину


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 04:23:21 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
Yellow Tiger писал(а):
Это не его инициализация - это Атмела, срочно сообщи им! ...
Это пример остановки WD таймера, а не инициализации. Инициализация или запуск его, страницей ниже. И, пожалуйста, не надо обращаться ко мне на ты.

Однако... у атмела в ДШ реально есть строка :shock:
Код:
andi r16, (0xff & (0<<WDRF))
Никогда на неё не обращал внимания... Проверил в "студио" - выражение считается как ноль. Это аналогично коду
Код:
andi r16, 0
Похоже, что атмеловцы в ДШ накосячили. :)


Yellow Tiger писал(а):
1. Нет - ему нужен режим только с прерываниями, судя по его коду ("ldi r16,(1<<WDIE) \ out WDTCR,r16")
2. Почему WDE и WDIE нужно устанавливать одной командой? Что-то не припомню такого требования у Атмела... :?
3. Можно пояснить, какой смысл разрешать изменения и не делать их?:
Код:
in r16, WDTCSR
ori r16, (1<<WDCE) | (1<<WDE)  ; разрешаем изменения
out WDTCSR, r16    ; но пишем неизмененную величину

1. Я до сих пор не понял, что требуется ТС. Ни по приведённому коду ни по его постам. Я только предположил. А если ему нужно только прерывание, то нефиг трогать WDE.
2. Про требования ни словом не обмолвился. Ну на хрена разносить код, который можно написать в две строки.
3. Вы процитировали не весь код. Сначала разрешаем, потом запускаем. Это два обращения к регистру.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 13:02:00 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
Автору вопроса
Понятно,пример вы скопировали с книги со стр 361.
Но ведь там написано-пример процедуры отключения сторожевого таймера
http://cadzone.ru/content/view/845/33/
Немного не понятно,ведь в 2313 нет регистра TWDCR,а есть TWDCSR.
Попробуйте воспользоваться рекомендациями.


Вложения:
p0051.gif [130.86 KiB]
Скачиваний: 726
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 14:21:47 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Nolk, я вчера погонял студию с примером - она действительно не вызывает прерывания. Я ей не пользуюсь, потому не стану утверждать, но есть подозрение, что она имеет в этом разделе эмуляции конкретный баг. :)))

asteroid7 писал(а):
Это пример остановки WD таймера, а не инициализации.
Это просто пример, а применяя его на практике, программист подставляет в него единичку или нолик - как ему нужно в его конкретном случае - было бы странно со стороны Атмела приводить дважды один фрагмент кода с отличием в одном бите.
asteroid7 писал(а):
Однако... у атмела в ДШ реально есть строка :shock:
Код:
andi r16, (0xff & (0<<WDRF))
Никогда на неё не обращал внимания... Проверил в "студио" - выражение считается как ноль.
Возможно, их ассемблер правильно понимает такие штуки.
asteroid7 писал(а):
3. Вы процитировали не весь код. Сначала разрешаем, потом запускаем. Это два обращения к регистру.
Я просто неверно сосчитал, где заканчиваются четыре такта. Странно, вроде бы еще не поздно было. :)))

P.S.
asteroid7 писал(а):
И, пожалуйста, не надо обращаться ко мне на ты.
Этого не нужно добиваться, это должно происходить само-собой - на основе взаимности; но после таких вот экзерсисов:
asteroid7 писал(а):
Ваша инициализация - полный бред.
это бывает очень затруднено (ибо ответить взаимностью, в данном случае, означало бы нечто весьма далекое от уважения). Я не о себе говорю, о человеческой природе. Удачи. ;)

Vov123 писал(а):
Попробуйте воспользоваться рекомендациями.
Что-то не похоже, что эти страницы посвящены именно Tiny2313-му - таблица делителей неверная, формат регистра управления тоже неверный. Прескейлер там не трех-, а четырехбитный, начинается не с 16K, а с 2K, а заканчивается не 2048K, а 1024K. В регистре управления биты с 7 по 5 не заререзервированы, как утверждается в книге, а содержат биты WDIE, WDIF и старший бит делителя.
Скорее всего, и во всем остальном соответствия Tiny2313 ожидать не следует - если окажется, что предложенные страницы действительно выдаются за описание Tiny2313, то в топку такую книгу, ибо это не учебник, а коллекция граблей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 17:41:29 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
Автору вопроса
Вот вам проектик с wdt и протом.Можете поиграться.При нажатии на кнопку загораются выходы порта PORTB и гаснут соответственно после срабатывания wdt.Потом удаляете в программе "настройка wdt" и наблюдаете,что при единственном нажатии кнопки выводы порта горят постоянно.Или введите команду wdr,вот так
main:
wdr
sbic PIND,0
rjmp main
ldi temp,0xff
out PORTB,temp
rjmp main
Также можете изменять прескалер wdt,при этом время горения порта PORTB также изменяется.
Дальше,наверное,сами разберётесь.


Вложения:
wdt_asm.rar [26.31 KiB]
Скачиваний: 364


Последний раз редактировалось Vov123 Вс май 24, 2009 18:05:52, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 18:05:06 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Yellow Tiger писал(а):
Nolk, я вчера погонял студию с примером - она действительно не вызывает прерывания. Я ей не пользуюсь, потому не стану утверждать, но есть подозрение, что она имеет в этом разделе эмуляции конкретный баг. :)))

Можешь посоветовать на чем тогда тестировать?Вчера запустил программу на выполнение, ждал 20 мин результат также отсутствует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 18:16:23 
Родился

Зарегистрирован: Пт май 22, 2009 09:49:20
Сообщений: 7
Рейтинг сообщения: 0
Vov123 писал(а):
Автору вопроса
Понятно,пример вы скопировали с книги со стр 361.
Но ведь там написано-пример процедуры отключения сторожевого таймера
Страница была 381 :) А насчет того что там отключение,так я знаю это.В моем коде устанавливается бит WDIE.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс май 24, 2009 22:17:18 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Nolk писал(а):
Можешь посоветовать на чем тогда тестировать?
Чтобы совсем без глюков? На Tiny2313. :))) Не видел еще ни одного безглючного эмулятора - вечно народ обсуждает минное поле их багов, где/что/как обходить стороной, потому ими и не пользуюсь - нет времени на изучение эмулятора ради изучения эмулятора - сначала пользовался, а когда увидел, что порой даже простейшие вещи не работают в эмуляторе, разочаровался и бросил. Что-то мелкое и нетребовательное посмотреть/прикинуть м.б. и можно еще, но даже в этом случае - сам видишь, что получается. Мне важнее сэкономить время, чем выяснять, с чьим глюком я имею дело.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 30, 2009 01:17:39 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб май 30, 2009 00:51:42
Сообщений: 39
Откуда: Россия, г. Курск
Рейтинг сообщения: 0
Симуляция watchdog для данного МК (именно переход на прерывание, сброс я думаю работает как надо) скорее всего не поддерживается AVR Studio.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 30, 2009 12:50:36 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
А как понимать слова "скорее всего" - как результат личного опыта, как цитату из некоей доки, о которой мы не знаем, или как-то иначе?


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

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


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

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


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

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


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