1. Bits 3:0 – MUX3:0: Analog Channel Selection Bits The value of these bits selects which analog inputs are connected to the ADC. See Table 22-3 for details. If these bits are changed during a conversion, the change will not go in effect until this conversion is complete (ADIF in ADCSRA is set) - перед сменой канала вставь еще одну проверку окончанию преобразования 2. Замерь напряжение на датчике прямо в работающей схеме, может быть все-таки что-то коротит или еще что... 3. У тебя выравнивание по левой стороне стоит - так и задумано? (ADLAR = 1)
Добавлено спустя 3 минуты 33 секунды: In Free Running mode, a new conversion will be started immediately after the conversion completes, while ADSC remains high. For a summary of conversion times, see Table 22-1. У тебя отключен Free Running Mode?
Добавлено спустя 13 минут 20 секунд: И по всему похоже у тебя какой-то баг в коде чтения третьего канала. Из бредовых, которые замыленным глазом не ловятся. Типа ADMUX = 0x11100100;
1. проверку не вставил, но перенес этот кусок в конец обработчика прерывания 2. напряжение замерял- одинаковое 3. АДЛАР 1, выравнивание в регистр хай, из него читаем 4 Free Running mode как отключать не знаю, но думаю что этот режим может быть только когда один канал оцифровывается
Последний раз редактировалось к561ЛА7 30 мар 2011, 15:45, всего редактировалось 1 раз.
что-то у тебя происходит после третьего канала, а что - непонятно. попробуй читать четвертый канал сразу после первого - поиграйся с порядком, посмотри что и после чего вылетать начинает... переведи 4-й канал на пятный. полностью переинициализируй и промерь 4-й канал несколько раз - не просто с запуском преобразования а с ожиданием окончания преобразования, конфигурацией, запуском и чтением...
да вообще чудеса происходят, если его отключить (не измерять), то врать начинает 1й , а если поменять частоту преобразования АЦП, то измерения не меняются, но начинает врать математика - (я этот канал прибавляю к другому - измеряет 37, а прибавляет 41.
я учился по курсу АРВ123 и такий стиль програмирования к сожалению не понимаю ПРишел к выводу что это глюки самой микросхемы - отсоединил все, и все равно ошибка преобразования + ошибка в вичислени. да еще и программа сбивается.