Увидел я в одном из наших изделий большую белую колбасу - на деле это оказался низкоомный резистор мощностью 8Вт для обогрева платы в прохладном климате.
Раз есть обогреватель - значит кто-то должен решать, когда его включать. На роль "кого-то" разработчики сначала определили один из клонов терморегурятора LM75, но впоследствие он был заменен на DS1621, ибо у последнего была встроенная EEPROM и не надо было после выключения питания заново прописывать уставки срабатывания (хотя это было и не трудно).
Это было очень краткое (надеюсь) вступление. Теперь по существу.
Как известно - все уже придумано за нас, особенно в такой могучей ОС, как Linux, нам же остается лишь скромная участь повторителей, поэтому приступим.
1. Для начала традиционно настроим ядро (make linux-menuconfig):
Device drivers
* I2C Support
* Enable compatibility bits for old user-space
* I2C device interface
* I2C bus multiplexing support
* Autoselect pertinent helper modules
* I2C Hardware Bus support
* GPIO-based bit-banging I2C
* Hardware monitoring support
* Dallas Semiconductor DS1621 and DS1625
2. Теперь конкретизируем тип датчика на шине. Лезем в боард-файл своей платформы (например, board-sam9m10g45.c) и там пишем:
static struct i2c_board_info __initdata ek_i2c_devices[] = {
{
I2C_BOARD_INFO("ds1621", 0x48),
.type = "ds1621",
},
}
и в этом же файле в функции инициализации платы прописываем i2c:
at91_add_device_i2c(0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
В принципе, после перекомпиляции ядра в каталоге /sys/bus/i2c/device/x-yyyy/ появятся как минимум три файла - temp1_input (текущая температура), temp1_max (температура отключения), temp1_min (температура включения), скорее всего файлов будет больше - зависит от типа терморегулятора.
Если что-то идет не так, то очень помогут диагностировать проблемы два комплекта утилит: lm-sensors и i2c-tools. Оба пакета можно подключить в Package selection for the target/Hardware handling.
В самом примитивном случае пользоваться ими можно так:
i2cdetect -y 0 (покажет все устройства на шине 0)
sensors (покажет данные с датчиков, обнаруженных на шине.
Вроде ничего не упустил.
Раз есть обогреватель - значит кто-то должен решать, когда его включать. На роль "кого-то" разработчики сначала определили один из клонов терморегурятора LM75, но впоследствие он был заменен на DS1621, ибо у последнего была встроенная EEPROM и не надо было после выключения питания заново прописывать уставки срабатывания (хотя это было и не трудно).
Это было очень краткое (надеюсь) вступление. Теперь по существу.
Как известно - все уже придумано за нас, особенно в такой могучей ОС, как Linux, нам же остается лишь скромная участь повторителей, поэтому приступим.
1. Для начала традиционно настроим ядро (make linux-menuconfig):
Device drivers
* I2C Support
* Enable compatibility bits for old user-space
* I2C device interface
* I2C bus multiplexing support
* Autoselect pertinent helper modules
* I2C Hardware Bus support
* GPIO-based bit-banging I2C
* Hardware monitoring support
* Dallas Semiconductor DS1621 and DS1625
2. Теперь конкретизируем тип датчика на шине. Лезем в боард-файл своей платформы (например, board-sam9m10g45.c) и там пишем:
static struct i2c_board_info __initdata ek_i2c_devices[] = {
{
I2C_BOARD_INFO("ds1621", 0x48),
.type = "ds1621",
},
}
и в этом же файле в функции инициализации платы прописываем i2c:
at91_add_device_i2c(0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
В принципе, после перекомпиляции ядра в каталоге /sys/bus/i2c/device/x-yyyy/ появятся как минимум три файла - temp1_input (текущая температура), temp1_max (температура отключения), temp1_min (температура включения), скорее всего файлов будет больше - зависит от типа терморегулятора.
Если что-то идет не так, то очень помогут диагностировать проблемы два комплекта утилит: lm-sensors и i2c-tools. Оба пакета можно подключить в Package selection for the target/Hardware handling.
В самом примитивном случае пользоваться ими можно так:
i2cdetect -y 0 (покажет все устройства на шине 0)
sensors (покажет данные с датчиков, обнаруженных на шине.
Вроде ничего не упустил.
Комментариев нет:
Отправить комментарий