Я переписывал библиотеку для DS18b20 из комплекта CVAVR, чтобы уменьшить объём используемой памяти и устранить конфликт библиотеки с включенными прерываниями. В архиве с проектом есть файлы my_ds18b20.h и my_ds18b20.lib. Если они не подхватились компилятором из папки с проектом (что очень странно), их нужно поместить в папки CVAVR: папка/установки/inc и папка/установки/lib соответственно.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Последний раз редактировалось *Trigger* Ср окт 04, 2017 20:55:22, всего редактировалось 1 раз.
Если Вы про AVR Studio, так у меня она вообще не стоит.
RoboC писал(а):
соответственно компилятор на это ругается...
Я не знаю, чью прошивку Вы взяли, в моей оригинальной никакого "case 0:" нет, везде используются дефайны. Также не понятно, почему у функций работы с термодатчиком есть аргумент "0" - у меня его изначально не было, т.к. использовалась опция новой библиотеки для работы с одним датчиком (экономия памяти).
Если бы CVAVR не видел библиотеки, ошибка была бы ещё здесь:
Я не знаю, чью прошивку Вы взяли, в моей оригинальной никакого "case 0:" нет
Да мой косяк, кривые пальцы.
Удалось откомпилировать, объявив в my_ds18b20.h недостающие функции:
Код:
signed int ds18b20_temperature(unsigned char *addr); void ds18b20_start_conv(unsigned char *addr); unsigned char ds18b20_check_conv_end(void); signed int ds18b20_read_temp(unsigned char *addr);
_________________ У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Можно было просто убрать аргумент из функций работы с датчиком (откуда он там вообще появился?). Новая библиотека устроена так: если в настройках проекта есть "#define ONE_DS18b20" (или что-то похожее, не помню), используется версия для одного датчика (функции без аргумента), а если нет - для нескольких датчиков (с аргументом).
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
У Вас неправильно установлена маска для PORTD. Должно быть так:
Код:
PORTD|=0b00000111; PORTD&=0b11111000|(~tmp);
PD6 не используется для индикации, не нужно туда ничего записывать.
Далее, в прерывании по совпадению нужно записать лог. 1 во все биты, к которым подключены сеточные ключи. То есть так:
Код:
PORTB|=0b01000111; PORTD|=0b11111000;
Ну и, наконец, приоритет операции сравнения выше, чем операции "побитовое И". Поэтому эта строка:
Код:
if(tmp&(1<<6)!= 0) PORTC.5=0;
с точки зрения компилятора выглядит так:
Код:
if(tmp&((1<<6)!= 0)) PORTC.5=0;
Ну а 1<<6 всегда не равно 0, поэтому тут просто написано
Код:
if(tmp&1) PORTC.5=0;
Это явно не то, чего мы хотим. Вероятно, дело именно в этих приоритетах. Нужно написать так:
Код:
if(tmp&(1<<6)) PORTC.5=0; else PORTC.5=1;
или так:
Код:
if((tmp&(1<<6))!=0) PORTC.5=0; else PORTC.5=1;
P.S. Восьмого Протеуса не имею, попробовал - не понравилось. Да и на Win XP не работает. Так что открыть Ваши файлы не смог. Я выкладывал свой проект Протеуса, правда, давно: viewtopic.php?p=2924327#p2924327
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Последний раз редактировалось *Trigger* Пн окт 09, 2017 21:42:24, всего редактировалось 2 раз(а).
Заголовок сообщения: Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Добавлено: Вт окт 10, 2017 12:58:30
Первый раз сказал Мяу!
Зарегистрирован: Пн май 06, 2013 16:11:59 Сообщений: 32
Рейтинг сообщения:0
Никак не могу добраться до того, чтобы в уже готовую плату лампу впаять. А, самая главная проблема, у нас пищалку диаметром 9мм найти нереально. Купил с Чипидипа HC0903A(другой не было), а, как оказалось, она без генератора . Теперь, если заказывать с китая, опять месяц ждать. Из этого я вижу два возможных выхода: 1) В ds3231 есть выход sqw, с которого можно получить меандр частотой 4кГц, но у пищалки резонансная 3,2кГц. Будет ли она хоть как-то звучать, если задействовать этот выход? 2) В оригинальной прошивке *Trigger*-а ведь не используется таймер OC1? Один из его выводов ведь можно заставить шимить на нужной частоте, а управлять включением и отключением выхода(т.е. почти без потерь производительности). Если да, то можно попросить Grey1975 выложить исходник версии с ds3231, с миганием разделителей в 0.5с? Нужно перекинуть сегмент Е на вывод пищалки, ну и запустить таймер на нужную частоту. Перемычки на плате погоды не сделают(их всё равно не видно), всё равно нужно будет разместить 2 диода, чтобы подавить напряжение до 3.3В.
Кстати, по ссылкам из темы наконец-то приехали транзисторы и кольца. Транзисторы с маркировкой 14, но в магазине этого товара больше нет. Кольца с внутренним диаметром 21.85мм, платы, вроде, помещаются.
Последний раз редактировалось jmaster Вт окт 10, 2017 13:08:42, всего редактировалось 1 раз.
Заголовок сообщения: Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Добавлено: Вт окт 10, 2017 13:14:50
Первый раз сказал Мяу!
Зарегистрирован: Пн май 06, 2013 16:11:59 Сообщений: 32
Рейтинг сообщения:0
О, спасибо! Так и сделаю. А в прошивке выход на 4кГц активирован?
Добавлено after 4 minutes 43 seconds: Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе ИВ-21 А что нужно изменить для работы ds3231 в оригинальной прошивке? Вы писали, что прошивки дла ds3231 в so8 и большом корпусе несовместимы
Заголовок сообщения: Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Добавлено: Вт окт 10, 2017 13:58:44
Первый раз сказал Мяу!
Зарегистрирован: Пн май 06, 2013 16:11:59 Сообщений: 32
Рейтинг сообщения:0
Впихнул пищалку, выкусив три неиспользуемых выхода индикатора, выкусив её собственные штырьки и припаяв более длинные так, чтобы провернуть до окна. Вот как-то так получается. Лампу ещё не впаивал Мне даже платы вырезать пока некогда
Заголовок сообщения: Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Добавлено: Вт окт 10, 2017 21:08:21
Первый раз сказал Мяу!
Зарегистрирован: Пн май 06, 2013 16:11:59 Сообщений: 32
Рейтинг сообщения:0
Можно было, но выводы-то всё равно не нужны , да и излучатель направлен "к зрителю" (если будет громко проще заклеить ).
Лазеров на колпачки у меня не нашлось, но есть вариант использовать разъём тюльпана такого типа (у меня жёлтый валялся):
вычистив из него средний контакт и часть пластика. Крепить можно его же гайкой, спилив лишнюю резьбу, а можно и приклеить, спилив резьбу полностью. Всё равно такие разъёмы у меня быстро разбивались и переставали работать, а так хоть какое-то применение Правда придётся плату с преобразователем ставить в наружной части кольца, а датчик температуры ставить на плату основания(В любом случае там он мне больше нравится ). На датчик, кстати, тоже можно такой "колпачок" надеть, но уже точно на клей
Попробовал кольца просверлить - сверлятся без проблем, но для начального сверления нужно хорошо заточенное сверло, желательно около 2мм, затем уже рассверливать тем, чем надо. Перед сверлением обязательно кернить. В качестве опоры в кольцо подошёл кусок 20 пвх трубы.
определения для DS18b20_FUNC_PARAM и DS18b20_FUNC_PARAM1 я не нашел. Логично что: DS18b20_FUNC_PARAM - unsigned char *addr DS18b20_FUNC_PARAM1 - unsigned char *addr, Но в зависимости от кол-ва датчиков одна и та же функция может вызываться с параметром и без. Это какие то стандартные определения для CV?
UPD
Правильный файлик MY_DS18B20.h найден в версии 1.14, несколькими страницами позже. Похоже, что он у вас лежит в папочке INC и не попал в архив с исходником 1.13 1.14 компилируется нормально..
Вопрос снимается.
_________________ У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения