Очередной термостат на Tiny2313 сбрасывает данные еепром
Очередной термостат на Tiny2313 сбрасывает данные еепром
Доброго времени суток! собрал данное устройство,Очередной термостат на Tiny2313 и DS18B20, все работает замечательно, показывает, щелкает нагрузкой, но, со временем, записанное еепром температура сбрасывается на изначальную, как при первом включении, будто ничего не выставлял. в программировании не силен, только учусь... питание пробовал и сеть и батарею, электролит и керамика стоят, результат один. прошу помощи!!!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
Ни схемы, ни программы, ни чего ... Какой помощи Вы ждёте ? Экстрасенсов Вы тут вряд ли встретите.
Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
Автор: СКАЗОЧНИК Опубликовано 16.01.2017 Очередной термостат на Tiny2313 и DS18B20. в конце статьи по вопросвм отправка на форум, но ветки не нашел... к сожалению из за скорости интернета не получается загрузить схему и тем более архив с прогой....
что поделать, 21 век.....
- АлександрЛ
- Друг Кота
- Сообщения: 43781
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
Ну, не можете загрузить- не надо, но ссылку на публикацию можно было бы дать!
https://www.radiokot.ru/circuit/digital/home/242/

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

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

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

При случайном сбое раз на многочисленное правильное состояние...
Хотя... все возможно...

Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
серии 2313 к сожалению последняя в заначке, скрутить неоткуда, а ошибка такая раз за разом, чуть ли не закономерность...
Спасибо за код, за одно и сам асм покурю с даташитом.
ошибка так же всплывает, имеет хаотичный характер, все работает как надо и, все работает как надо, делаешь уставку, работает, начинаешь ее изменять, все начинается с произвольного значения сохраненой температуры..
Спасибо за код, за одно и сам асм покурю с даташитом.
ошибка так же всплывает, имеет хаотичный характер, все работает как надо и, все работает как надо, делаешь уставку, работает, начинаешь ее изменять, все начинается с произвольного значения сохраненой температуры..
Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
Было такое на другом АВР. За давностью точно не вспомню, но вроде при плавном нарастании питания затирались начальные ячейки EEPROM. Когда поставилл супервизор питания и область записи перенес немного выше, вроде как исчезло.
Давно это было, в прошлом тысячелетии. Но - как вариант...
Давно это было, в прошлом тысячелетии. Но - как вариант...
Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
Ну и адрес ячейки изменить... на новый - места там достаточно...

Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
С супервизорами пока напряг, но наверное при использовании еепром желательно, хотя свежая батарея, индикатор на минимуме питания, нагрузочные на 1кОм, вместо реле тоже светик,просадка как бы не критична я думаю, и в 10 ую ячейку данные идут, попробовать глубже..?
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
буду пытаться епром на память програм заменить, уставкой не так уж и часто пользоваться буду, буду осваивать, потом на суд код.
ldi temp, 10
out EEAR, temp ; Загружаем адрес нужной ячейки
буду пытаться епром на память програм заменить, уставкой не так уж и часто пользоваться буду, буду осваивать, потом на суд код.

Re: Очередной термостат на Tiny2313 сбрасывает данные еепром
ЕЕПРОМ - программируется обычной программой пользователя.
Флеш-ПЗУ требует спецрежима самопрограммирования, который по сложности и пакостности намного превосходит работу с ЕЕПРОМ (особо на столь мелком МК, как тинька2313).
Лучше уж проработать применение схемы BOR - детектирования пониженного напряжения.
А так надо всю программу со схемой анализировать... ЛЕЕЕНЬЬЬ...
Кстати... значение уставки можно и в самом DS18DB20 хранить...
Что и делалось в те времена, когда о ЕЕПРОМке в МК только мечталось (АТ89С2051 к примеру).

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