собрал схему, мега8 с кварцем на 4 Мгц, задача- измерить две температуры и угол поворота переменного резистора, а потом передать всё это по уарту.
Проблема в том, что при активации АЦП ни датчики температуры на DS18b20 не работают, ни с самого АЦП данных нет. На просторах нашел совет- на время считывания температуры запретить прерывания, т.к. они мешают опросу датчиков. Отчасти совет помог- с одного датчика температура считывается. Со второго- никак, даже когда закомментил опрос первого. Вот тут мозг вскипел...
Буду благодарен за любые идеи
АЦП
Опрос датчиков
Результат работы(
Раздел: Песочница или Вопрос-Ответ
Проблема в том, что при активации АЦП ни датчики температуры на DS18b20 не работают, ни с самого АЦП данных нет. На просторах нашел совет- на время считывания температуры запретить прерывания, т.к. они мешают опросу датчиков. Отчасти совет помог- с одного датчика температура считывается. Со второго- никак, даже когда закомментил опрос первого. Вот тут мозг вскипел...
Буду благодарен за любые идеи
АЦП
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AREF pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCD;
Опрос датчиков
int i;
float temp [2];
void temperature(void)
{
#asm("cli")
ds18b20_init(&ds18b20_rom_codes[i][0],25,35,DS18B20_12BIT_RES);
ds18b20_init(&ds18b20_rom_codes[i+1][0],25,35,DS18B20_9BIT_RES);
temp[i+1]= ds18b20_temperature (&ds18b20_rom_codes [i+1] [0]);
temp[i]= ds18b20_temperature (&ds18b20_rom_codes [i] [0]);
#asm("sei")
}
Результат работы(
t0=+29.812C t1=-9999.000C
.ds18b20_devices=2
Раздел: Песочница или Вопрос-Ответ