Термометр 16F676 DA18B20 LCD до десятых - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Термометр 16F676 DA18B20 LCD до десятых
Термометр 16F676 DA18B20 LCD до десятых
skiip Дата: Пт, 27.11.2015, 14:29  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

Переписал программуна PIC16F676 с использованием датчика DS18B20,
точность до после запятой на дисплее. Данный проект, на железе непроверен. Пока
перевел с PIC16F84 на PIC16F676
(480 слов) всю память забить позволяет.
Далее дам программу
на 2 (два) датчика подключенных параллельно, используя один порт. На ф84 есть и
работает в железе. Даже на 4 датчика есть. Но тут надо как то программно решить
об проверке ID датчика. Я просто
использую чтение ID
каждого датчика, и в память. Потом читаем память датчика и посылаем ID на шину, они (датчики) сами узнают, кого
опрашиваем. В общем, результат на дисплее 4 датчика с использованием одной шины
(PORTA.0) допустим.
Почему я спросил
программно решить чтение ID
датчика. Ведь можно … нет . Мы же не знаем ID датчика того указанного (дом, подвал, гараж,
улица). Значит моё решение ну как то оптимально.

 Но вот беда. На LED дисплее не могу задействовать порты RA3, RA4, RA5 что бы посадить датчик. Помогите пожалуйста разобраться. Архив 676 LED
Прикрепления: 676_LCD.7z(15Kb) · 16F84_2.7z(16Kb) · 676_LED.7z(15Kb)
ЯНДЕКС Дата: 27.11.2015
Gysmi Дата: Пт, 27.11.2015, 20:10  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 47
Репутация: 0   ±
Замечания:   ±
На сайте с 23.12.2011

Статус: Offline

Выводы портов RA3 RA4,RA5 инициализируй как цифровые входы-они у тебя сначала работают как аналоговые!
skiip Дата: Сб, 28.11.2015, 05:13  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

Gysmi, приветствую Вас. Но позвольте обратить ваше внимание на начало программы
 ANSEL = %00000000 'Сделать все порты цифровыми
TRISA   =  %00011000 ' RA3 RA4
 в какой строке у меня ошибка?. RA5 работает

Добавлено (28.11.2015, 05:13)
---------------------------------------------
CMCON = 7              ' компаратор выключен %00000111
 ANSEL = %00000000 'Сделать все порты цифровыми
TRISA   =  %00111000 ' RA3, RA4, RA5 'вход
Pin var PORTA.5 ' Подключить DS18B20 к выводу PORTA.5
И RA5 работает


skiip
Gysmi Дата: Сб, 28.11.2015, 06:48  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 47
Репутация: 0   ±
Замечания:   ±
На сайте с 23.12.2011

Статус: Offline

skiip , вы используете внутренний генератор?
Посмотрите регистр 9-1 СONFIG.
MCLR установить как цифровой вход-выход(бит5)
опции генератора-биты(0-2)
skiip Дата: Сб, 28.11.2015, 08:10  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

Да, цель задумки использовать внутренний генератор. как прописать конфигурацию
bit 5 MCLRE:
RA3/MCLR pin function select(5)1 = RA3/MCLR pin function is MCLR
0 = RA3/MCLR pin function is digital I/O, MCLR internally tied to VDD

FOSC2:FOSC0: Oscillator Selection bits
101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
100 = INTOSC oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN


skiip
Gysmi Дата: Сб, 28.11.2015, 09:51  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 47
Репутация: 0   ±
Замечания:   ±
На сайте с 23.12.2011

Статус: Offline

Посмотрите на форуме есть как установить конфигурацию процессора. Там 14 битов.
Пример:@ device pic12F675, intrc_osc_noclkout, wdt_on, PWRT_ON,mclr_off, protect_off
skiip Дата: Вс, 29.11.2015, 05:32  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

