1. Поменяй местами датчики 1 и 4-й. 2. Попробую делать по два замера на каждом канале. 3. Как ты ждешь окончания ADC-преобразования?
Добавлено спустя 56 секунд: А, ну можно не менять датчики, а замерить напряжение на них
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
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 и такий стиль програмирования к сожалению не понимаю ПРишел к выводу что это глюки самой микросхемы - отсоединил все, и все равно ошибка преобразования + ошибка в вичислени. да еще и программа сбивается.