Например TDA7294

Форум РадиоКот • Просмотр темы - Прошу помощи в программировании Pic16f630 - термореле
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 19:33:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 39 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 11:26:34 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Не советую меня учить что красиво , а что нет. У человека 2 руки и ими он пишет и программу и сообщения. У ТСа явный копипаст. Поэтому он даже не знает в чём написана программа. Если сильно нужно я могу найти эту прогу в инете. И попахивает от него студнем. Красиво прикидывается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 12:48:36 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
otest писал(а):
Что за набор файлов в папке проекта? Чем он запускается ?
Это проект MPLAB X :)

Извините - это я правда не подумал про различие с Х и без Х т.к. в программе без Х я не работал. MPLAB X.
NStorm писал(а):
Не по факту, а в протеусе.

Не только, на окне уже год висит термометр на 18B20 - работает без сбоев - там та же программа и 750 микросекунд. На макетке тоже работает. Может в даташите ошибка?
NStorm писал(а):
PORTDQ equ PORTA
TRISDQ equ TRISA

Я не сам, конечно, из головы выдумывал код - а по шпаргалкам и подсказкам в интернете - но не ctrl V+ctrl C, а все вдумчиво и руками написано - где-то встретил что если присваивать имя порту и номеру порта - то потом проще менять код для разных МК, например pic16f676 PORTC, pic16f628А PORTB, и также с ножкой вывода.
Про отрицательные значения в термометре написан такой код:
Opredelenie_Znaka
clrf Ind_Znak;0
movf Temp,0
btfss Temp,7
return
incf Ind_Znak,1
comf Temp,0
addlw .1
return
Но мне он тут не нужен, т.к. если от датчика получено отрицательное значение - то программа ветвится по goto на включение ножки 5 и далее на начало программы.

Добавлено after 11 minutes 9 seconds:
T4 equ b'00000100'; 0x04
T6 equ b'11111001'; 0xF9
Это что ?

Это моя задумка реализации условия больше/меньше
цифры 4 и 249 записываются в 2 регистра общего назначения.
Если из чисел от 0 до 3-х вычесть число 4 - тобудет займ в регистре STATUS - так мы отследим, что число температуры находится от 0 до 4.
Далее т.к. в 8-битном регистре максимальное число это 255
То если прибавить число 249 и число больше 6 (от 7 до 255) то в регистре STATUS можно отследить перенос теми же флагами, что и с займом.

Нашел ошибки в своем коде - вот исправленный вариант - но пока еще не работает:
bcf STATUS,C
bcf STATUS,DC
bcf STATUS,Z
MOVF T4,0
SUBWF Temp,0 ;vichitanie is Temp-4=?
BTFSC STATUS,Z ; 0?
goto VKL ; esli 0 to vkl
BTFSC STATUS,DC ;proveriaem zaim desyatok
goto VKL ;bil zaim to vkl
BTFSC STATUS,C ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
MOVF Temp,0 ;W=temp
bcf STATUS,C
bcf STATUS,DC
bcf STATUS,Z
ADDWF T6,0 ;slozenie temp i 6
BTFSC STATUS,Z ; 0?
goto VIKL ; esli 0 to vikl
BTFSC STATUS,DC ;proveriaem zaim desyatok
goto VIKL ;bil zaim to vikl
BTFSC STATUS,C ;proveriaem zaim edinic
goto VIKL ;bil zaim to vkl

Где, Temp - значение температуры от датчика

Добавлено after 48 minutes 19 seconds:
STATUS,5 - нужно применять однозначные имена флагов C,Z,RP и т.д.

С DC и Z - флаги переноса/заема, десятичного переноса/заема и нулевого результата, 0, 1 и 2
RP5 и RP6 флаги выбора банка 0,1,2,3 (у pic16f628 4 банка)
Имеете ввиду в шапке присваивать значения:
С equ 0
DC equ 1
Z equ 2
RP0 equ 5
RP1 equ 6 и дальше использовать имена для наглядности?


Последний раз редактировалось profradio Ср дек 02, 2020 13:35:21, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 13:28:43 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 1
В шапке нужна строка include p16f628A.inc
Файл .INC сам всё присвоит. Читайте уроки АСМ.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 16:48:45 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
3-й вариант правки кода:
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
movlw .4
SUBWF Temp,0 ;vichitanie is W-4=?
BTFSC STATUS,2 ; 0?
goto VKL ; esli 0 to vkl
BTFSC STATUS,1 ;proveriaem zaim desyatok
goto VKL ;bil zaim to vkl
BTFSC STATUS,0 ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
movlw .249 ;slozenie temp i 249
BTFSC STATUS,2 ; 0?
goto VIKL ; esli 0 to vikl
BTFSC STATUS,1 ;proveriaem zaim desyatok
goto VIKL ;bil zaim to vikl
BTFSC STATUS,0 ;proveriaem zaim edinic
goto VIKL ;bil zaim to vkl

otest писал(а):
T4 equ b'00000100';
T6 equ b'11111001';
Это что ?

Были правы - фигню написал:)
Но код все еще не работает - почему если из 7 вычесть 4 - в аккумуляторе W сохраняется 3 - все верно, но 0(С) и 1(DC) бит регистра STATUS равны 1?


Последний раз редактировалось profradio Ср дек 02, 2020 17:13:16, всего редактировалось 1 раз.

Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 17:00:36 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
profradio, пожалуйста, цитируйте правильно. Вы уже 2ой раз цитируете так, что якобы я писал, то, что я не писал!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 02, 2020 17:45:46 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
NStorm писал(а):
цитируйте правильно

Исправил!
Про
profradio писал(а):
0(С) и 1(DC) бит регистра STATUS равны 1

Отвечу сам - тут инверсное значение при операции вычитания.
Код 4 вариант:
movlw .4
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
SUBWF Temp,0 ;vichitanie is W-4=?
BTFSC STATUS,2 ; 0?
goto VKL ; esli 0 to vkl
BTFSS STATUS,1 ;proveriaem zaim desyatok
goto VKL ;bil zaim to vkl
BTFSS STATUS,0 ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
movlw .249 ;slozenie temp i 249
BTFSC STATUS,2 ; 0?
goto VIKL ; esli 0 to vikl
BTFSC STATUS,1 ;proveriaem zaim desyatok
goto VIKL ;bil zaim to vikl
BTFSC STATUS,0 ;proveriaem zaim edinic
goto VIKL ;bil zaim to vkl
Уже работает наполовину - при снижении вниз по температуре - включается на 4 градусах и ниже. ВВерх не работает выключение.

Добавлено after 28 minutes 43 seconds:
Все, работает! - вот заезженный мной кусок кода рабочий вариант (пропустил сложение во второй части):
movlw .4
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
SUBWF Temp,0 ;vichitanie is W-4=?
BTFSC STATUS,2 ; 0?
goto VKL ; esli 0 to vkl
BTFSS STATUS,1 ;proveriaem zaim desyatok
goto VKL ;bil zaim to vkl
BTFSS STATUS,0 ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
bcf STATUS,0
bcf STATUS,1
bcf STATUS,2
movlw .250 ;slozenie temp i 250
ADDWF Temp,0
BTFSC STATUS,2 ; 0?
goto VIKL ; esli 0 to vikl
BTFSC STATUS,1 ;proveriaem zaim desyatok
goto VIKL ;bil zaim to vikl
BTFSC STATUS,0 ;proveriaem zaim edinic
goto VIKL ;bil zaim to vkl
goto begin
Код асм рабочий:
Вложение:
termostat4-6.txt [6.68 KiB]
Скачиваний: 209

температура задается двумя десятичными цифрами .4 - нижний порог включения 4 градуса и по формулуле 256-6=250 - верхний порог выключения 6 градусов - задумка рабочая.

Удалось отладить и понять ошибки с помощью дебагера - отличная штука!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Чт дек 03, 2020 07:04:25 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Причесал код - выкинул лишний флаг DC - он как-то непонятно расписан в документации - оказывается, это займ между полубайтами
и лишнюю проверку флага Z при сложении - т.к. 250+6 поднимает флаг С - осталось 13 строчек:
movlw .4
bcf STATUS,C
bcf STATUS,Z
SUBWF Temp,0 ;vichitanie is Temp-4=?
BTFSC STATUS,Z ; 0?
goto VKL ; esli 0 to vkl
BTFSS STATUS,C ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
bcf STATUS,C
movlw .250 ;slozenie temp i 250
ADDWF Temp,0
BTFSC STATUS,C ;proveriaem zaim edinic
goto VIKL ;ne bil zaim to vikl

А если нижний порог вычислять по формуле t + 1 = 5 в моем случае - то код можно сократить до 10 строчек:

movlw .5
bcf STATUS,C
SUBWF Temp,0 ;vichitanie is Temp-5=?
BTFSS STATUS,C ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
bcf STATUS,C
movlw .250 ;slozenie temp i 250
ADDWF Temp,0
BTFSC STATUS,C ;proveriaem zaim edinic
goto VIKL ;ne bil zaim to vikl

А если не делать гистерезис (вернее он будет в 1 градус 4вкл и до 5выкл и наоборот) - то можно код сократить по одному порогу (допустим как у меня - 4 градуса) до 6 строчек:

