Очередной термостат на Tiny2313 сбрасывает данные еепром
- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
Доброго времени суток! собрал данное устройство,Очередной термостат на Tiny2313 и DS18B20, все работает замечательно, показывает, щелкает нагрузкой, но, со временем, записанное еепром температура сбрасывается на изначальную, как при первом включении, будто ничего не выставлял. в программировании не силен, только учусь... питание пробовал и сеть и батарею, электролит и керамика стоят, результат один. прошу помощи!!!
- Реклама
Ни схемы, ни программы, ни чего ... Какой помощи Вы ждёте ? Экстрасенсов Вы тут вряд ли встретите.
- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
Автор: СКАЗОЧНИК Опубликовано 16.01.2017 Очередной термостат на Tiny2313 и DS18B20. в конце статьи по вопросвм отправка на форум, но ветки не нашел... к сожалению из за скорости интернета не получается загрузить схему и тем более архив с прогой....
что поделать, 21 век.....
Ну, не можете загрузить- не надо, но ссылку на публикацию можно было бы дать!
https://www.radiokot.ru/circuit/digital/home/242/

https://www.radiokot.ru/circuit/digital/home/242/
- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
Спасибо огромное! чтото не догадался 
А если данные писать во флэш(програмную память), как думаете, ситуацию должно исправить или тут причина еще в чем то может крыться?
А если данные писать во флэш(програмную память), как думаете, ситуацию должно исправить или тут причина еще в чем то может крыться?
- Реклама
Похоже вопрос в подпрограмме записи новых данных.
Разрешение прерываний задается ДО завершения цикла записи.

Как вариант проверки предположения вместо
поставить

Разрешение прерываний задается ДО завершения цикла записи.
Как вариант проверки предположения вместо
Спойлер
Код: Выделить всё
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
retTOMIKC а заменить саму ATiny2313 не пробовал? Прошивку слей со старой
"Убитая" ячейка всегда будет "убитой".
При случайном сбое раз на многочисленное правильное состояние...
Хотя... все возможно...

При случайном сбое раз на многочисленное правильное состояние...
Хотя... все возможно...
- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
серии 2313 к сожалению последняя в заначке, скрутить неоткуда, а ошибка такая раз за разом, чуть ли не закономерность...
Спасибо за код, за одно и сам асм покурю с даташитом.
ошибка так же всплывает, имеет хаотичный характер, все работает как надо и, все работает как надо, делаешь уставку, работает, начинаешь ее изменять, все начинается с произвольного значения сохраненой температуры..
Спасибо за код, за одно и сам асм покурю с даташитом.
ошибка так же всплывает, имеет хаотичный характер, все работает как надо и, все работает как надо, делаешь уставку, работает, начинаешь ее изменять, все начинается с произвольного значения сохраненой температуры..
Было такое на другом АВР. За давностью точно не вспомню, но вроде при плавном нарастании питания затирались начальные ячейки EEPROM. Когда поставилл супервизор питания и область записи перенес немного выше, вроде как исчезло.
Давно это было, в прошлом тысячелетии. Но - как вариант...
Давно это было, в прошлом тысячелетии. Но - как вариант...
Ну и адрес ячейки изменить... на новый - места там достаточно...

- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
С супервизорами пока напряг, но наверное при использовании еепром желательно, хотя свежая батарея, индикатор на минимуме питания, нагрузочные на 1кОм, вместо реле тоже светик,просадка как бы не критична я думаю, и в 10 ую ячейку данные идут, попробовать глубже..?
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
буду пытаться епром на память програм заменить, уставкой не так уж и часто пользоваться буду, буду осваивать, потом на суд код.
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
буду пытаться епром на память програм заменить, уставкой не так уж и часто пользоваться буду, буду осваивать, потом на суд код.
ЕЕПРОМ - программируется обычной программой пользователя.
Флеш-ПЗУ требует спецрежима самопрограммирования, который по сложности и пакостности намного превосходит работу с ЕЕПРОМ (особо на столь мелком МК, как тинька2313).
Лучше уж проработать применение схемы BOR - детектирования пониженного напряжения.
А так надо всю программу со схемой анализировать... ЛЕЕЕНЬЬЬ...
Кстати... значение уставки можно и в самом DS18DB20 хранить...
Что и делалось в те времена, когда о ЕЕПРОМке в МК только мечталось (АТ89С2051 к примеру).

Флеш-ПЗУ требует спецрежима самопрограммирования, который по сложности и пакостности намного превосходит работу с ЕЕПРОМ (особо на столь мелком МК, как тинька2313).
Лучше уж проработать применение схемы BOR - детектирования пониженного напряжения.
А так надо всю программу со схемой анализировать... ЛЕЕЕНЬЬЬ...
Кстати... значение уставки можно и в самом DS18DB20 хранить...
Что и делалось в те времена, когда о ЕЕПРОМке в МК только мечталось (АТ89С2051 к примеру).
[uquote="TOMIKC",url="/forum/viewtopic.php?p=3544811#p3544811"]С супервизорами пока напряг[/uquote]
Ну это у нас было на старых AVR, не Mega, у них не было встроенного BOD. Можно попробовать экспериментнуть с BOD level . Или писать несколько раз уставку в разные ячейки и определять истинную по контр. сумме или мажоритарно, хотя это уже костыли, маскирующие, а не устраняющие проблему.
А писать программно во флеш действительно требует определенных танцев с бубном. Мне не понравилось.
Ну это у нас было на старых AVR, не Mega, у них не было встроенного BOD. Можно попробовать экспериментнуть с BOD level . Или писать несколько раз уставку в разные ячейки и определять истинную по контр. сумме или мажоритарно, хотя это уже костыли, маскирующие, а не устраняющие проблему.
А писать программно во флеш действительно требует определенных танцев с бубном. Мне не понравилось.
Хренасе, даже не думал, что эту лабуду кто-нибудь будет собирать...
Прошу прощения, конечно, но этот термостат был придумал, как лишь цель обучения протоколу 1-Ваер... Остальное так, по ходу зацепил. Конечно, до вас еще жалоб не было на уставки занчений в ЕЕПРОМ.
Может реально для начала заменить 10 ячейку на чего-нибудь побольше. ? И проверить, как оно отзовется.
Да, в фьюзах я БОД настраивал на детектирование в 4,3 Вольта.
Программа там к нему написана абсолютно рукожопо. Ну, так у меня руки растут. )))))
Также да. Можно совсем выбросить ЕЕПРОМ и записать значение сразу во Флеш. Тогда его невозможно будет изменить, но и не затрется. Только надо программу править.
Прошу прощения, конечно, но этот термостат был придумал, как лишь цель обучения протоколу 1-Ваер... Остальное так, по ходу зацепил. Конечно, до вас еще жалоб не было на уставки занчений в ЕЕПРОМ.
Может реально для начала заменить 10 ячейку на чего-нибудь побольше. ? И проверить, как оно отзовется.
Да, в фьюзах я БОД настраивал на детектирование в 4,3 Вольта.
Программа там к нему написана абсолютно рукожопо. Ну, так у меня руки растут. )))))
Также да. Можно совсем выбросить ЕЕПРОМ и записать значение сразу во Флеш. Тогда его невозможно будет изменить, но и не затрется. Только надо программу править.
Станислав
- Сообщения: 11
- Зарегистрирован: Вс дек 01, 2013 17:03:22
Управлять насосом отопления хотелось, чтоб при снижении температуры его автоматом гасило.
другие схемы пробовал на 2313, но там так же почему то епром слетает, и исходника нет, только хексы... тут хоть можно что-то поколупать, поучиться, и на этом спасибо!
по какой то причине, замена адреса на больший епром совсем не пишет установленные значения, все больше на ноль, -4 сбрасывается.
Пока только код пытаюсь разобрать с настройками МК в свободное время, так может до датчика доберусь еще...и хранений в нем данных.
другие схемы пробовал на 2313, но там так же почему то епром слетает, и исходника нет, только хексы... тут хоть можно что-то поколупать, поучиться, и на этом спасибо!
по какой то причине, замена адреса на больший епром совсем не пишет установленные значения, все больше на ноль, -4 сбрасывается.
Пока только код пытаюсь разобрать с настройками МК в свободное время, так может до датчика доберусь еще...и хранений в нем данных.
Если надо, могу выложить проект на тини2313 с поверхностным монтажем - отличается разводка дисплея (написано на С в кодевижне), у меня несколько штук работает, проблем с еепром не было ни разу
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Выложите пожалуйста. Я сам тоже поизучаю.
Станислав
Выкладываю, хотя по записи в еепром там изучать нечего...принцип такой: т.к. запись по меркам мк идет долго (для программиста это выглядит как простое присвоение, но на самом деле, если глянуть листинг ассемблера - там цикл ожидания), чтобы не вызвать срыв индикации, прерывания я не запрещаю, но сам гарантирую отсутствие взаимодействия с еепром - если меню==10 то пользовательское меню блокируется (для человека это миг), а остальная часть с еепром не взаимодействует.
Дополнения: третья кнопка = одновременное нажатие двух - вход в установку границ, длительное удержание - служебное меню (коррекция температуры и яркость индикатора).
нажатие одной кнопки в основном экране - показ уставок, в настройках - изменение величины.
постарался сделать пользовательский интерфейс максимально удобным - отработка кнопок позволяет нажимать кнопки немного неодновременно (мы же не роботы)
часть хотелок не влезла... флеша в тиньке маловато.
файлы проекта называются насос, это потому что данная платка и была спроектирована как блок управления насосом - следила за давлением и состоянием проводов до ЭКМа, всё с нуля писать было лень... как говорится ничего не бывает настолько постоянным как временное.
Дополнения: третья кнопка = одновременное нажатие двух - вход в установку границ, длительное удержание - служебное меню (коррекция температуры и яркость индикатора).
нажатие одной кнопки в основном экране - показ уставок, в настройках - изменение величины.
постарался сделать пользовательский интерфейс максимально удобным - отработка кнопок позволяет нажимать кнопки немного неодновременно (мы же не роботы)
часть хотелок не влезла... флеша в тиньке маловато.
файлы проекта называются насос, это потому что данная платка и была спроектирована как блок управления насосом - следила за давлением и состоянием проводов до ЭКМа, всё с нуля писать было лень... как говорится ничего не бывает настолько постоянным как временное.
- Вложения
-
- термостат.rar
- (296.04 КБ) 418 скачиваний
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3551057#p3551057"]чтобы не вызвать срыв индикации, прерывания я не запрещаю[/uquote]
Может, в этом и есть причина ?
но если и в ней прерывания не запрещаются и они попадают именно на эти 4 цикла, то гарантии правильной записи - никакой.
А миллисекундный срыв индикации, думаю, не такя уж беда, чтобы из-за него рисковать сбоем при записи.
Может, в этом и есть причина ?
Не знаю, какой код записи в EEPROM в библиотечной функции, сам с EEPROM всегда работал через ассемблер,
5. Within four clock cycles after setting EEMWE, write
a logical one to EEWE. (стр. 30 PDF)
но если и в ней прерывания не запрещаются и они попадают именно на эти 4 цикла, то гарантии правильной записи - никакой.
А миллисекундный срыв индикации, думаю, не такя уж беда, чтобы из-за него рисковать сбоем при записи.



