Обсуждаем цифровые устройства...
Пн янв 07, 2019 18:40:39
Доброго времени суток! собрал данное устройство,Очередной термостат на Tiny2313 и DS18B20, все работает замечательно, показывает, щелкает нагрузкой, но, со временем, записанное еепром температура сбрасывается на изначальную, как при первом включении, будто ничего не выставлял. в программировании не силен, только учусь... питание пробовал и сеть и батарею, электролит и керамика стоят, результат один. прошу помощи!!!
Пн янв 07, 2019 23:56:13
Ни схемы, ни программы, ни чего ... Какой помощи Вы ждёте ? Экстрасенсов Вы тут вряд ли встретите.
Вт янв 08, 2019 14:49:32
Автор: СКАЗОЧНИК Опубликовано 16.01.2017 Очередной термостат на Tiny2313 и DS18B20. в конце статьи по вопросвм отправка на форум, но ветки не нашел... к сожалению из за скорости интернета не получается загрузить схему и тем более архив с прогой....
что поделать, 21 век.....
Вт янв 08, 2019 16:34:05
Ну, не можете загрузить- не надо, но ссылку на публикацию можно было бы дать!
https://www.radiokot.ru/circuit/digital/home/242/
Вт янв 08, 2019 17:31:18
Спасибо огромное! чтото не догадался
А если данные писать во флэш(програмную память), как думаете, ситуацию должно исправить или тут причина еще в чем то может крыться?
Вт янв 08, 2019 19:32:50
Похоже вопрос в подпрограмме записи новых данных.
Разрешение прерываний задается ДО завершения цикла записи.
Как вариант проверки предположения вместо
Спойлер
- Код:
EEWrite:
sbic EECR, EEPE ; Ждем готовности памяти к записи. Крутимся в цикле
rjmp EEWrite ; до тех пор пока не очистится флаг EEWE
cli ; Затем запрещаем прерывания.
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
out EEDR,ZUUM ; и сами данные, которые нам нужно загрузить
sbi EECR,EEMPE ; взводим предохранитель
sbi EECR,EEPE ; записываем байт (не более 4х таков ожидание)
sei ; разрешаем прерывания
ldi RAZ4, 10 ; Возвращаем 4 разряд перед выходом
ldi FLAG, 0b00000000
ldi error, 0
ret
поставить
Спойлер
- Код:
EEWrite:
sbic EECR, EEPE ; Ждем готовности памяти к записи. Крутимся в цикле
rjmp EEWrite ; до тех пор пока не очистится флаг EEWE
cli ; Затем запрещаем прерывания.
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
out EEDR,ZUUM ; и сами данные, которые нам нужно загрузить
sbi EECR,EEMPE ; взводим предохранитель
sbi EECR,EEPE ; записываем байт (не более 4х таков ожидание)
;----------
EEW_bloc:
sbic EECR, EEPE ; Ждем окончание цикла записи. Крутимся в цикле
rjmp EEW_bloc ; до тех пор пока не очистится флаг EEWE
;----------
sei ; разрешаем прерывания
ldi RAZ4, 10 ; Возвращаем 4 разряд перед выходом
ldi FLAG, 0b00000000
ldi error, 0
ret
Вт янв 08, 2019 21:21:53
TOMIKC а заменить саму ATiny2313 не пробовал? Прошивку слей со старой
Ср янв 09, 2019 11:47:16
"Убитая" ячейка всегда будет "убитой".
При случайном сбое раз на многочисленное правильное состояние...
Хотя... все возможно...
Ср янв 09, 2019 14:47:58
серии 2313 к сожалению последняя в заначке, скрутить неоткуда, а ошибка такая раз за разом, чуть ли не закономерность...
Спасибо за код, за одно и сам асм покурю с даташитом.
ошибка так же всплывает, имеет хаотичный характер, все работает как надо и, все работает как надо, делаешь уставку, работает, начинаешь ее изменять, все начинается с произвольного значения сохраненой температуры..
Ср янв 09, 2019 17:30:12
Было такое на другом АВР. За давностью точно не вспомню, но вроде при плавном нарастании питания затирались начальные ячейки EEPROM. Когда поставилл супервизор питания и область записи перенес немного выше, вроде как исчезло.
Давно это было, в прошлом тысячелетии. Но - как вариант...
Ср янв 09, 2019 18:22:40
Ну и адрес ячейки изменить... на новый - места там достаточно...
Ср янв 09, 2019 18:53:09
С супервизорами пока напряг, но наверное при использовании еепром желательно, хотя свежая батарея, индикатор на минимуме питания, нагрузочные на 1кОм, вместо реле тоже светик,просадка как бы не критична я думаю, и в 10 ую ячейку данные идут, попробовать глубже..?
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
буду пытаться епром на память програм заменить, уставкой не так уж и часто пользоваться буду, буду осваивать, потом на суд код.
Ср янв 09, 2019 19:12:31
ЕЕПРОМ - программируется обычной программой пользователя.
Флеш-ПЗУ требует спецрежима самопрограммирования, который по сложности и пакостности намного превосходит работу с ЕЕПРОМ (особо на столь мелком МК, как тинька2313).
Лучше уж проработать применение схемы BOR - детектирования пониженного напряжения.
А так надо всю программу со схемой анализировать... ЛЕЕЕНЬЬЬ...
Кстати... значение уставки можно и в самом DS18DB20 хранить...
Что и делалось в те времена, когда о ЕЕПРОМке в МК только мечталось (АТ89С2051 к примеру).
Чт янв 10, 2019 10:20:09
С супервизорами пока напряг
Ну это у нас было на старых AVR, не Mega, у них не было встроенного BOD. Можно попробовать экспериментнуть с BOD level . Или писать несколько раз уставку в разные ячейки и определять истинную по контр. сумме или мажоритарно, хотя это уже костыли, маскирующие, а не устраняющие проблему.
А писать программно во флеш действительно требует определенных танцев с бубном. Мне не понравилось.
Пт янв 11, 2019 19:41:49
Хренасе, даже не думал, что эту лабуду кто-нибудь будет собирать...
Прошу прощения, конечно, но этот термостат был придумал, как лишь цель обучения протоколу 1-Ваер... Остальное так, по ходу зацепил. Конечно, до вас еще жалоб не было на уставки занчений в ЕЕПРОМ.
Может реально для начала заменить 10 ячейку на чего-нибудь побольше. ? И проверить, как оно отзовется.
Да, в фьюзах я БОД настраивал на детектирование в 4,3 Вольта.
Программа там к нему написана абсолютно рукожопо. Ну, так у меня руки растут. )))))
Также да. Можно совсем выбросить ЕЕПРОМ и записать значение сразу во Флеш. Тогда его невозможно будет изменить, но и не затрется. Только надо программу править.
Ср янв 16, 2019 17:38:35
Управлять насосом отопления хотелось, чтоб при снижении температуры его автоматом гасило.
другие схемы пробовал на 2313, но там так же почему то епром слетает, и исходника нет, только хексы... тут хоть можно что-то поколупать, поучиться, и на этом спасибо!
по какой то причине, замена адреса на больший епром совсем не пишет установленные значения, все больше на ноль, -4 сбрасывается.
Пока только код пытаюсь разобрать с настройками МК в свободное время, так может до датчика доберусь еще...и хранений в нем данных.
Чт янв 17, 2019 10:52:45
Если надо, могу выложить проект на тини2313 с поверхностным монтажем - отличается разводка дисплея (написано на С в кодевижне), у меня несколько штук работает, проблем с еепром не было ни разу
Чт янв 17, 2019 12:35:58
Выложите пожалуйста. Я сам тоже поизучаю.
Чт янв 17, 2019 14:00:27
Выкладываю, хотя по записи в еепром там изучать нечего...принцип такой: т.к. запись по меркам мк идет долго (для программиста это выглядит как простое присвоение, но на самом деле, если глянуть листинг ассемблера - там цикл ожидания), чтобы не вызвать срыв индикации, прерывания я не запрещаю, но сам гарантирую отсутствие взаимодействия с еепром - если меню==10 то пользовательское меню блокируется (для человека это миг), а остальная часть с еепром не взаимодействует.
Дополнения: третья кнопка = одновременное нажатие двух - вход в установку границ, длительное удержание - служебное меню (коррекция температуры и яркость индикатора).
нажатие одной кнопки в основном экране - показ уставок, в настройках - изменение величины.
постарался сделать пользовательский интерфейс максимально удобным - отработка кнопок позволяет нажимать кнопки немного неодновременно (мы же не роботы)
часть хотелок не влезла... флеша в тиньке маловато.
файлы проекта называются насос, это потому что данная платка и была спроектирована как блок управления насосом - следила за давлением и состоянием проводов до ЭКМа, всё с нуля писать было лень... как говорится ничего не бывает настолько постоянным как временное.
- Вложения
-
- термостат.rar
- (296.04 KiB) Скачиваний: 332
Пт янв 18, 2019 11:58:11
чтобы не вызвать срыв индикации, прерывания я не запрещаю
Может, в этом и есть причина ?
5. Within four clock cycles after setting EEMWE, write
a logical one to EEWE. (стр. 30 PDF)
Не знаю, какой код записи в EEPROM в библиотечной функции, сам с EEPROM всегда работал через ассемблер,
но если и в ней прерывания не запрещаются и они попадают именно на эти 4 цикла, то гарантии правильной записи - никакой.
А миллисекундный срыв индикации, думаю, не такя уж беда, чтобы из-за него рисковать сбоем при записи.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.