movlw .5
bcf STATUS,C
SUBWF Temp,0 ;vichitanie is Temp-5=?
BTFSS STATUS,C ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
goto VIKL ;ne bil zaim to vikl


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 09:17:50 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Думал дело уже в шоколаде - но нет, танцы с бубнами продолжаются! Купил уже второй датчик 18В20 - не могу понять почему не работает. Может быть МК не исправный. В протеусе все работает. На макетке нет.
Макетка
Изображение
Посмотрел осциллографом
Изображение
Длительность сигналов совпадает с программируемой
Изображение
Что там считывается не разглядеть, правда, но на выходе МК всегда нули.
Последний код:
Вложение:
Термостат.txt [5.51 KiB]
Скачиваний: 225

Задержка стоит 800 микросекунд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 10:40:11 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Датчик без буквы 1820 .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 11:14:52 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Датчик без буквы 1820 .

Не понял?
Придумал тест МК - убрать датчик и прочитать при подключенном резисторе к земле и к шине питания - должны прочитаться все нули либо все единицы - читаются только нули.
Кажется понял - в данном МК нужно инициализировать PORTA на вход выставляя значение 111 в регистре CMCON
movlw .7
movwf CMCON
Да, верно - температуру измеряет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 15:20:37 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Запись 0х07 в CMCON отключает компаратор.
Вернее отключает выводы порта от компаратора, если мне не изменяет мой склероз.

Датчик без буквы 1820 .

Не понял?

Датчики DS1820 с буквами (B, S) и без оных не являются абсолютно идентичными.
Нужно уточнять по даташиту.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 15:27:04 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
profradio, еще возможно стоит отключить АЦП записав 0 в ANSEL: https://radiokot.ru/forum/viewtopic.php ... 1#p3936791
Посмотрите в ДШ вашего МК сами, сейчас некогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 15:59:44 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
В 630 нет АЦП.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 16:13:39 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Тогда не надо )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 18:35:18 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Спасибо за советы! Датчики у меня DS18B20. Я сейчас программирую pic16f628A - такой сейчас нашел у себя. Тему назвал 630 т.к думал делать на нем, но он куда-то задевался. У 630 не нужно было Настраивать CMCON - работало и так. Я тут разобрался почему работает с задержкой 750микросекунд на измерение температуры- на самом деле не работает, сначала выдаётся значение температуры по умолчанию 85 градусов, а далее измерение температуры датчик продолжает и при последующих опросах выдаётся измеренное значение как-бы с запаздыванием. После настройки CMCON Макетка стала измерять температуру (сделал вывод двоичного кода на порт В) при пересчете получается вполне достоверное значение 27 градусов. Завтра доразбираюсь с включением по температуре. Про АЦП почитаю в даташите. В Протеусе схема почему- то работает и без настраивания CMCON - сбивает с толку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Вт дек 08, 2020 19:08:14 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
В pic16f628A тоже нет АЦП, так что CMCON достаточно. Ну а протеус... это ж симуляция. Там не вся периферия может симулироваться или могут быть неточности, нельзя ему на 100% доверять. Хотя для отладки логики кода средство хорошее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 09, 2020 06:54:58 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Шайтан-контроллер работает!
Все как задумано.
Последний код и прошивка с коротким кодом:
Вложение:
Термостат.txt [4.85 KiB]
Скачиваний: 204

Вложение:
Termostat4.X.production.hex [842 байт]
Скачиваний: 272

Сделал вывод значения температуры в двоичном коде на порт В для наглядности, а вывод термостата на первую ногу МК - RA2. ВКЛ при 4 градусах, ВЫКЛ при 5 градусах.
Фото макетки с разной температурой:
-1 градус (зеленый светодиод - знак минус) ВКЛ:
Изображение
Плюс 4 градуса ВКЛ
Изображение
Плюс пять градусов ВЫКЛ
Изображение
Теперь вот задумался - тут есть нехороший момент - т.к. я беру только целую часть значения температуры - то при значении 4.99 градуса будет вкл, а при значении 5.0 градусов выкл - может постоянно переключатся туда-сюда - это не хорошо. Думаю самый простой вариант делать 3 градуса вкл (а по факту 3,93 при 12 битной разрядности) а выкл 5 градусов - по факту 5.0.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Ср дек 09, 2020 15:18:28 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19
Сообщений: 378
Рейтинг сообщения: 0
В первом приближении это называется "гистерезис"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помощи в программировании Pic16f630 - термореле
СообщениеДобавлено: Пн дек 14, 2020 05:40:33 
Встал на лапы

Зарегистрирован: Чт фев 11, 2016 16:59:20
Сообщений: 105
Откуда: Иркутск
Рейтинг сообщения: 0
Проект можно считать законченным - собрана плата на скорую руку
Изображение Изображение
Все уместилось в сетевую коробочку
Изображение
Работает исправно.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 39 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y