Gysmi, благодарю! и VitalForce (http://forum.vip-cxema.org/index.php?/topic/833-oshibka-kompiliatcii/#j_content),натолкнул на мысль покопаться в файле 16F628A.INC. в нём нашел подсказки по
командам. Вот только не пойму, зачем я это написал INTOSC, его заменил на INTOSCIO
и заработал RA4, но и удалил эту
команду с конфигурации – все ровно работает. Зачем она нужна? И не пойму
DEFINE OSCCAL_1K
1'            ' частота внутреннего
генератора 4 МГц
Это как? Может без
этих команд в железе работать не будет?
Из даташита
bit 7-2 CAL5:CAL0: 6-bit Signed Oscillator Calibration bits
111111 = Maximum
frequency
100000 = Center
frequency
000000 = Minimum
frequency
Что это? Максимальная
частота генератора – зачем? Если мне надо 4 МГц.
Может в железе без
этих команд работать не будет?
Пробовал с RA3 (он же только вход) выдает белиберТу.
 
Я думаю, на нашем
сайте родился проект «Термометр на PIC16F6… с датчиком DALAS DS18B20,
DS1821, и подобные шине 1-Wire-net.
В чем ставилась
задача. Я использовал PIC16F84 но на нём много навесного (генератор) кварц,
конденсаторы. Контроллер 16F676
– генератор внутри программный. Меньше деталей -  габарит. Я хочу и буду работать пока с этим
контроллером. Дешевле, проще, гибкий (аналог-цифра) вход.
А блокировку на
машину хочу переделать с PIC16F84 на 12F.. вроде 675. Тоже внутри программный (я
использую только 1-Wire-net и выход на реле).
И так от себя, писал программу на «си» и использовал MPLAB ide. Для меня показалась – не
комфортно. Обращение к памяти надо переходить с банка в банк. Да есть плюс, мы
работаем с битом. В PicBasic
просто командой записываю число в указанную ячейку. А с задержкой времени
только одно слово (PAUSe us).
Почему ушел с MPLAB,
программа при компиляции на PIC16F84
не влазила в контроллер при написании с дисплеем LCD.


skiip
Gysmi Дата: Вс, 29.11.2015, 07:27  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 47
Репутация: 0   ±
Замечания:   ±
На сайте с 23.12.2011

Статус: Offline

skiip, добрый день!
PIC16f676 хорошо подходит для вольтметров(10разрядный ацп)
Внутренний генератор на 4 мгц использует КАЛИБРОВОЧНУЮ константу ,расположенную в последней ячейке памяти программ-посмотрите и запишите.(типа 3843).Она точно расчитана на заводе для 4 мгц.Для каждого контроллера она своя!
Я ее в первый раз стёр на самодельном программаторе!) Ладно догадался записать как советовали где-то.

Сообщение отредактировал Gysmi - Вс, 29.11.2015, 07:29
skiip Дата: Сб, 02.01.2016, 09:47  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

Что то ковыряю и понять не могу. Вот хочу задействовать аналоговый вход AN2. чтот не полусается. использую внутренний генератор. Поправте где ошибка что бы заработал AN2 как аналоговый вход.
 @ device pic16F676, WDT_OFF, MCLR_OFF', INTOSC
   DEFINE  ADC_OSC 4           ' частота внутреннего генератора 4 МГц
   DEFINE  ADC_BITS 10         ' количество разрядов в результате АЦП
   DEFINE  ADC_CLOCK 3         ' источник синхронизации АЦП (rc=3)
   DEFINE  ADC_SAMPLEUS 50     ' время выборки АЦП преобразования 50мкс

   ADCON0 = %10001011     '  канал 02 (AN2)
   CMCON = 7         
   ANSEL = %00000100      '   AN2 аналог вход
   TRISA = %00000100      ' вывод PORTA.2 на вход

Добавлено (02.01.2016, 09:47)
---------------------------------------------
Дня доброго (кому вечера) уважаемые люди. Благодаря вашейпомощи, я ну хоть как то разобрался с пиком 16F676. Вот беда. Печатную плату не
хочется переделывать. Да и в данном пике мало портов. И это не проблема. Просто
точку можно аннулировать, а порты в печатке хорошо легли. Порт AN3 (RA4), расположен неудобно по дорожкам
печатки и программе. Методом проб и ошибок ни как не могу задействовать AN2 (RA2). В архиве не обращайте внимания,
что первый разряд отключил. Просто проверяю работу порта. Архив «исходник –
мерит, AN2- что то
пытаюсь изменить на работу данного порта». Генератор внутри программный. В
архив выложил печатку (от того термометра). На базе ней решаю вопрос с
дальнейшей переделкой.


skiip
skiip Дата: Сб, 02.01.2016, 11:53  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 26
Репутация: 0   ±
Замечания:   ±
На сайте с 24.12.2008

Статус: Offline

чот не понял а где файл
Прикрепления: 2074521.7z(51Kb)


skiip
Форум Picbasic.ru » Программирование МК » PicBasicPro » Термометр 16F676 DA18B20 LCD до десятых
Страница 1 из 11
Поиск: