термометр на pic16f628a и ds18b20

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
VITRIX1983
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 24, 2013 15:00:09

термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

Все перепробовал с прерываниями от tmr0 и tmr2 ничего не помогает. Программа уже составлена в нее добавлены все функции (индикация,преобразование чисел для индикации, работа с ds18b20),если убираю прерывание на индикации появляются замеры температуры (приходится зацикливать подпрограмму индикации, чтобы увидеть работоспособность программы), но добавляю прерывание от tmr0 на 3мс(думаю что этой выдержки достаточно для 3х значной динамической индикации)и мк не выводит данные и не обменивается данными с датчиком - шина мертвая, такое ощущение,что он зациклился, но как не пойму, без прерывания все работает. Отправляю два файла один с прерываниями(нерабочий),другой без (рабочий). Подскажите может где кроется ошибка ?
Вложения
ds18b20_no_int.ASM
(15.49 КБ) 829 скачиваний
ds18b20_int.asm
(17.35 КБ) 448 скачиваний
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: термометр на pic16f628a и ds18b20

Сообщение Аlex »

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

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

При входе в прерывание желательно его запрещать на время обработки. Обработку лучше делать вне тела прерывания или расчитывать время обработки, что бы не произошло повторное прерывание.
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2359
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: термометр на pic16f628a и ds18b20

Сообщение Dmitry Dubrovenko »

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

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

В протеусе все работает, в железе нет, поэтому отследить ошибку невозможно, и в протеус некоректно идет инициализация датчика, когда в железе датчик отзывается и отлично работает.
В теле прерывания находится всего лишь вывод данных на динамическую индикацию которая исполняется за 56мкс, когда само прерывание срабатывает за 3мс, поэтому повторный вызов исключен.
Стоить мне вставить прерывание в программный код, и мк становится "мертвым" ни цифр ни обмена данными с датчиком. Я уже не знаю что и думать?
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

Выкладывай весь проект MPLAB ,PROTEUS.
Реклама
VITRIX1983
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 24, 2013 15:00:09

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

выкладываю более старый проект, здесь динамическая индикация работает от tmr2. В протеусе работает, в железе нет.
Вложения
DS18B20 INI_WR.ASM
(18.59 КБ) 572 скачивания
VITRIX1983
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 24, 2013 15:00:09

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

Понял идею, проект добавлен, гляньте и найлите возможную проблему, заранее благодарю.
Вложения
ds18b20.rar
(61.01 КБ) 282 скачивания
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: термометр на pic16f628a и ds18b20

Сообщение Аlex »

А в железе как себя ведёт ? Непонятно, что означает "не работает".
Кстати, железо по Вашей схеме можно проверить этой прошивкой - http://eldigi.ru/site/term/13.php , только кварц приляпать навесу, можно без ёмкостей.
VITRIX1983
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 24, 2013 15:00:09

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

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

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

Насчет варианта с кварцом отпишусь попозже, на данный момент не располагаю возможность его приобрести, но идея мне пондравилась!!!

НАРУШЕНИЕ п 2.2
Правила форума 2.2 Запрещается создание нескольких сообщений подряд в одной теме. Если вы хотите что-то добавить к своему, уже написанному сообщению, воспользуйтесь кнопкой "Правка".
Последний раз редактировалось AlekseyEnergo Пн ноя 25, 2013 13:45:35, всего редактировалось 1 раз.
Причина: .
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

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

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

Запрет прерывания я использовал в программном коде, выше кстати выложен проект. Даже если бы он ушел в прерывание без опроса датчика, тогда на индмкации должны выводиться нули? Но этого же не происходит на дисплее ничего не происходит.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

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
Только не понимаю смысл его в этом месте.
Складывается впечатление , что я прошу совета.
VITRIX1983
Родился
Сообщения: 12
Зарегистрирован: Вс ноя 24, 2013 15:00:09

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

в эти регистры заносятся данные для индикации, после конвертирования бинарного числа замеров температуры в двоично десятичный код, поэтому можно себе представить как будут высвечиваться данные, если прерывание произойдет во время копирования данных. По моим подсчетам прерывание составляет не менее 1мс (симулировал в mplab).
Да я забыл сказать что использовал материалы с сайта http://www.rlocman.ru/shem/schematics.html?di=92581, единствено что изменил в коде - это работа с индикацией(так как я не использовал транзисторные ключи) и подчистил данные связанные с выводом десятичного значения температуры. Но пока я не вижу ясного ответа на свои вопросы?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: термометр на pic16f628a и ds18b20

Сообщение Аlex »

Вот ещё проект под Вашу схему, там использован внутренний осцилятор, попробуйте его залить в свой МК для проверки железа. Архив с примером в конце сообщения.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

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

Re: термометр на pic16f628a и ds18b20

Сообщение VITRIX1983 »

Cлучайно наткнулся на статью В. Тимофеева "как правильно оформлять программы на ассемблере для pic - контролеров" . Мне пришлось перелопатить код, изменил подпрограмму вывода данных на индикацию, убрал из прерывания таблицу констант вывода данных на дисплей и поместил ее в другом блоке программ. Все отлично работает. Тут проблема вероятнее всего была спрятана в счетчике команд. Правда прошивка в протеусе не работает, в железе наоборот. я прилагаю исправный код на асме может кому-нибудь это пригодится, там есть готовые функции работы с датчиком ds18b20 и 3х значным семисигментником от прерывния по TMR0.
Otset я смотрю на эти скрины и не могу понять, что ты хочешь мне показать, если хочешь показать время срабатывания прерывания от таймера зайди в начало обработчика прерывания и поставь point запусти проект и посмотри на stopwatch и ты увидешь время в 3 мс, в принципе можещь сам посчитать, коэффициент предделителя tmr0 равен 32, время цикала 1 мкс, в таймер загружается число 160, отсюда следует время прерывания = 1мкс х 32 х (256 - 160) = 3072мкс. Всем спасибо за помощь. До связи!!!
Вложения
ds18b20.rar
(4.51 КБ) 338 скачиваний
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: термометр на pic16f628a и ds18b20

Сообщение otest »

убрал из прерывания таблицу констант вывода данных на дисплей
Я об этом писал в 1-ом своём сообщении. От тебя кроме возражений ничего не последовало.
я смотрю на эти скрины и не могу понять
Учи матчасть. В плену бъют сильно. :)))
запусти проект и посмотри на stopwatch и ты увидешь время в 3 мс, в принципе можещь сам посчитать
Мне это и на х... не надо. Я тебе выложил скрины.
Ответить

Вернуться в «PIC»