Микроконтроллеры | Сил уже больше нет - ПРЕРЫВАНИЯ и АТМЕГА8 |
|
---|---|---|
В аттаче проект на CodeVision и Протеус, небольшая программка для измерения тока и напряжения с использованием прерывания и спящего режима.... Подскажите почему не работает, т.е. измерения путаются и показывает непонятно чего. Если поставить задержку перед измерением то все в порядке, в чем причина? |
|
|
Вот аттач |
|
|
Сначала выбираем канал (ADMUX=...) |
|
|
Спасибо огромное АНТОХА !!!! |
|
|
Попробуй для начала без прерывания и без спячки:
Если всё будет нормально, можно добавить прерывание. Потом спячку. |
|
|
Глюк вроде нашелся, но я не понимаю |
|
|
Хорошо сейчас поробую unsigned int read_adc(unsigned char adc_input) // Чтение результата преобразования .......... Volt_ACP = read_adc(0x01); Volt = (Volt_ACP / 1024) * 30; // Верхняя шкала 30V сейчас присмотрелся это тоже самое что ты предложил, так работает замечательно... |
|
|
Lerik: Если делать подряд 2 преобразования с разных каналов, то чтобы все работало необходимо между ними вставлять задержку, зачем? Такое может быть, если АЦП настроен на непрерывное преобразование. В этом случае при смене канала он сначала завершает текущее преобразование. Ещё вариант - контроллер выходит из sleep по какому-то другому прерыванию, не от АЦП. Есть другие прерывания? |
|
|
да в том то и дело что нет, во всяком случае я не назначал, посмотри плиз код, может увидишь криминал? |
|
|
Lerik, что-то не совсем понял химию вокруг MCUCR. Если в нем установлен ADC Noice Reduction, никаких sleep делать не надо - при установке флага начала преобразования процессор сам переходит в спячку. Для этого этот режим и задумывался. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |