avr-gcc ds18b20 не находит

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Резистор на 4.7кОм. Но питание не паразитное. Подключено на макетке к линии питания просто и ясно все. 4.7 кОм в таком случае по инструкции.
Реклама
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Я наверное в бронепоезде, не то, что в танке. Но подрубить этот долбанный датчик так и не смог. Даже несколько купил, на всякий случай. Вот код сброса:

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

        DDRC |= _BV(PC0);//1
	PORTC &= ~_BV(PC0);//0
	_delay_ms(0.488);
	DDRC &= ~_BV(PC0);//0
	_delay_ms(0.72);
	if (!(PINC & _BV(PC0))) {
		_delay_ms(0.424);//завершение таймслота
		return 1;//Есть 
	} else {
		_delay_ms(0.424);
		return 0;//Нету
	}
Вопрос. Ранее я часто видел
_delay_ms(480) и подобные конструкции. Датчик с такими задержками определялся раз в тысячу лет...то есть вообще ниогда, остальное наводки судя по всему. Недавно на немецких сайтах (я уже и на китайских попасся, задрало уже, скоро выкину эту дрянь и заменю на термопару!) нашел такое _delay_ms(0.480) или даже delay_us(480) делают сами функции, так как там задержки не в миллисекундах (ms), а микросекундах (us).

Где правда? В русских доках и кодах везде миллисекунды (ms) и вообще ничерта у меня не работает, никак, никогда, ни при каких вариантах примерах либах и положении луны! В немецких и некоторых других кодах микросекунды и работает отлично...определяется датчик, но температуру я считать так и не смог...сил уже нет возится.
Разъясните. И еще...я очень устал искать по настоящему работающий прямо сейчас на железе и простой (что бы видно было как команды на порты подавать) код, не зависящий ни от каких сторонних либ (у меня avr-gcc и там нету ds1820.h OneWire.h и прочих готовостей). Киньте в приложении к посту, правда больше сил нет искать, помогите.
Заранее спасибо.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: avr-gcc ds18b20 не находит

Сообщение oleg110592 »

1w.zip
(2.46 КБ) 162 скачивания
Вот код, где-то содрал (спасибо автору), переношу из проекта в проект - все работает. Для ИАР, но там легко названия портов изменить.
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Там то же везде delay_us!!! Мать перемать, дрова в смятку! Там микросекунды на обмен!!!!!!!
Вот почему во всем коде, что я видел везде так все через жопу работает и куча вопросов "у меня не пашет" и тем куча, а код что пашет сделан итерациями!!!! Я три недели трахал свой мозг через угол. Неужели в документации!!! Ошибки, или может быть просто устарели данные и датчики теперь в микросекундах работают? Не понимаю.

Но микросекунда гараздо логичнее...один сеанс связи по 1вире, длинной в секунду, для восмимегагерцового МК это дикость.
Большое спасибо, буду проверять.

Для конвертации iar2gcc есть заголовок. В приложении к посту.
Вложения
iar2gcc.h
(6.98 КБ) 315 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: avr-gcc ds18b20 не находит

Сообщение oleg110592 »

Насколько помню, по документации, время преобразования датчика составляет 750ms. В вышеприведенном коде посылается команда SKIP_ROM, затем команда CONVERT_TEMP, затем ждем 1 секунду - данные точно готовы - можно считывать. Когда-то давно для PIC микроконтроллеров писал сам по документации и примерам (там вроде было для 51 микроконтроллеров) тоже все прекрасно работало.
Могут быть проблемы если в микроконтроллере используются прерывания (например для динамической индикации) - программные задержки не выдерживаются. В таком случае работу с датчиком надо производить между прерываниями или запрещать прерывания, что может сказаться но работе индикатора. Еще недавно использовал этот код в Кодевижене - так он так все заоптимизировал, что датчик не работал. Пришлось поставить перед куском кода #pragma optsize- и в конце #pragma optsize+, только тогда все нормально заработало.
Реклама
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Вожусь. Я нашел еще кучу кода и везде используется _delay_us
Само преобразование длится 750 ms но вот тайминги в таймслотах это именно us, а
в тех либах, что я мучил...и они не работали было и тут ms.
Вот в чем была причина судя по всему. Еще проверить надо.

Вот монументальный труд на тему:
http://www.siwawi.arubi.uni-kl.de/avr_p ... index.html

Судя по всему причину я нашел. Вот, например код сброса правильный:

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

OW_OUT_LOW();
	OW_DIR_OUT();            // pull OW-Pin low for 480us
	_delay_us(480);
А вот так будет неправильно и как обычно (в куче мест именно так!) делают, более того, если в даташит глянуть, там тайминги то же в ms.

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

OW_OUT_LOW();
	OW_DIR_OUT();            // pull OW-Pin low for 480us
	_delay_ms(480);
Наконец то свет в конце колодца.
Реклама
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Так я еще и не знал устройства свой макетной платы! Это моя первая схема :)
Оказывается линии питания у нее разделены на две части. То есть две длинные полосы порезанные на пополам.
Часть контактов я повесил на одно "питание", где питания не было, а часть на другое.
Все это работало только за счет того, что ток с портов МК тек на "второе питание"...я их все по умолчанию в 1
выставил. В общем все это вообще работать не должно было :)
Но теперь надо будет проверить как оно будет в нормальном виде пахать...или не пахать.
Нашел я это, разобрав макетную плату...никакой инструкции с ней не было.
Собрал и теперь снова схему соберу и проверю.
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Проверил. Все работает. Все дело было в макетной плате, устройство которой я не знал.
Там было на коробке нарисовано, две линии питания, а на самом деле их там четыре :)
Градусы показывает и с нужной точностью, все адекватно и правильно.

Пока разбирался, я столько всего просмотрел и прочел, что это оказалось очень полезно :)
Осталось собрать все в железе и повесить на стенку.
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: avr-gcc ds18b20 не находит

Сообщение 3DRaven »

Собрал. Работает.
Исходный проект: http://radiokot.ru/lab/controller/18/
Многое переделал. Моя схема проще в десять раз.
Программа то же...правда показывает только целые градусы...мне больше не надо.
Вложения
termoind-x.pdf
Это разводка.
(13.25 КБ) 220 скачиваний
main.c
Это код программы.
(7.45 КБ) 352 скачивания
termoind.ps
Это принципиальная схема. Примерно так все.
(128.17 КБ) 334 скачивания
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»