Терморегулятор с динамической индикацией.
|
|
Aleks8383 | Дата: Суббота, 09.06.2012, 01:55 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Всем привет.Сделал терморегулятор,всё класно всё работает кроме одного записи в eeprom. Подскажите чего я нетак делаю,как я только не извращался с ним нехочет записывать в память и всё каждый раз после включения порог температуры стоит 25 градусов,хотя должен записываться другие значения при нажатии кнопок.Да и ещё чудо происходит,при разводке платы хотел переставить выход на реле на портс так неодина нога не работает Rele Alias Portd.4 вместо portd ставлю portc не один свободный пин нехочет работать,всё время на нём держится 1,ну это нестоль важно но всёравно странно. Индикатор использовал с общим катодом с транзисторами в катодах.Завтро фото выложу и схему,а то уже 2 ночи,насегодня паяния хватит
Сообщение отредактировал 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
Сообщение отредактировал 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 |
|
| |