Цитата(abitwise @ Apr 11 2011, 16:09)

С типами данных у функции read_adc, массива temp_range и переменной adc_data_l ничего не напутал ? Всё верно ?
1. Вы, уж, определитесь: АЦП у Вас сколько разрядов выдаст? Всё привели к типу int; "резать" два бита - зачем? В чём выигрыш?
2. Сейчас только заметил: Вы ШИМ программно формируете. Почему не использовать аппаратные возможности?
3. В проверках (в операторах if) вторая часть условия (после &&) - лишняя: обеспечивается предыдущим оператором if