Например TDA7294

Форум РадиоКот • Просмотр темы - термометр на pic16f628a и ds18b20
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 26, 2025 06:52:18

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


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



Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 15:11:53 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Все перепробовал с прерываниями от tmr0 и tmr2 ничего не помогает. Программа уже составлена в нее добавлены все функции (индикация,преобразование чисел для индикации, работа с ds18b20),если убираю прерывание на индикации появляются замеры температуры (приходится зацикливать подпрограмму индикации, чтобы увидеть работоспособность программы), но добавляю прерывание от tmr0 на 3мс(думаю что этой выдержки достаточно для 3х значной динамической индикации)и мк не выводит данные и не обменивается данными с датчиком - шина мертвая, такое ощущение,что он зациклился, но как не пойму, без прерывания все работает. Отправляю два файла один с прерываниями(нерабочий),другой без (рабочий). Подскажите может где кроется ошибка ?


Вложения:
ds18b20_no_int.ASM [15.49 KiB]
Скачиваний: 817
ds18b20_int.asm [17.35 KiB]
Скачиваний: 435
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 15:38:29 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4596
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Отладочные средства Вам в помощь. Хотя бы тот же протеус. Пошагайте по программе и найдёте где ошибка.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 16:22:46 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
При входе в прерывание желательно его запрещать на время обработки. Обработку лучше делать вне тела прерывания или расчитывать время обработки, что бы не произошло повторное прерывание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 16:48:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2347
Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
Проще просто не запускать опрос, пока обработка не завершена.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 19:14:54 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
В протеусе все работает, в железе нет, поэтому отследить ошибку невозможно, и в протеус некоректно идет инициализация датчика, когда в железе датчик отзывается и отлично работает.
В теле прерывания находится всего лишь вывод данных на динамическую индикацию которая исполняется за 56мкс, когда само прерывание срабатывает за 3мс, поэтому повторный вызов исключен.
Стоить мне вставить прерывание в программный код, и мк становится "мертвым" ни цифр ни обмена данными с датчиком. Я уже не знаю что и думать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 20:07:19 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Выкладывай весь проект MPLAB ,PROTEUS.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вс ноя 24, 2013 23:57:15 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
выкладываю более старый проект, здесь динамическая индикация работает от tmr2. В протеусе работает, в железе нет.


Вложения:
DS18B20 INI_WR.ASM [18.59 KiB]
Скачиваний: 563
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 02:43:24 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Понял идею, проект добавлен, гляньте и найлите возможную проблему, заранее благодарю.


Вложения:
ds18b20.rar [61.01 KiB]
Скачиваний: 273
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 10:24:07 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4596
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
А в железе как себя ведёт ? Непонятно, что означает "не работает".
Кстати, железо по Вашей схеме можно проверить этой прошивкой - http://eldigi.ru/site/term/13.php , только кварц приляпать навесу, можно без ёмкостей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 11:04:02 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Пишу несколько вариантов поведения в железе: 1) Убираю из программного кода софт работы с датчиком, прерывание оставляю. МК запускается и выполняет корректно написаннный код. 2) Убираю из программного кода прерывания, зацикливаю индикацию в теле прогаммы. МК запускается и отображает температуру (замер температуре осуществляется только при подаче питания). 3) Оставляю прерывание и софт работы с датчиком. МК ничего не отображает, на пине отсуствует обмен данными с датчиком, такое ощущени как будто отуствует тактирование от внутреннего генератора - МК "мертвый".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 11:07:09 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Насчет варианта с кварцом отпишусь попозже, на данный момент не располагаю возможность его приобрести, но идея мне пондравилась!!!

НАРУШЕНИЕ п 2.2
Правила форума 2.2 Запрещается создание нескольких сообщений подряд в одной теме. Если вы хотите что-то добавить к своему, уже написанному сообщению, воспользуйтесь кнопкой "Правка".


Последний раз редактировалось AlekseyEnergo Пн ноя 25, 2013 13:45:35, всего редактировалось 1 раз.
.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 11:56:28 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Предупреждал , что нужно внимателней с прерываниями. До 1-го прерывания программа не успевает даже обменяться с датчиком. Запрети прерывания на время обработки датчика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 18:41:22 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Запрет прерывания я использовал в программном коде, выше кстати выложен проект. Даже если бы он ушел в прерывание без опроса датчика, тогда на индмкации должны выводиться нули? Но этого же не происходит на дисплее ничего не происходит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 20:22:58 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
0,2мсек мало для засветки индикатора.
Запрет прерывания я вижу
BCF INTCON, GIE
MOVF HUNS, W
MOVWF HUNS_ISR
MOVF TENS, W
MOVWF TENS_ISR
MOVF ONES, W
MOVWF ONES_ISR
BSF INTCON, GIE
Только не понимаю смысл его в этом месте.
Складывается впечатление , что я прошу совета.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Пн ноя 25, 2013 23:40:07 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
в эти регистры заносятся данные для индикации, после конвертирования бинарного числа замеров температуры в двоично десятичный код, поэтому можно себе представить как будут высвечиваться данные, если прерывание произойдет во время копирования данных. По моим подсчетам прерывание составляет не менее 1мс (симулировал в mplab).
Да я забыл сказать что использовал материалы с сайта http://www.rlocman.ru/shem/schematics.html?di=92581, единствено что изменил в коде - это работа с индикацией(так как я не использовал транзисторные ключи) и подчистил данные связанные с выводом десятичного значения температуры. Но пока я не вижу ясного ответа на свои вопросы?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вт ноя 26, 2013 00:00:47 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4596
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вот ещё проект под Вашу схему, там использован внутренний осцилятор, попробуйте его залить в свой МК для проверки железа. Архив с примером в конце сообщения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Вт ноя 26, 2013 08:10:23 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Удивляюсь твоей упёртости. Вот скрин .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Ср ноя 27, 2013 03:48:18 
Родился

Зарегистрирован: Вс ноя 24, 2013 15:00:09
Сообщений: 12
Рейтинг сообщения: 0
Cлучайно наткнулся на статью В. Тимофеева "как правильно оформлять программы на ассемблере для pic - контролеров" . Мне пришлось перелопатить код, изменил подпрограмму вывода данных на индикацию, убрал из прерывания таблицу констант вывода данных на дисплей и поместил ее в другом блоке программ. Все отлично работает. Тут проблема вероятнее всего была спрятана в счетчике команд. Правда прошивка в протеусе не работает, в железе наоборот. я прилагаю исправный код на асме может кому-нибудь это пригодится, там есть готовые функции работы с датчиком ds18b20 и 3х значным семисигментником от прерывния по TMR0.
Otset я смотрю на эти скрины и не могу понять, что ты хочешь мне показать, если хочешь показать время срабатывания прерывания от таймера зайди в начало обработчика прерывания и поставь point запусти проект и посмотри на stopwatch и ты увидешь время в 3 мс, в принципе можещь сам посчитать, коэффициент предделителя tmr0 равен 32, время цикала 1 мкс, в таймер загружается число 160, отсюда следует время прерывания = 1мкс х 32 х (256 - 160) = 3072мкс. Всем спасибо за помощь. До связи!!!


Вложения:
ds18b20.rar [4.51 KiB]
Скачиваний: 325
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: термометр на pic16f628a и ds18b20
СообщениеДобавлено: Ср ноя 27, 2013 10:28:19 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Цитата:
убрал из прерывания таблицу констант вывода данных на дисплей

Я об этом писал в 1-ом своём сообщении. От тебя кроме возражений ничего не последовало.
Цитата:
я смотрю на эти скрины и не могу понять

Учи матчасть. В плену бъют сильно. :)))
Цитата:
запусти проект и посмотри на stopwatch и ты увидешь время в 3 мс, в принципе можещь сам посчитать

Мне это и на х... не надо. Я тебе выложил скрины.


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

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


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

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


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

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


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