реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
Буратино
сообщение Jul 1 2009, 12:46
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



вот:
Код
...
static volatile unsigned  int value_ADC;
...

void adc_init(void)
{
   ADMUX = (1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1);
   ADCSRB = 0x00;
   ADCSRA = (1<<ADPS2)|(1<<ADPS0);
}


main(void)
{    
   unsigned char V_BAT;
   float f_bat;
   ...
   adc_init();
   ...  

   while(1)
   {  
       ...
       ADCSRA |= (1<<ADEN);
      
       ADCSRA|= (1<<ADSC);
       while((ADCSRA&(1<<ADSC))!=0);
       value_ADC= ADC;
       f_bat=(1.1*1024/value_ADC);
       V_BAT=(f_bat*100);    
      
       ADCSRA &= ~(1<<ADEN);        
    
      ...
      asm("sleep");                         //выход по прерыванию INT0
      ...

   }
}


Сообщение отредактировал Буратино - Jul 1 2009, 13:02


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 1 2009, 15:56
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Буратино @ Jul 1 2009, 15:46) *
вот:
А, результат работы этого?
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jul 1 2009, 16:27
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(Палыч @ Jul 1 2009, 19:56) *
А, результат работы этого?


Точный процесс аналого-цифрового преобразования с первого раза.
Правда в расчетах V_BAT=(f_bat*100); я делаю V_BAT=(f_bat*100)-250; для того, чтоб разместить значение в "unsigned char". Так нужно. А в коде не стал на этом акцентировать внимание.


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 2 2009, 05:14
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Буратино @ Jul 1 2009, 19:27) *
Код
   unsigned char V_BAT;
   float f_bat;
   ......
   f_bat=(1.1*1024/value_ADC);
   V_BAT=(f_bat*100)-250;
Плавающая запятая - не напрягает? Или ресурсов - валом? Наверное лучше было бы как-то так:

V_BAT=(112640L / value_ADC) - 250;
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jul 2 2009, 06:53
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(Палыч @ Jul 2 2009, 09:14) *
Плавающая запятая - не напрягает? Или ресурсов - валом? Наверное лучше было бы как-то так:

V_BAT=(112640L / value_ADC) - 250;



Да, спасибо.
И еще последнее: все таки после "ADCSRA |= (1<<ADEN);" в реальной программе проходит время. Около 2-5ms.
Включается "ацепометр" сразу после выхода из режима сна, потом проделывается определенная работа ,и только потом запускается сам процесс преобразования "ADCSRA|= (1<<ADSC);"


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 10:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016