| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
PIC + DS18B20: Крик о помощи
18.10.2010, 12:54
|
#21
|
|
Частый гость
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Для тестировани общения МК с датчиком полезно нарисовать общую диаграмму, совместив то, что есть в даташит для
-Rst
-присутствия DS18B20
-отправки байта (хотя бы пару бит)
-получения байта (-"-)
линиями разной толщины, а лучше в цвете:
где линией управляет МК, где подтягивающий резистор, где DS18
в соответствии с этим надписать состояния портов
- порт направления передачи данных
- порт состояния линий
для RST, например, PORTx=0(установить 0 на линии) DDRx=1 (передача из МК)
для 1мкс паузы между передачей бит PORTx=0 DDRx=0(прием в МК)
иногда при приеме байта пытаются читать PORTx вместо PINx (PORT,PIN,DDR - для МК AVR)
возможно несоответствие временных интервалов - например, при считывании из DS18
внимательно посмотрите, в каком временном интервале DS18 удерживает информацию при передаче своих данных в МК
Удачи!
Последний раз редактировалось bvn123; 18.10.2010 в 14:36.
|
|
|
|
18.10.2010, 14:33
|
#22
|
|
Частый гость
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Неплохо начать со считывания 64-битного кода DS18B20 - из 8 байт 1 неизменяемый (28h) и при считывании тестируются все программные функции, необходимые для обращения к датчику - сброс, присутствие, запись в DS, считывание из DS, можно проверить и организацию вычисления CRC
|
|
|
|
18.10.2010, 21:29
|
#23
|
|
Гражданин KAZUS.RUN
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Сообщение от bvn123
|
|
внимательно посмотрите, в каком временном интервале DS18 удерживает информацию при передаче своих данных в МК
|
Спасибо за участвие!
Выше вспоминалось: передерживал процессор "0", потому ответ датчика не слышался.
Исходник написан под другой кварц (так ли?), но с длительностями пришлось поиграться, правда на уровне эммулятора победил. В железе это проявлялось как кратковременное погасание индикатора, где- раз в секунду. Подозреваю, что не правильно читались данные, соотв не совпадение срс и повтор. В программе на этом месте запрет прерываний а на них индикация.
После отладки в "Протеус"е, в железе всё подтвердилось: работает без "подмаргиваний".
Сообщение от bvn123
|
линиями разной толщины, а лучше в цвете:
где линией управляет МК, где подтягивающий резистор, где DS18
в соответствии с этим надписать состояния портов
- порт направления передачи данных
- порт состояния линий
|
Это бы разживать попрошу, можно в картинках, потому как "согласую" в голове, на бумаге, думаю, было бы нагляднее... Из картинок только "Компьютерный термометр на основе DS18S20" , вот тут там и картинки есть доходчивые...как по мне.
И вопрос по ходу: обязательно ли проверять срс?
Достаточно ли "ресет - конверт - чтение"?
Всегда ли нужно читать все 8 (9) байт, или можно TL, TH обойтись?
|
|
|
|
19.10.2010, 20:00
|
#24
|
|
Гражданин KAZUS.RUN
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Вот такая программа: листинг как бы работает.
А вот в этой программе хотелось сделать индикацию по второму прерыванию, как бы "поправильному" работает только в "Протеусе", с красивыми интервалами. В железе - нет!
На выводах анодов индикатора короткие импульсы, очень короткие. Если накрыться одеялом, видна информация.
Пробовал отключать сторожевик, рессет ножку перезадавал как порт и наоборот, пробовал по всякому. Никак. 
Визуально - интервал между обращениями к датчику температуры похож на график эмулятора Протеуса. Вот только вместо 4 импульсов равной длинны - короткие "пычки". ХЕЛП!
Картинка с Протеуса
к сожалению осцилограммы не сфотографировал.
|
|
|
|
19.10.2010, 20:01
|
#25
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Сообщение от rusyvochka
|
|
Только помнить надо, что не все выводы пика равноценные: на некоторые "общий анод" не повесишь
|
Ничего не перепутал ? Там вообще то Open drain...
__________________
Осторожно , злой кот
|
|
|
|
19.10.2010, 20:05
|
#26
|
|
Гражданин KAZUS.RUN
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Сообщение от dosikus
|
|
Там вообще то Open drain..
|
там - где?
|
|
|
|
19.10.2010, 20:11
|
#27
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
rusyvochka, RA4 open drain , с общим анодом подключишь сегмент к нему.
__________________
Осторожно , злой кот
|
|
|
|
19.10.2010, 20:25
|
#28
|
|
Гражданин KAZUS.RUN
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
Тысяча извинений: откуда на аноде "+" возьмётся без подпорки, RA4 если
Катод сегмента - да, анод - не получится.
Видать я так рассуждал не доходчиво:
цитата:
К стати рекомендую писать программы после разводки платы!!!
Хотя бы старт.
Т.е. - через задницу, иногда ОЧЕНЬ! помогает.
Только помнить надо, что не все выводы пика равноценные: на некоторые "общий анод" не повесишь - нет там ключа на Vcc (RA4 для 16f628 ), а так иногда хочется.
кц.
именно АНОД не повесиш.
Забыли. Это не суть. Чего по существу есть?
|
|
|
|
19.10.2010, 20:35
|
#29
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
rusyvochka, Конечно это может выглядеть как извращение , но если жалко применять контроллер с большим числом выводов , как вариант.Можно RA4 рассматривать не как часть PORTA , а как одиночный вывод . И заменить им любой вывод PORTB.
Объединить их в структуры .
__________________
Осторожно , злой кот
|
|
|
|
20.10.2010, 13:01
|
#30
|
|
Частый гость
Регистрация: 16.11.2005
Сообщений: 46
Сказал спасибо: 0
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: PIC + DS18B20: Крик о помощи
в имеющемся у меня 20-страничном даташите на DS18B20 (первая страница помечена "050102")
на стр. 13 и 14 есть временные диаграммы Initialization timing и Read/Write Time Slot Diagram
Там цветом (серым/черным) и толщиной линий указано, когда что удерживает инфу на линии
Полезно эти диаграммы свести вместе, часть Read/Write расширить хотя бы до передачи пары бит (а лучше байт), вместо черного/серого/толстого/тонкого разрисовать в цвете,
потом в зависимости от цвета надписать, в каком состоянии должны быть порты,
это поможет контролировать соответствие времени-состояния портов в отладчике
Проще сделать программу, где после отправки, например, команды начала преобразования вставить задержку на 750мс, организованную на циклическом опросе флага таймера (не переполнился ли таймер) или запускать вложенные циклы, в данном случае на 750мс,
и аналогично организуемые задержки вставлять после передачи/приема каждого бита,
но в смысле пристегивания отлаженного программного блока к другим задачам лучше будет полная организация программы с размещением всех команд, считыванием, задержками в обработчике прерывания одного таймера
тогда задержки для DS18 не будут влиять, например, на динамическую индикацию, организованную на том же МК
Последний раз редактировалось bvn123; 20.10.2010 в 16:07.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:39.
|
|