Миниатюрные часы на вакуумно-люминисцентном индикаторе ИВ-21
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Я переписывал библиотеку для DS18b20 из комплекта CVAVR, чтобы уменьшить объём используемой памяти и устранить конфликт библиотеки с включенными прерываниями. В архиве с проектом есть файлы my_ds18b20.h и my_ds18b20.lib. Если они не подхватились компилятором из папки с проектом (что очень странно), их нужно поместить в папки CVAVR: папка/установки/inc и папка/установки/lib соответственно.
Последний раз редактировалось *Trigger* Ср окт 04, 2017 20:55:22, всего редактировалось 1 раз.
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Это я сделал сразу.
Может это быть связано с тем,то у меня студия стоит не 6я , а 4я?

Не хотелось Вас напрягать, мне то нудно было просто переставить ножки под плату
Хотел все сам.
Так же не понятный момент в
есть
А так же есть
где menu_NULL определено дефайном как 0;
соответственно компилятор на это ругается...
Может это быть связано с тем,то у меня студия стоит не 6я , а 4я?
Не хотелось Вас напрягать, мне то нудно было просто переставить ножки под плату
Так же не понятный момент в
Код: Выделить всё
switch(menu_item){Код: Выделить всё
case 0:
get_date();
disp_date(1);
delay_ms(2000);
while(OK);
menu_item=menu_NULL;
get_time();
disp_time(2);
while(shift);
break;
Код: Выделить всё
case menu_NULL:
....соответственно компилятор на это ругается...
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
RoboC писал(а):студия стоит не 6я , а 4я?
Если Вы про AVR Studio, так у меня она вообще не стоит.
Я не знаю, чью прошивку Вы взяли, в моей оригинальной никакого "case 0:" нет, везде используются дефайны. Также не понятно, почему у функций работы с термодатчиком есть аргумент "0" - у меня его изначально не было, т.к. использовалась опция новой библиотеки для работы с одним датчиком (экономия памяти).RoboC писал(а):соответственно компилятор на это ругается...
Если бы CVAVR не видел библиотеки, ошибка была бы ещё здесь:
Код: Выделить всё
ds18b20_simple_init(DS18B20_12BIT_RES);
ds18b20_start_conv();Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Да мой косяк, кривые пальцы.Я не знаю, чью прошивку Вы взяли, в моей оригинальной никакого "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);У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Можно было просто убрать аргумент из функций работы с датчиком (откуда он там вообще появился?). Новая библиотека устроена так: если в настройках проекта есть "#define ONE_DS18b20" (или что-то похожее, не помню), используется версия для одного датчика (функции без аргумента), а если нет - для нескольких датчиков (с аргументом).
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Изменил массивы под свою разводку, все показывает как нужно окромя сегмента А
У меня он висит на порту PС5.
Как видится, мне нужно проанализировать переменную tmp и включить сегмент
Но что то не работает:(
DAFGE_CB

У меня он висит на порту PС5.
Как видится, мне нужно проанализировать переменную tmp и включить сегмент
Код: Выделить всё
if(tmp&(1<<6)!= 0) PORTC.5=0;
PORTB|=0b10111000;
PORTB&=0b01000111|(~tmp);
PORTD|=0b00000111;
PORTD&=0b11111000|(~tmp);DAFGE_CB
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Во-первых, нужно перевести PC5 на выход (надеюсь, это уже сделано).
Описание алгоритма индикации - здесь (наверное, Вы уже видели этот пост).
Далее, Ваш if может работать только в одну сторону - если хоть раз в PC5 выведется 0, 1 там уже никогда не появится. Нужно добавить else:
Описание алгоритма индикации - здесь (наверное, Вы уже видели этот пост).
Далее, Ваш if может работать только в одну сторону - если хоть раз в PC5 выведется 0, 1 там уже никогда не появится. Нужно добавить else:
Код: Выделить всё
if(tmp&(1<<6)) PORTC.5=0;
else PORTC.5=1;Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Уважаемый, *Trigger*, все-таки нужна Ваша помощь!
Я немного отвлекся, мне попалась бракованная 8ка, не хотела подключатся к программатору
Как только это один из анодов A-F , получается белиберда, вроде такого:

Не могли бы вы подсказать что я сделал не так?
Исходник и файл 8 протеуса прилагаю.
Добавлю, может кому пригодится, протеус для оригинальной прошивки из статьи.
Я немного отвлекся, мне попалась бракованная 8ка, не хотела подключатся к программатору
Он уже в вашей прошивку прописан как выход сразу.*Trigger* писал(а):Во-первых, нужно перевести PC5 на выход (надеюсь, это уже сделано).
Да, сделал как описано, описание рабочее, но пока PC5 является сеткой.Описание алгоритма индикации - здесь (наверное, Вы уже видели этот пост).
Как только это один из анодов A-F , получается белиберда, вроде такого:
Не могли бы вы подсказать что я сделал не так?
Исходник и файл 8 протеуса прилагаю.
Добавлю, может кому пригодится, протеус для оригинальной прошивки из статьи.
- Вложения
-
- trigger_orig.7z
- Протеус 8 для прошивки из статьи
- (150.69 КБ) 240 скачиваний
-
- trigger.7z
- моя исправленная прошивка и протеус для платы.
- (151.53 КБ) 308 скачиваний
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Уважаемый RoboC, а не может быть проблемы в "железе"? У ИВ-18 сегменты A и F по выводам соседние, может там КЗ?
Код, даже не смотрел. Думаю Вы намного лучше меня понимаете в программировании.
Код, даже не смотрел. Думаю Вы намного лучше меня понимаете в программировании.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
2 RoboC
У Вас неправильно установлена маска для PORTD. Должно быть так:
PD6 не используется для индикации, не нужно туда ничего записывать.
Далее, в прерывании по совпадению нужно записать лог. 1 во все биты, к которым подключены сеточные ключи. То есть так:
Ну и, наконец, приоритет операции сравнения выше, чем операции "побитовое И". Поэтому эта строка:
с точки зрения компилятора выглядит так:
Ну а 1<<6 всегда не равно 0, поэтому тут просто написано
Это явно не то, чего мы хотим.
Вероятно, дело именно в этих приоритетах. Нужно написать так:
или так:
P.S. Восьмого Протеуса не имею, попробовал - не понравилось. Да и на Win XP не работает. Так что открыть Ваши файлы не смог. Я выкладывал свой проект Протеуса, правда, давно: http://radiokot.ru/forum/viewtopic.php? ... 7#p2924327
У Вас неправильно установлена маска для PORTD. Должно быть так:
Код: Выделить всё
PORTD|=0b00000111;
PORTD&=0b11111000|(~tmp);Далее, в прерывании по совпадению нужно записать лог. 1 во все биты, к которым подключены сеточные ключи. То есть так:
Код: Выделить всё
PORTB|=0b01000111;
PORTD|=0b11111000;Код: Выделить всё
if(tmp&(1<<6)!= 0) PORTC.5=0; Код: Выделить всё
if(tmp&((1<<6)!= 0)) PORTC.5=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;
Последний раз редактировалось *Trigger* Пн окт 09, 2017 21:42:24, всего редактировалось 2 раза.
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Я использую не ИВ-18.

Вот такой, от кассового аппарата Samsung. Их у меня шт 10
Спс , утром попробую.
Индикация работает как надо. Огромная благодарность Вам!
Вот такой, от кассового аппарата Samsung. Их у меня шт 10
Спс , утром попробую.
Семен Семеныч..Ну и, наконец, приоритет операции сравнения выше, чем операции "побитовое И".
Индикация работает как надо. Огромная благодарность Вам!
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Никак не могу добраться до того, чтобы в уже готовую плату лампу впаять. А, самая главная проблема, у нас пищалку диаметром 9мм найти нереально. Купил с Чипидипа HC0903A(другой не было), а, как оказалось, она без генератора
. Теперь, если заказывать с китая, опять месяц ждать. Из этого я вижу два возможных выхода:
1) В ds3231 есть выход sqw, с которого можно получить меандр частотой 4кГц, но у пищалки резонансная 3,2кГц. Будет ли она хоть как-то звучать, если задействовать этот выход?
2) В оригинальной прошивке *Trigger*-а ведь не используется таймер OC1? Один из его выводов ведь можно заставить шимить на нужной частоте, а управлять включением и отключением выхода(т.е. почти без потерь производительности). Если да, то можно попросить Grey1975 выложить исходник версии с ds3231, с миганием разделителей в 0.5с? Нужно перекинуть сегмент Е на вывод пищалки, ну и запустить таймер на нужную частоту. Перемычки на плате погоды не сделают(их всё равно не видно), всё равно нужно будет разместить 2 диода, чтобы подавить напряжение до 3.3В.
Кстати, по ссылкам из темы наконец-то приехали транзисторы и кольца. Транзисторы с маркировкой 14, но в магазине этого товара больше нет. Кольца с внутренним диаметром 21.85мм, платы, вроде, помещаются.
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: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Я уже использовал DS3231 в качестве генератора в проекте с ИВ-21.

По этой схеме.
С кодом помог тов. *Trigger*
Вот это:
нужно заменить этим:
По этой схеме.
С кодом помог тов. *Trigger*
Вот это:
Код: Выделить всё
#ifdef DS1307
tmp = rtc_read(0x00);
if(tmp&(1<<7)){
tmp&=~(1<<7); //OSCILLATOR ON
rtc_write(0x00, tmp);
}
rtc_write(0x07,0x13); //SQW OUT ON, 32768Hz
#endifКод: Выделить всё
#ifdef DS3231
rtc_write(0x0E,0x10); //SQW OUT ON, 4096Hz
#endif
#ifdef DS1307
tmp = rtc_read(0x00);
if(tmp&(1<<7)){
tmp&=~(1<<7); //OSCILLATOR ON
rtc_write(0x00, tmp);
}
rtc_write(0x07,0x11); //SQW OUT ON, 4096Hz
#endif
Последний раз редактировалось Grey1975 Вт окт 10, 2017 13:12:43, всего редактировалось 1 раз.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
О, спасибо! Так и сделаю. А в прошивке выход на 4кГц активирован?
Добавлено after 4 minutes 43 seconds:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе ИВ-21
А что нужно изменить для работы ds3231 в оригинальной прошивке? Вы писали, что прошивки дла ds3231 в so8 и большом корпусе несовместимы
Добавлено after 4 minutes 43 seconds:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе ИВ-21
А что нужно изменить для работы ds3231 в оригинальной прошивке? Вы писали, что прошивки дла ds3231 в so8 и большом корпусе несовместимы
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Кстати HC0903A на 4kHz работает отлично. Громко и без дребезга.
Вот тут посмотрите: http://radiokot.ru/forum/viewtopic.php? ... &start=320 пр поводу правки прошивки.
Вот тут посмотрите: http://radiokot.ru/forum/viewtopic.php? ... &start=320 пр поводу правки прошивки.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Проще было бы у пищалки "хобот" отпилить.
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
Можно было, но выводы-то всё равно не нужны
, да и излучатель направлен "к зрителю" (если будет громко проще заклеить
).
Лазеров на колпачки у меня не нашлось, но есть вариант использовать разъём тюльпана такого типа (у меня жёлтый валялся):

вычистив из него средний контакт и часть пластика. Крепить можно его же гайкой, спилив лишнюю резьбу, а можно и приклеить, спилив резьбу полностью. Всё равно такие разъёмы у меня быстро разбивались и переставали работать, а так хоть какое-то применение
Правда придётся плату с преобразователем ставить в наружной части кольца, а датчик температуры ставить на плату основания(В любом случае там он мне больше нравится
). На датчик, кстати, тоже можно такой "колпачок" надеть, но уже точно на клей
Попробовал кольца просверлить - сверлятся без проблем, но для начального сверления нужно хорошо заточенное сверло, желательно около 2мм, затем уже рассверливать тем, чем надо. Перед сверлением обязательно кернить. В качестве опоры в кольцо подошёл кусок 20 пвх трубы.
Лазеров на колпачки у меня не нашлось, но есть вариант использовать разъём тюльпана такого типа (у меня жёлтый валялся):

вычистив из него средний контакт и часть пластика. Крепить можно его же гайкой, спилив лишнюю резьбу, а можно и приклеить, спилив резьбу полностью. Всё равно такие разъёмы у меня быстро разбивались и переставали работать, а так хоть какое-то применение
Правда придётся плату с преобразователем ставить в наружной части кольца, а датчик температуры ставить на плату основания(В любом случае там он мне больше нравится
Попробовал кольца просверлить - сверлятся без проблем, но для начального сверления нужно хорошо заточенное сверло, желательно около 2мм, затем уже рассверливать тем, чем надо. Перед сверлением обязательно кернить. В качестве опоры в кольцо подошёл кусок 20 пвх трубы.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Миниатюрные часы на вакуумно-люминисцентном индикаторе И
2 *Trigger*
По вашей ссылке на версию 1.13
Описание Ф/П MY_DS18B20.h
в самой библиотеке присутствуют Ф/П
так же не описаная в .h , но вызываемая в теле программы
определения для
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 компилируется нормально..
Вопрос снимается.
По вашей ссылке на версию 1.13
Описание Ф/П MY_DS18B20.h
Код: Выделить всё
unsigned char ds18b20_select(unsigned char *addr);
unsigned char ds18b20_read_spd(unsigned char *addr);
signed int ds18b20_temperature(unsigned char *addr);
unsigned char ds18b20_init(unsigned char *addr,signed char temp_low,signed char temp_high,
unsigned char resolution);
unsigned char ds18b20_start_conv(unsigned char *addr);
unsigned char ds18b20_check_conv_end(void);
signed int ds18b20_read_temp(unsigned char *addr);Код: Выделить всё
unsigned char ds18b20_init(DS18b20_FUNC_PARAM1 signed char temp_low,signed char temp_high,
unsigned char resolution)
unsigned char ds18b20_start_conv(DS18b20_FUNC_PARAM)
...Код: Выделить всё
unsigned char ds18b20_simple_init(DS18b20_FUNC_PARAM1 unsigned char resolution)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 компилируется нормально..
Вопрос снимается.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.