Перейти к содержанию
    

Pilot134

Участник
  • Постов

    14
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Я ни в коем случае ни кого не игнорирую. Я очень Вам признателен за то что помогаете таким "спецам" как я. Я уже эту часть сделал. Работает. Круто!!! Спасибо ВАМ и этому замечательному форуму :rolleyes:
  2. Уважаемый Палыч. В школе учился. К сожалению я не очень силён в си :( о чём очень сожалею и извиняюсь что спрашиваю ерунду. Теперь знаю! Что целую часть от деления пишем АААА = Х /10; Остаток ВВВВ= Х % 10; Вам огромное Спасибо! :rolleyes:
  3. Интересный вариант. Температуре 26,5 град. соответствует код 0000 0001 1010 1000 Откидываем дробную часть останется 0000 0000 0001 1010 Как из него получить двоично-десятичный код? Т.е. AAAA BBBB? Как округлить до десятых дробную часть показаний термометра уже мне подсказали выше (будет СССС). Т.е. впринципе можно действительно сравнить числа в двоично-десяичном формате (0000 АААА ВВВВ СССС). Вот только подскажите пожалуйста перевод из двоичного в двоично-десятичный код (из 0001 1010 получить 0010 0110). Спасибо!
  4. Только пожалуйста не ругайтесь. Но что-то немного не понял :( У устройства есть вывод значений температуры (порог) на дисплей. Кнопками я могу редактировать это значение и вписываю (например) цифры 26,5. Всего 3 цифры. Мне нужно чтобы при достижении этой температуры включалось реле и сигнализировало (т.е. сравнивать значения на дисплее с показаниями с термометра). Соответственно у меня есть переменные zifr_1 = 0x02, zifr_2 = 0x06, zifr_3 = 0x05 (двоично-десятичный код) У термометра DS18B20 этой температуре соответствует код 0000 0001 1010 1000 (двоичный код) Как я могу перейти в одинаковую систему единиц для их сравнения? Я сначала думал что нужно: 0x02(hex) * 100(dec) = 0b1100 1000 + 0x06(hex) * 10(dec) = 0b0011 1100 + 0b00000101 = 1 0000 1001 Что ни как не равно показаниям термометра (0000 0001 1010 1000). Зашёл в тупик :smile3046: Помогите пожалуйста.
  5. Очень сильно извиняюсь! Но появился ещё один вопрос - как можно перевести двоично-десятичное число в двоичное. Причём двоично-десятичное содержит 3 значящих тетрады. Т.е. число типа int 0000 0011 0100 0101 (2dec) нужно преоборазовать в int 0000 0001 0101 1001 (Bin) где 0000 0011 0100 0101 - число 0345 двоично-десятичное а 0000 0001 0101 1001 - двоичное число 345. Спасибо.
  6. Это работает :) Вопрос в том чтобы преобразовать значение с термометра DS18B20 в строчку printf("...") и чтобы температура выводилась в виде 25.6 Я считал температуру с датчика DS18B20 и она содержится в 2-х байтах. В старшем (temp1) и младшем (temp2). Я уже научился выводить целую часть температуры: temperatura = ((temp1)<<4)|(temp2>>4); printf("temp = %d C\r\n",temperatura); и вижу на компе текст (комп с микроконтроллером общаются по усарту) temp = 26 С А вот с дробной частью пока проблема :( Отрицательные температуры ещё не делал :) :) там то работает. Дело в том что у термометра DS18B20 температура считывается определённым образом. Как видно из скрина старший байт только в младшей тетраде содержит значения целой части температуры. А младший - старшая тетрада содержит также целую часть, а младшая тетрада младшего байта содержит только лишь дробную часть. Спасибо что отозвались!
  7. До отрицательной ещё не добрался. Вставил Ваш вариант и не заработало :( Посмотрел код и у меня вопрос. Строчка: s16 curr_temper_cels = (msb << 8) + lsb; - переменная формата sig int curr_temper_cels. Мы в неё записываем старший байт (temp1) сдвинутый 8 раз влево и прибавляем младший байт. ___ Строчка: curr_temper_cels = (curr_temper_cels * 10) >> DS18X20_SHIFT; - берёт переменную curr_temper_cels и умножает её на 10, сдвигает 4-е раза вправо и вновь вписывает в переменную curr_temper_cels Правильно я понимаю? Спасибо.
  8. Здравствуйте. Сразу хочу извиниться что для многих мой вопрос покажется примитивным, но всё же. Считал я температуру с термометра DS18B20 в 2 регистра temp1 (char) и temp2 (char) . Младшая тетрада temp1 и старшая тетрада temp2 имеют значение целой части температуры. Младшая тетрада temp2 имеет дробную часть температуры. Я хочу строчкой printf("...") вывести в уарт МК данные чтобы у меня показывало температуру в формате 25.4 Голову сломал не знаю как сделать :( Помогите пожалуйста. Понятно что вопрос дилетанта. Работаю в CodeVisionAVR. МК atmega8. Спасибо.
  9. Т.е. впринципе если после пайки остался непромытый флюс под сим держателем то могут появиться "глюки" или вовсе не работать?
  10. Здравствуйте. Хочу спросить - какая максимальная ёмкость выводов на СИМ карту может быть, чтобы модуль SIM900® нормально работал? Посмотрел в мануале и не нашёл :( В описании на защитные супрессоры SMF05С обоначена максимальная ёмкость в 130 pF. Я так понимаю что если линии выводов (проводники на СИМ держатель) превысят по ёмкости некоторое значение, то модуль не сможет нормально общаться с СИМ картой. И можно ли замерить ёмкость например мультиметром (т.е. просто взять мультиметр, у которого есть такой предел для измерений и последовательно измерить ёмкость каждого сигнального проводника относитально gnd а также ёмкость относительно самих сигнальных линий). Или так сделать не получится? Спасибо.
  11. Хочу сигнализацию на сотовом сделать. подскажите что нибудь.
×
×
  • Создать...