Re: Простая автоматика управления клапаном отбора
а не вредно ли каждый раз писать в EEPROM ? я понимаю, что количество циклов должно быть около 1 млн, но это для оригинала, а у нас китай.
с водкой все идет хорошо... кроме ног
Форум самогонщиков, винокуров, виноделов, пивоваров, бондарей и очень хороших людей |
Чтобы отправить ответ, вы должны войти или зарегистрироваться
с 21 по 34 из 34
а не вредно ли каждый раз писать в EEPROM ? я понимаю, что количество циклов должно быть около 1 млн, но это для оригинала, а у нас китай.
Konster, каждый раз, думаю, вредно.
У него всё-таки ограниченное количество циклов.
Может быть лучше будет такой алгоритм при подключении датчика:
1. Делаем сброс.
2. Читаем конфиг у DS-ки.
3. Если прошито не 12-бит разрешение, тогда устанавливаем 12-бит и зашиваем новый конфиг в EEPROM.
4. Иначе оставляем как есть.
5. Пользуемся.
P.S. Кстати, почему пишут
ds.write(0x60); // 0x60 12-бит разрешение
?
Туда по даташиту вроде 0Х7F надо?
Туда по даташиту вроде 0Х7F надо
kvic,
А я у тебя про это хотел спросить... Бред какой-то...Но ведь работает, посмотрю сегодня-завтра на практике.
Туда по даташиту вроде 0Х7F надо?
А еще правильней считать этот регистр, установить биты разрешения - и записать обратно...
kvic, не... вроде все правильно
0x60 = B01100000
Только двумя битами библиотечная функция управляет
считать этот регистр, установить биты разрешения - и записать обратно
А зачем? Если только два бита изменять можем:
"Bit 7 and bits 0 to 4 in the configuration register are reserved for internal use
by the device and cannot be overwritten ".
Я так понял, что туда любое число можно посылать, лишь бы биты 5 и 6 были бы правильные. Только они перепишутся.
еще правильней считать этот регистр, установить биты разрешения - и записать обратно
Пожалуй, да.
Страхуемся от возможных изменений ненужных битов.
kvic, совершенно верно - это общий случай в программировании, иначе можно словить сайд-эффекты...
Туда по даташиту вроде 0Х7F надо?
Проверил - действительно можно любое число писать.
Запишутся только биты 5,6
Было в регистре (прошивка заводская копия)
01100000 (0Х7F)
Команда: ds.write(B10000000);
Результат
00011111 (1F)
UPD здесь опечатка - исправлено ниже.
Kusnezov Oleg, собственно - это совершенно не важно, что в данном случае это работает. Этот подход неприемлем при программировании таких устройств с общем случае. Если было бы ревью данного кода - этот код был бы признан как ошибочный. Где гарантия - что максим не поменяет реализацию этого регистра в будущем?
01100000 (0Х7F)
А где здесь 0x7F? 01100000 == 0x60
d.styler, был вопрос от kvic - я на вопрос ответил, и свой ответ проверил. Но это не значит, что я с тобой не согласен. Согласен.
Kusnezov Oleg, ок - значит я не так понял...
Да опечатка, спасибо, надо так:
Было в регистре (прошивка заводская копия) 01111111
Прошу прощения, подскажите пожалуйста, какие библиотеки конкретно должны быть подключены в Ардуино для правильной компиляции прошивки, у меня пишет "undefined reference to `LCD_1602_RUS::LCD_1602_RUS(unsigned char, unsigned char, unsigned char)'" и много строчек про LCD_1602_RUS
Прошу пардону, мозг немного не туда поработал, вместо библиотеки LCD_1602_RUS установил LCD_1602_RUS_ALL, потому и не прошивалось.
Пробую на Pro Mini сделать.
Приятель попросил собрать ему сие простое устройство, а чёрт меня дёрнул перенести реализацию на STM32f103.
Блин, как же там некомфортно быть чайником...
Добил, конечно. По пути выкинул датчик атмосферы, добавил второй DS18b20 (на воду) и заменил дисплей на OLED 128x64
с 21 по 34 из 34
Чтобы отправить ответ, вы должны войти или зарегистрироваться