Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: термометр на attiny 2313
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
skyliver
Собрал термометр, скачал прошивку для контроллера, но прошивка была для датчика ds18s20, а у меня в наличии оказался ds18b20 соответственно датчики различаются. прошу помочь и отредактировать прошивку для контроллера, чтобы правильно отображалась температура датчика. файлы приложил
kovigor
Цитата(skyliver @ Dec 14 2012, 16:28) *
файлы приложил

Там дизассемблированный исходник. Разбираться в нем - себе дороже. Закажите датчик или перепишите программу заново на Си ...
Dust112
skyliver
На каком индикаторе сделан, LCD или LED? В инете полно таких поделок.
skyliver
Цитата(Dust112 @ Dec 14 2012, 18:45) *
skyliver
На каком индикаторе сделан, LCD или LED? В инете полно таких поделок.

на led 2х16. kovigor правильно сказал, либо датчик найти либо на Си писать. С Си у меня проблемы и с поиском датчиков тоже. Если в инете заказать, то один куплю как за 2. Поэтому надо как то разбираться с Си. А это очень будет долго. Примеры в инете смотрел, но там большинство под LED сделано.
bob1
Цитата(skyliver @ Dec 15 2012, 07:16) *
Примеры в инете смотрел, но там большинство под LED сделано.

Вот не по LED.
Dust112
skyliver, если под напрячься, то можно и осилить С.
RabidRabbit
Цитата(kovigor @ Dec 14 2012, 17:56) *
Там дизассемблированный исходник. Разбираться в нем - себе дороже.

Всё было бы не так страшно, приложи TC схему устройства sm.gif Или хотя бы куда термометр подцеплен sm.gif

MaxiMuz
Цитата(Dust112 @ Dec 15 2012, 09:44) *
skyliver, если под напрячься, то можно и осилить С.

если нет сопутствующих готовых библиотек , то проще тогда освоить ассемблер чем Си , имхо

да, если была бы схема устройства и желательно подробное различие датчиков и схематическое и по управлению, то можно былоб и попробывать чтото сделать
Dust112
MaxiMuz, тут готов поспорить. Сам не так давно засел за С, раньше писал на asme. При наличии инета, где масса исходников, и при желании, можно осилить.
skyliver
Цитата(RabidRabbit @ Dec 15 2012, 10:42) *
Всё было бы не так страшно, приложи TC схему устройства sm.gif Или хотя бы куда термометр подцеплен sm.gif

вот схема подключения устройства

RabidRabbit
Можно тупо поробовать заменить в строках 405 и 456
ldi r28,k09
на
ldi r28,k0C
skyliver
короче у меня теперь вот 2 датчика. один ds1820, второй ds18b20. От первого показывает нормальную температуру, от второго врет. надо что то поменять в исходнике. оказывается я забыл убрать на программаторе галочку ckdiv8 для работы от внутреннего генератора. жду помощи. может кто поможет, а может и я сам догадаюсь.

Цитата(RabidRabbit @ Dec 15 2012, 16:48) *
Можно тупо поробовать заменить в строках 405 и 456
ldi r28,k09
на
ldi r28,k0C

а где в коде берется снятие данных с первого и второго датчиков и их обработка?
ILYAUL
Там где на пины выставляется 0x00 , затем следует переход на подпрограмму задержки от 480-500 мкс, затем выставляется 1 и в течении техже 480-500мкс опрашивается состояние пинов и если обнаружен ноль , программа выполняет действия согласно DS на датчики.

Цитата
...и при желании, можно осилить.
А зачем?
Цитата
При наличии инета, где масса исходников....
skyliver
В итоге вот что получилось
ASZ
Цитата(skyliver @ Dec 15 2012, 04:16) *
С Си у меня проблемы и с поиском датчиков тоже. Поэтому надо как то разбираться с Си. А это очень будет долго. Примеры в инете смотрел, но там большинство под LED сделано.

Освоение азов С - максимум неделя.
Зато потом не будет проблем с созданием уже своих проектов.
ARV
Код
  uint8_t        scrp[9]; // в этот массив вы получили 9 байтов (вместе с CRC) из вашего датчика
        int16_t*    temp = (void*)scrp;
        if(scrp[4] & 0x80){ // вот так определяется тип датчика
              // DS18S20, DS1820
               result = (*temp) * 50L - 25 * (scrp[7] - scrp[6]) / scrp[7];
        } else {
               // DS18B20, DS1822
               result = ((*temp) * 100L) / 16;
        }


вот кусочек из моей функции с участком, выдающим температуру в СОТЫХ ДОЛЯХ градуса в виде целого числа. т.е. если температура 21,5 градус, то в result запишется 2150. этому коду ВСЕ РАВНО, из какого датчика получены 9 байт - из DS1820, DS18S20, DS18B20 или DS1822- результат все равно будет правильный. главное, считать в массив scrp 9 байт и проверить достоверность этих данных путем подсчета CRC.

bb-offtopic.gif P.S. уважаемые администраторы! сделайте что-нибудь с тегом code - задолбался форматировать! при предварительном просмотре вылезают html-теги параграфов, табуляции отрабатываются не пойми как, в общем, очень неудобно! есть же нормальные плагины для форума с автоматической расцветкой кода, автоматическим форматированием и т.п. удобствами!



ILYAUL
Цитата(skyliver @ Dec 16 2012, 08:13) *
В итоге вот что получилось

Вот интересно , нам Вы DS микросхем выложили , а сами в них хоть одним глазом заглянули. Думаю , что нет. Иначе этого поста бы не было. Вот Вам информация для размышлений
chu
Датчики ds18s20 и ds18b20 различаются форматом регистра температуры (TEMPERATURE REGISTER)
см. рисунок 2 на 4 стр. и в том и в другом даташите.
skyliver
Цитата(chu @ Dec 17 2012, 07:21) *
Датчики ds18s20 и ds18b20 различаются форматом регистра температуры (TEMPERATURE REGISTER)
см. рисунок 2 на 4 стр. и в том и в другом даташите.

конечно смотрел. Поэтому и выложил 2 файла даташит, чтобы помогли с самой прошивкой для датчиков.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.