Страница 1 из 1

термометр на pic16f876 и DS18B20

Добавлено: Вт фев 09, 2016 21:02:08
MORE400
доброго времени суток Попытался написать программу термометра ( в написании программ не шибко силен) где ошибка не могу понять Смоделировал схему в протеусе По идее в регистрах T_L и T_H должен лежать результат преобразования температуры а по факту находятся числа 255 и в T_L и T_H Вот фрагмент прграммы
DS18B20.txt
(3.75 КБ) 263 скачивания

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 11:22:16
Аlex
MORE400 писал(а):Смоделировал схему в протеусе
Ну дак включите в нём пошаговуюю отладку, подцепите осциллограф, погуляйте по коду в отладке. И всё выяснится, где ошиблись.

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 11:49:49
otest
Выложи весь проект.

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 18:26:20
MORE400
проект в MPLAB

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 19:14:04
otest
Ну а где схема , протеус ? Партизан ?
#define PORTDAL PORTB,0 ; регистр данных порта ДАЛЛАСА
#define LINE PORTB,0 ; линия порта ДАЛЛАСА
#define DALLAS PORTB,0 ; шина связи с ДАЛЛАСОМ
Это как надо понимать ? Три функции у одного пина ?
--------------------------------
_LINE_0 macro
_BANK_1
bcf TRISB,0
_BANK_0
bcf PORTB,0
endm
_LINE_1 macro
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0
endm
Это макросы управления регистром TRISB. они не дают изменения выхода порта.
Поэтому порт ни чего не передаёт
bit_1 ; передачa бита с уровнем "1"
_LINE_0
_LINE_1
call Del_60 ; задержка60мкс.
goto p_b1

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 19:21:21
MORE400
понял исправлю

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:13:37
MORE400
исправил но чтото не то. Новый исходник и файл протеуса

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:19:56
MORE400
файл протеуса

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:24:30
Аlex
"чтото не то" - это что ? Что за фразы такие таинственные ?
У Вас в руках, хоть какое, но средство отладки - протеус. В чём проблема, до сих пор не могу понять ?
Подключили .cof файл и пошагали...

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:26:44
otest
prm_bait_1 _BANK_1
bcf TRISB,0
_BANK_0
bcf PORTB,0 ;_LINE_0 ; Формирование на линии уровня 0.
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0 ;_LINE_1 ; Формирование на линии уровня 1.
=======
Поставь здесь коменты.
Ты что издеваешся?
АСМ отдельно DSN отдельно. Сложи всё в проект .

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:36:17
Аlex

Код: Выделить всё

           btfss STATUS,C      
           goto bit_0            ; передачa 0.
           goto bit_1            ; передачa 1.
ну ну.... :)
Говорю же человеку, уже 3-ий раз, пройдись отладкой, сразу все косяки всплывут. Дак нет, мы упрямимся, файлами нас забрасываем... Ищите мол ошибку за меня...
Хотя подобные ошибки в протезе ищутся на ура. Нужно просто пошагать и посмотреть что творится на линии.

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 22:56:33
dosikus
otest писал(а): Это макросы управления регистром TRISB. они не дают изменения выхода порта.
Поэтому порт ни чего не передает
Собственно 1wire шину так и реализовали - пин с OD, в PORT 0 и дергали TRIS . Что тебя смущает?

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 23:04:40
Аlex
Нормальные макросы были. Проблема не в них. Верните их обратно.
Можно их вообще в один собрать :

Код: Выделить всё

_LINE_ macro val
  banksel TRISB
  bcf TRISB, val        
  banksel PORTB
  bcf PORTB, val       
endm
Использование :

Код: Выделить всё

_LINE_  0  ; В линию 0
_LINE_  1  ; В линию 1
Один из косяков я показал выше, исправляйте.

Re: термометр на pic16f876 и DS18B20

Добавлено: Ср фев 10, 2016 23:40:00
Аlex
Блин, 5 минут - подцепить протеус к МПЛАБу и пошагать.
Спойлер
1.png
(139.3 КБ) 334 скачивания
Изображение
Получил температуру = 85 'C, что не удивительно.
Разбирайтесь...

Re: термометр на pic16f876 и DS18B20

Добавлено: Чт фев 11, 2016 19:05:57
MORE400
я понял в каком направлении копать У меня нет конвертации температуры В далласе лежит температурв 85 и в T_L b T_H по 255 что контроллер и читает Думаю разберусь