Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

Термостат ∆T=0,1°C - работа над ошибками

Здесь только проекты на ATtiny

Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 04 дек 2014 12:09

Здесь будем выкладывать исправления к прошивке Термостат ∆T=0,1°C

Если кто устанавливает исправление - пишите в эту ветку, типа "прошился tl_mod_001, работает (или не работает)"

доработка "tl_v3.2_mod_001" (ищите в архивах соотв. папку)
Исправлен глюк "не работает кнопка "+" при изменении дельты, значения меняются от 99 до 0 и снова перескакивают на 99
проверено-работает 1 раз

доработка "tl_v3.2_mod_003" (ищите в архивах соотв. папку)
При старте показывать не 0.0, а что-то непохожее на цифры, например "----"
включает в себя tl_v3.2_mod_001
проверено-работает 1 раз

доработка "tl_v3.2_mod_005" (ищите в архивах соотв. папку)
При старте не включать нагрузку до получения первого значения температуры
включает в себя tl_v3.2_mod_001, tl_v3.2_mod_003
проверено-работает 0 раз

доработка "tl_v3.2_mod_006" (ищите в архивах соотв. папку)
Правильное ограничение температуры при изменении дельты
включает в себя tl_v3.2_mod_001, tl_v3.2_mod_003, tl_v3.2_mod_005
проверено-работает 0 раз

версия tl_v4.0.3 Проверка данных с датчика, желательно определять обрыв и КЗ на землю, включает в себя все моды 001-006. Настолько много изменений, что приходится выделять в отдельную версию.
  1. нагрузка не включается до получения первых данных от датчика
  2. до получения первых данных от датчика на индикаторе отображается "---.-"
  3. контроль ошибок в линии датчика
  4. вход в настройки только по нажатию двух кнопок
  5. повторное нажатие на две кнопки сразу - настройка дельты
  6. третье нажатие на две кнопки сразу - просмотр последней обнаруженной ошибки
  7. переход в состояние ошибки после 2х любых ошибок подряд
  8. мигание индикатора в состоянии ошибки
  9. мигание можно прекратить нажатием на любую кнопку, можно на две кнопки сразу
  10. но состояние ошибки при этом не сбрасывается
  11. в состоянии ошибки отображается код ошибки:
    "E 0.1" ошибка контрольной суммы
    "E 0.2" обрыв
    "E 0.3" после нескольких ошибок от датчика получено значение 85°C
    "E 0.4" короткое замыкание на землю
  12. в состоянии ошибки нагрузка отключается на всех портах
  13. как только данные с датчика удастся прочитать - снова отображается температура, включается или выключается нагрузка, но моргание остается - это позволяет увидеть спустя длительное время, что были ошибки, можно посмотреть код последней возникшей ошибки трехкратным нажатием на обе кнопки
  14. шаг времени таймера - ровно 1с, измерение температуры - каждые 2 секунды (особенность нашего алгоритма)
  15. включено подавление мерцания при опросе датчика
  16. введено понятие опций, опции включаются "раскомментированием дефайнов" в файле termostat_led.h
  17. прошивка может быть собрана на более новых версиях CVAVR (например v2, v3)
проверено-работает 2 раза
проверено-глючит 0 раз

Активные запросы:

007 Вход в режим изменения настроек - только по нажатию на обе кнопки, повторное нажатие на обе кнопки переводит в режим изменения дельты - в работе
008 Настраиваемая коррекция погрешности датчика, по аналогии с прошивкой для инкубатора от Grey4ip - в работе
Вложения
hex-2015-04-17-16-00.rar
прошивки
(68.99 КБ) Скачиваний: 577
src-2015-04-17-16-00.rar
исходники
(87.98 КБ) Скачиваний: 462
Последний раз редактировалось propell_ant 08 дек 2014 21:33, всего редактировалось 7 раз(а).
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 04 дек 2014 12:11

Дополнительные инструкции по прошивке
При эксплуатации в теплых помещениях (при комнатной температуре) однозначно нужно использовать встроенный BOD - детектор низкого напряжения питания.
При эксплуатации на морозе (в т.ч. внутри морозильных камер) однозначно НЕЛЬЗЯ использовать встроенный BOD, т.к. он будет глючить и блокировать работу МК. Используйте супервизор питания, но обязательно проверьте работу ВСЕГО (включая блок питания и реле) устройства в морозилке.

Ponyprog dandyv
Для корректной прошивки микроконтроллера программатором PonyProg необходимо следовать следующим инструкциям.

File – Open Program (Flash) File… указываем путь к файлу с расширением ‘hex’
Command – Write Program (Flash)

File – Open Data (EEPROM) File… указываем путь к файлу с расширением ‘eep’
Command – Write Data (EEPROM)

В обоих случаях должна пройти запись и верификация.

И самое главное:

Command – Read All
После прочтения контроллера убедиться, что EEPROM прошился (Замечено, что не всегда прошивается и потом возникают проблемы в режиме установки Дэльты). Если EEPROM не прошился – пробовать еще раз его прошить
Последний раз редактировалось propell_ant 08 дек 2014 12:02, всего редактировалось 1 раз.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 04 дек 2014 12:12

зарезервировано
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 04 дек 2014 14:12

Я так понимаю при включении на дисплее 0.0 и нет защиты от обрыва датчика, т.е. оригинальная прошивка от hardlock просто исправлен глюк с кнопкой при проблемах с EEPROM?
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 04 дек 2014 15:26

dandiv писал(а):оригинальная прошивка от hardlock просто исправлен глюк с кнопкой при проблемах с EEPROM?
ага.
Обрыв и 0.0 добавил в работу.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 05 дек 2014 04:44

Прошил tl_mod_001 - Работает!
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 06 дек 2014 11:36

Для корректной прошивки микроконтроллера программатором PonyProg необходимо следовать следующим инструкциям.

File – Open Program (Flash) File… указываем путь к файлу с расширением ‘hex’
Command – Write Program (Flash)

File – Open Data (EEPROM) File… указываем путь к файлу с расширением ‘eep’
Command – Write Data (EEPROM)

В обоих случаях должна пройти запись и верификация.

И самое главное:

Command – Read All
После прочтения контроллера убедиться, что EEPROM прошился (Замечено, что не всегда прошивается и потом возникают проблемы в режиме установки Дэльты). Если EEPROM не прошился – пробовать еще раз его прошить
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение georg77 » 06 дек 2014 16:56

весьма опасная фича - слишком лёгкий вход в режим установки температуры термотата - простое нажатие любой из 2-х кнопок
может вызвать беду при попадании влаги, падении посторонних предметов, баловства детей
я переделал вход в этот режим так что можно войти только при нажатии 2-х кнопок одновременно (как в режим установки дельты)
к сожалению под рукой нет исходника с переделкой
georg77
Частенько бываю
 
Сообщения: 84
Зарегистрирован: 26 ноя 2011 06:38

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 06 дек 2014 18:47

georg77 писал(а):весьма опасная фича - слишком лёгкий вход в режим установки температуры термотата - простое нажатие любой из 2-х кнопок
...
к сожалению под рукой нет исходника с переделкой
там всё просто, даже размер прошивки (почти) не поменяется. Я наверно включу по умолчанию вход в настройки по двум кнопкам. Надо подумать, что делать с такими переделками, народ же комбинировать захочет.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение hardlock » 06 дек 2014 22:26

propell_ant, отличная ветка! Так держать. Я к сожалению пока всё дальше от этого... :(
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3374
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 07 дек 2014 21:17

dandiv писал(а):Я так понимаю при включении на дисплее 0.0 и нет защиты от обрыва датчика, т.е. оригинальная прошивка от hardlock просто исправлен глюк с кнопкой при проблемах с EEPROM?
dandiv, если сможете, протестируйте в железе определение обрыва и КЗ (tl_mod_002 во вложении).
Описание:
1. При получении данных проверяется контрольная сумма,
1.1 если контрольная сумма не совпала - начинается отсчет ошибок,
1.2 предусмотрено некоторое допустимое количество ошибок - строка 61 - #define MaxDataErrors 1
это означает, что на единичную ошибку (это вообще-то вероятная ситуация) термостат не отреагирует никак.
Можно поставить MaxDataErrors 0 - будет реакция на каждую ошибку, MaxDataErrors 255 - будет ждать 255*2 секунд, прежде чем отреагировать.
2.Реакция на ошибку:
2.1 Отключение обоих управляющих портов PORTD.2 = 0; PORTD.3 = 0;
2.2 Отображение информации об ошибке: E 0.X, где X - код ошибки (см. ниже)
3. Восстановление после ошибки
3.1 Первое же удачное получение данных приводит к обычной реакции термостата в зависимости от полученного значения температуры
3.2 Термостат перестает показывать код ошибки и начинает показывать текущую температуру
4. Коды и описание ошибок:
4.1 "E 0.1" - ошибка контрольной суммы.
4.2 "Е 0.2" - обрыв линии данных датчика - все принятые байты данных содержат только 0xFF, это однозначно означает отсутствие какого-либо ответа от датчика, как правило это именно обрыв
4.3 "Е 0.3" - после некоторого периода нахождения в состоянии ошибки данных удалось успешно считать температуру, но полученное значение температуры в точности равно 85 градусов (0x0550) - это значение по умолчанию возвращается при попытке чтения данных из датчика без предшествующей команды "ConvertT". После длительного отсутствия связи вероятность получения этого "волшебного" значения составляет примерно 50% (особенность нашего алгоритма опроса датчика)
4.4 "Е 0.4" - короткое замыкание на землю - при чтении данных все байты оказались равными 0x00. С исправным датчиком это невозможно, как правило это именно КЗ на землю.

+ по вашему запросу - tl_mod_003 При старте показывать не 0.0, а что-то непохожее на цифры, например "----", эта прошивка не включает в себя tl_mod_002
прошивка для нагревателя и исходники - в аттаче
Вложения
tl_mod_003_src_and_hex.rar
(13.36 КБ) Скачиваний: 203
tl_v4.0.0_src_and_hex.rar
это всё есть в архиве в 1-м посте
(20.66 КБ) Скачиваний: 187
Последний раз редактировалось propell_ant 08 дек 2014 12:19, всего редактировалось 3 раз(а).
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 08 дек 2014 04:52

propell_ant Проверить смогу только вечером, дома он остался
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 08 дек 2014 08:57

hardlock писал(а):propell_ant, отличная ветка! Так держать. Я к сожалению пока всё дальше от этого... :(
hardlock, спасибо!
Вам просто нужен модератор в пару веток - трафик небольшой, но реакция на исправления народу всё-таки требуется.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 08 дек 2014 17:37

Отчет:
(проверял только heat OA)
tl_mod_002
Прошил hex (без записи EEPROM)
При включении без температурного датчика 0.0 потом ошибка Е0.2. В настройках 28.0 и d 1.0 (обе кнопки работают). Из меню регулировки температуры и дэльты не выходит (так и отображается выбранное меню). При включении с датчиком температуры 0.0 потом текущая температура, кнопки во всех режимах работают. При замыкании на на землю отображается Е0.4 (спустя несколько попыток прочитать датчик), после устранения замыкания отображается текущая температура (узнать было ли замыкание невозможно - никак не индицируется).
Прошил hex (с записью EEPROM) - все так же.

tl_mod_003
Прошил hex (без записи EEPROM)
При включении без температурного датчика ---.- потом 0.0. При включении с датчиком температуры ---.- потом текущая температура

p/s tl_mod_002 - Отключение обоих управляющих портов PORTD.2 = 0; PORTD.3 = 0 не проверил, забыл :oops: Сейчас комп, к которому подключен программатор занят, проверить не могу. Е0.1 и Е0.3 не знаю как можно смоделировать.

p/s 2 Для себя я немного корректировал прошивку IYra termostat_led_5_40_0_4, там при обрыве датчика показания начинают мигать, если датчик потом читается, то отображается текущая температура (продолжает мигать до тех пор, пока не будет нажата одна из кнопок. Вроде очень информативно, так как если увидел, что показания мигают, то значит были проблемы и необходимо искать причину. Если видеть температуру и код возникшей ошибки... как именно лучше это отобразить пока нет предложений... то это даст повод на поиск возможных проблем).

Добавлено спустя 1 час 21 минуту 42 секунды:
propell_ant Огромное Вам Спасибо за доработку авторской hardlock прошивки!!! :good:
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 08 дек 2014 21:29

dandiv писал(а):Отчет:
(проверял только heat OA)
tl_mod_002
Прошил hex (без записи EEPROM)
При включении без температурного датчика 0.0 потом ошибка Е0.2.
При включении с датчиком температуры 0.0 потом текущая температура, кнопки во всех режимах работают.
При замыкании на на землю отображается Е0.4 (спустя несколько попыток прочитать датчик), после устранения замыкания отображается текущая температура
всё так и задумано.
В настройках 28.0 и d 1.0 (обе кнопки работают). Из меню регулировки температуры и ли дэльты не выходит (так и отображается выбранное меню).
это мой косяк, отлично! Видел такое разок в модели, но не придал значения. Исправим.
tl_mod_003
Прошил hex (без записи EEPROM)
При включении без температурного датчика ---.- потом 0.0. При включении с датчиком температуры ---.- потом текущая температура
всё так и задумано. tl_mod_003 не содержит логики отлова ошибок, он только показывает ---.- первые секунды до получения данных, так что не нужно эту версию проверять с отключенным датчиком
p/s tl_mod_002 - Отключение обоих управляющих портов PORTD.2 = 0; PORTD.3 = 0 не проверил, забыл :oops: Сейчас комп, на котором программатор занят, проверить не могу. Е0.1 и Е0.3 не знаю как можно смоделировать.
E0.1 - никак не смоделируешь без дополнительного оборудования.
E0.3 - в модели у меня получается, если стартовать с отключенным датчиком, и ровно через 6 секунд датчик подключить. Сначала показывает 0.0, потом Е0.2 (обрыв) и потом на пару секунд (6ая - 8ая) Е0.3. Потом, конечно, температуру.
p/s 2 Для себя я немного корректировал прошивку IYra termostat_led_5_40_0_4, там при обрыве датчика показания начинают мигать, если датчик потом читается, то отображается текущая температура (продолжает мигать до тех пор, пока не будет нажата одна из кнопок. Вроде очень информативно, так как если увидел, что показания мигают, то значит были проблемы и необходимо искать причину. Если видеть температуру и код возникшей ошибки... как именно лучше это отобразить пока нет предложений... то это даст повод на поиск возможных проблем).
Намек понял. Сделаем так - пока есть ошибка - показываем ошибку. Как пошли данные - моргаем. Нажатие на кнопку - моргание прекращаем. А последнюю замеченную ошибку показываем при переходе в режим изменения настроек (а он у нас будет строго по нажатию двух кнопок одновременно) - сначала настройки температуры, потом дельта, и последняя - отображение последней запомненной ошибки без возможности редактирования.
Осталось только втиснуть это в свободные 10 слов :-)
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 08 дек 2014 22:32

propell_ant писал(а):Осталось только втиснуть это в свободные 10 слов :-)

