[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Терморегулятор с динамической индикацией.
Aleks8383Дата: Суббота, 09.06.2012, 01:55 | Сообщение # 1
Группа: Проверенные
Сообщений: 104

Статус: Offline
Всем привет.Сделал терморегулятор,всё класно всё работает кроме одного записи в eeprom.
Подскажите чего я нетак делаю,как я только не извращался с ним нехочет записывать в память и всё каждый раз после включения порог температуры стоит 25 градусов,хотя должен записываться другие значения при нажатии кнопок.Да и ещё чудо происходит,при разводке платы хотел переставить выход на реле на портс так неодина нога не работает
Rele Alias Portd.4 вместо portd ставлю portc не один свободный пин нехочет работать,всё время на нём держится 1,ну это нестоль важно но всёравно странно.
Индикатор использовал с общим катодом с транзисторами в катодах.Завтро фото выложу и схему,а то уже 2 ночи,насегодня паяния хватит wacko
Прикрепления: Termomtr.bas (11.4 Kb)




Сообщение отредактировал Aleks8383 - Суббота, 09.06.2012, 01:55
 
senyДата: Суббота, 09.06.2012, 09:04 | Сообщение # 2
Группа: Проверенные
Сообщений: 45

Статус: Offline
День добрый. По поводу портов config port........ as output. Или input. Ставьте. Когда надо подергать ножкой одной. То без конфигурации все работает а если ноги используются для шима i2c кнопок и т.д. То необходимо каждый пин прописывать что он должен делать.
А где в приложеном исходнике обращение к "памяти".???




Сообщение отредактировал seny - Суббота, 09.06.2012, 09:08
 
Aleks8383Дата: Суббота, 09.06.2012, 12:04 | Сообщение # 3
Группа: Проверенные
Сообщений: 104

Статус: Offline
Так вот же в коде прописано Ddrc = &B11111111 весь порт с навыход работает,выход на катоды индикатора у меня тоже на С весят и работают,а вот реле нахочет невкакую.Да и темболее пробовал и output.Ну это бог с ним щас реле весит на порту d и работает.
А в память я вот обращаюсь
Code
Minus:                    'обработка кнопки минус
Decr Temp                    'уменьшаем температуру
If Temp < 0 Then                    'если темп. меньше 0 то так и остаётся ноль
Temp = 0
End If
Temp_eep = Temp                    'пишем установленный  порог в память
   C = 1                    'ставим флаг для отображения порога
Return

Plus:                    'обработка кнопки минус,тут тоже самое что и с минусом только наоборот
Incr Temp
If Temp > 40 Then
Temp = 40
End If
Temp_eep = Temp
C = 1
Return

а в начале программы считываю из памяти
Code
I = I_eep                    'пишем флаг из памяти
If I <> 1 Then I = 2                    'если он =1 то пишем значение порога из памяти
If I = 1 Then Temp = Temp_eep

If I = 2 Then Temp = 25                    'а если он =2 то ставим первоначальное значение порога и ставим
I = 1                    'Флаг = 1 что бы следующие значения порога равнялись установленными
I_eep = I                    'нами(это нужно при первом включении,и наче будет пустая temp)

но почемуто у меня всё время первоначальное значение вылазиет 25 град порог.
Конфигурация вот
Code
Dim Temp_eep As Eram Byte                    'значение порога температуры в еепром
Dim Temp As Byte                    'порог температуры в оперативной памяти
Dim I_eep As Byte
Dim I As Byte                    'флаг для eeprom




Сообщение отредактировал Aleks8383 - Суббота, 09.06.2012, 12:24
 
Aleks8383Дата: Суббота, 09.06.2012, 12:14 | Сообщение # 4
Группа: Проверенные
Сообщений: 104

Статус: Offline
Вот вотка ,печатка и схема.
Схема
Фото1
Фото2
Прикрепления: termomtr.rar (19.7 Kb)




Сообщение отредактировал Aleks8383 - Суббота, 09.06.2012, 12:22
 
exersizzeДата: Суббота, 09.06.2012, 13:23 | Сообщение # 5
Группа: Администраторы
Сообщений: 723

Статус: Offline
Переменная I_eep случаем не должна быть переменной типа Eram Byte? А то при запуске программы она всегда будет равна 0, и проверка условия
Code
I = I_eep                    'пишем флаг из памяти   
   If I <> 1 Then I = 2                    'если он =1 то пишем значение порога из памяти   
   If I = 1 Then Temp = Temp_eep   

   If I = 2 Then Temp = 25                    'а если он =2 то ставим первоначальное значение порога и ставим   
   I = 1                    'Флаг = 1 что бы следующие значения порога равнялись установленными   
   I_eep = I                    'нами(это нужно при первом включении,и наче будет пустая temp)
не имеет смысла


 
Aleks8383Дата: Суббота, 09.06.2012, 13:47 | Сообщение # 6
Группа: Проверенные
Сообщений: 104

Статус: Offline
Блин только заметил что она просто Byte,во спасибо.Это называется свежим взглядом посмотреть.А ещё неподскажешь почему если я Rele Alias Portd.4 меняю на поре С безраздницы какая ножка неработает реле ,те всёвремя включено.Хотя весь порт С навыход настроен.

 
exersizzeДата: Суббота, 09.06.2012, 14:29 | Сообщение # 7
Группа: Администраторы
Сообщений: 723

Статус: Offline
А учитываешь то, что для отображения чисел на семисегментнике полностью дергаешь PortC? Думаю из-за этого. Попробуй маленькую программу для работы только с этим портом, чтобы убедится что он работает.

 
Aleks8383Дата: Суббота, 09.06.2012, 14:49 | Сообщение # 8
Группа: Проверенные
Сообщений: 104

Статус: Offline
Да действительно весь порт переключаю,вот на это внимания и не обратил.
Сейчас переделал прошивку ,всё работает.Значения записываются нормально.
Спасибо за подсказку.




Сообщение отредактировал Aleks8383 - Суббота, 09.06.2012, 14:51
 
  • Страница 1 из 1
  • 1
Поиск: