| Микроконтроллеры | Сил уже больше нет - ПРЕРЫВАНИЯ и АТМЕГА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—2025  | 
|||