Попробуй упростить все свои if-ы
Вместо
Код: Выделить всё
  if (ErrorCounter == 0 && w1buffer[0] == 0x50 && w1buffer[1] == 0x05)

использовать
Код: Выделить всё
  if (ErrorCounter == 0)
  {
    if ( w1buffer[0] == 0x50)
    {
       if (w1buffer[1] == 0x05)
       {

освободится еще десяток
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение hardlock » 09 дек 2014 07:34

IYra, ваша конструкция схавает больше памяти...
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3374
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 09 дек 2014 09:45

hardlock писал(а):IYra, ваша конструкция схавает больше памяти...

Ну я же не просто так ляпнул. Проверил на этом проекте.
У меня получилось 995 слов. Правда использовалась версия 2.05
Но и на старом CodeVision это работало

PS
Ну и еще попалась на глаза такая конструкция - Tnew = Tnew + 0;
наверно можно убрать
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 09 дек 2014 11:11

IYra писал(а):
hardlock писал(а):IYra, ваша конструкция схавает больше памяти...
Ну я же не просто так ляпнул. Проверил на этом проекте.
У меня получилось 995 слов. Правда использовалась версия 2.05
Но и на старом CodeVision это работало
PS
Ну и еще попалась на глаза такая конструкция - Tnew = Tnew + 0;
наверно можно убрать
ой, у нас тут весь бомонд собирается :)
IYra писал(а):Попробуй упростить все свои if-ы, использовать
Код: Выделить всё
     if (ErrorCounter == 0)
      {
        if ( w1buffer[0] == 0x50)
        {
           if (w1buffer[1] == 0x05)
получилось, спасибо! "Tnew = Tnew + 0" тоже убрал, это какие-то остатки от борьбы с оптимизатором.
только я вот так написал, чтоб в одну строчку, как раньше
Код: Выделить всё
  if (ErrorCounter == 0) if (w1buffer[0] == 0x50) if (w1buffer[1] == 0x05)
  {
а пришли пожалуйста проект под 2.05, самому жалко время тратить на подъем версии, а старый проект под 2.05 не компилится

PS Кстати, использование | и & вместо || и && (например if ((eeT_LoadOn > 2250) | (eeT_LoadOn < 450))) не только чревато малозаметными багами, но и кушает больше памяти
PSPS сейчас довел до 979 слов
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 09 дек 2014 15:17

propell_ant писал(а): пришли пожалуйста проект под 2.05, самому жалко время тратить на подъем версии, а старый проект под 2.05 не компилится

Там я добавил в kbd.c
Код: Выделить всё
extern BYTE View;
extern BYTE Counter;
extern WORD T_LoadOn;
extern WORD DeltaT;
extern void RefreshDisplay(void);

и не пошла конструкция val = &w1buffer[0]; - ругалась на несоответствие типов
поставил немного по другому - int *val = (int*)w1buffer;
ЗЫ Где-то на форуме писал что код собранный под 2.05 получается меньше
Вложения
tl_mod_002_ver205.rar
Проект для CVR 2.05
(11.89 КБ) Скачиваний: 181
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 09 дек 2014 22:37

dandiv писал(а):Огромное Вам Спасибо за доработку авторской hardlock прошивки!!! :good:

Это вам спасибо за тестирование!

И вот очередная версия на проверку:
propell_ant писал(а):
dandiv писал(а):В настройках 28.0 и d 1.0 (обе кнопки работают). Из меню регулировки температуры и ли дэльты не выходит (так и отображается выбранное меню).
это мой косяк, отлично! Видел такое разок в модели, но не придал значения. Исправим.
p/s 2 Для себя я немного корректировал прошивку IYra termostat_led_5_40_0_4, там при обрыве датчика показания начинают мигать, если датчик потом читается, то отображается текущая температура (продолжает мигать до тех пор, пока не будет нажата одна из кнопок. Вроде очень информативно, так как если увидел, что показания мигают, то значит были проблемы и необходимо искать причину. Если видеть температуру и код возникшей ошибки... как именно лучше это отобразить пока нет предложений... то это даст повод на поиск возможных проблем).
Намек понял. Сделаем так - пока есть ошибка - показываем ошибку. Как пошли данные - моргаем. Нажатие на кнопку - моргание прекращаем. А последнюю замеченную ошибку показываем при переходе в режим изменения настроек (а он у нас будет строго по нажатию двух кнопок одновременно) - сначала настройки температуры, потом дельта, и последняя - отображение последней запомненной ошибки без возможности редактирования.
Осталось только втиснуть это в свободные 10 слов :-)
Всё исправил, просмотр ошибки и мигание - добавил. Единственное отличие от запланированного - мигать начинает еще во время отображения ошибки. Но это наверно даже лучше. Заметнее.
Мигает без полного гашения, яркость меняется от 100% до где-то 50%, чтобы читалось хорошо.
И если прошивка настроена так, чтобы допускались одна или несколько ошибок без индикации, то работает так:
Допустим, мы используем настройку по умолчанию - единичную ошибку пропускать,
При обнаружении первой ошибки - ошибочные данные просто игнорируются (реле остаются как были), но номер ошибки запоминается. Снова делается запрос, снова ждем, читаем температуру.
Если прочиталось без ошибок - реле переключатся в соответствии с текущими настройками, а если перейти в настройки (ДВУМЯ кнопками одновременно. три раза) то можно посмотреть последний замеченный код ошибки.
Если прочиталось опять с ошибками - показываем E 0.X и моргаем. Моргаем пока не нажмем любую кнопку (или две сразу).

В последний момент заметил, что точка в первом разряде продолжает гореть если отображается ошибка - в принципе не страшно, но надо бы ее гасить.

перезалил исходники-прошивки, с учетом замечаний. Сделал мигание 2 раза в секунду - dandiv, сообщение об ошибке должно быть хоть чуть-чуть "напрягающим", а 1 раз в секунду - это примерно частота сердцебиения, поэтому мигание с такой частотой не напрягает. индикацию ошибки должен увидеть даже посторонний человек, если частота будет ненапряжной, он не придаст этому значения и никому не скажет.
Вложения
tl_v4.0.3_src_and_hex.rar
это всё есть в архиве в 1-м посте
(20.93 КБ) Скачиваний: 233
Последний раз редактировалось propell_ant 30 дек 2014 11:13, всего редактировалось 5 раз(а).
Причина: оформлено в новую версию (v4.0.3)
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 10 дек 2014 08:43

Отчет:
(проверял только heat OA)
tl_mod_002b2
Прошил, при включении без температурного датчика ---.- потом ошибка Е0.2. При включении с датчиком температуры ---.- потом текущая температура. В настройках 28.0 и d 1.0. В меню регулировки температуры, дэльты и ошибки входит нажатием обоих кнопок. Кнопки во всех режимах работают. При замыкании на на землю отображается Е0.4. После устранения проблем с датчиком (обрыв или замыкание) отображается текущая температура, показания мигают (При появлении ошибки, она тоже мигает) до тех пор, пока не будет нажата кнопка (кнопки). При появлении ошибки нагрузка отключается, точка остается гореть, после устранения ошибки точка продолжает гореть даже если при текущей температуре нагрузка должна быть отключена (нагрузка отключена, точка горит). Если потом текущая температура разрешает включении нагрузки, то нагрузка включается, точка горит, при выходе текущей температуры из выбранного диапазона температур - нагрузка отключается, точка гаснет.

p/s Получается небольшая ошибочка с точкой и еще мне кажется слишком частое моргание показаний при возникновении ошибок (несколько раз в секунду). По яркости не могу пока сказать, возможно будет приятнее, если яркость не от 50% будет меняться, а с более низкого значения (при более медленном моргании возможно яркость не нужно будет менять. Нужно пробовать)

Добавлено спустя 51 минуту 46 секунд:
Заметил еще одну вещь... При опросе датчика индикатор немного меняет яркость (это вообще во всех прошивках, так что это не важно), а когда появляется ошибка начинаются мигания несколько раз в секунду с изменением яркости, да еще помаргивание при опросе датчика - не сильно красиво получается. Может не стоит яркость от 50% до 100% менять, а просто мигать? (Это мое мнение, может у кого-то другое)
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 10 дек 2014 09:44

dandiv писал(а):p/s Получается небольшая ошибочка с точкой и еще мне кажется слишком частое моргание показаний при возникновении ошибок (несколько раз в секунду). По яркости не могу пока сказать, возможно будет приятнее, если яркость не от 50% будет меняться, а с более низкого значения (при более медленном моргании возможно яркость не нужно будет менять. Нужно пробовать)
Спасибо!
Если вдруг кого-то припрет менять яркость именно в этом исходнике -
строка 47
Код: Выделить всё
#define BlinkHalfPeriod   12 //примерно 4 моргания в секунду
но не больше 127, там дальше оно умножается на 2.
и строки 191 и 242
Код: Выделить всё
  if (View == 0) if (ErrorDetected) if (DimmerCounter % 4 == 0)
делитель 4 для DimmerCounter определяет яркость. Поставите 2 - будет 35%, сейчас 4=60%

IYra, спасибо за 2.05, похоже понадобится.

Я пошел в глубокую отладку, нужно еще выковырять пару байт памяти и оттестить всё как следует, а не как сейчас.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 10 дек 2014 15:28

dandiv писал(а): да еще помаргивание при опросе датчика

что-бы уменьшить моргание при опросе можно вставить в
for (i=0; i<9; i++)
{
w1buffer[i]=w1_read();
ShowDisplayData1() ;
if (w1buffer[i] != 0xFF)
{
Ff = 1;
}
if (w1buffer[i] != 0x00)
{
NonZero = 1;
}
}
где ShowDisplayData1
void ShowDisplayData1(void)
{ BYTE i;
for (i=0; i<11; i++) //шоб не моргало изображение делаем обновление эрана 10 раз
{
ShowDisplayData();
}
}
ну и заменить везде циклы на вызов этой функции. Уменьшает код заодно.
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 10 дек 2014 16:26

IYra писал(а):
dandiv писал(а): да еще помаргивание при опросе датчика
...
ну и заменить везде циклы на вызов этой функции. Уменьшает код заодно.
уже применено ;)

dandiv,
строка 400
вместо ShowDisplayData(); поставить ShowDisplayData11Times();
сейчас это максимум, чего можно добиться. Если получится освободить память, сделаем вообще без моргания
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

След.

Вернуться в ATtiny



Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 10