roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 18:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 31 июл 2009, 08:58 
Не в сети

Зарегистрирован: 29 июл 2009, 14:11
Сообщения: 12
Откуда: Всеволожск (СПб)
Спасибо avr123.nm.ru за помощь и за то что втянул меня в это дело!!!
Все так просто оказалось, правда это понимаешь только потом.
Заработало, только немного подкорректировал:
Код:
if ((adc_data[2] - (adc_data[1]-adc_data[0]) - adc_data[0] ) < 212 ) {  PORTB.0 = 1; }
  else  { PORTB.0 = 0; };
if ((adc_data[1] - adc_data[0] ) < 212 ) {  PORTB.1 = 1; }
   else  { PORTB.1 = 0; };

Первая часть ппроекта осилена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 31 июл 2009, 09:35 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Да ... Когда что-то начинает работать - всегда радостно ! :good:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 31 июл 2009, 15:58 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
А вот это
Код:
(adc_data[2] - (adc_data[1]-adc_data[0]) - adc_data[0] )

разве не равно
Код:
(adc_data[2] - adc_data[1])

?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 31 июл 2009, 16:03 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Можно на яблоки или на пирожки земенить и прикинуть или на бумажке посчитать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 31 июл 2009, 21:27 
Не в сети

Зарегистрирован: 29 июл 2009, 14:11
Сообщения: 12
Откуда: Всеволожск (СПб)
Согласен, пробовал и так и так, результат один. Просто оставил первый ваиант.
Код:
(adc_data[2] - (adc_data[1]-adc_data[0]) - adc_data[0] )

Код:
(adc_data[2] - adc_data[1])


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 06 авг 2009, 22:49 
Не в сети

Зарегистрирован: 29 июл 2009, 14:11
Сообщения: 12
Откуда: Всеволожск (СПб)
При продвижении дальше возникли следующие трудности:
Кроме загорания светодиода, пытаюсь вывести звук на PB1/OC1A, который должен появиться при загорании любого светодиода.
Звук получается только при лог.1 на PD2 (на PD1 и PD0 не реагирует).
Причем генерация звука идет прерывистая. Я так понимаю, звук прерывается на время обработки прерывания.
Код:
if ((adc_data[2]-(adc_data[1]-adc_data[0])-adc_data[0])<218) {     
      PORTD.0=1;                                                           
   
     TCCR1A=0x40; // включение звука             
   
    }
else  {
     PORTD.0=0;
     TCCR1A=0x00;
     
    };                   
if ((adc_data[1]-adc_data[0])<218) {     
      PORTD.1=1;   
      TCCR1A=0x40; // включение звука                                                           
    }
else  {
     PORTD.1=0;
     TCCR1A=0x00;
    };       

if (adc_data[0]<218) {     
      PORTD.2=1;                   
      TCCR1A=0x40; // включение звука
    }
else  {
     PORTD.2=0;
     TCCR1A=0x00;
     
    };


Таймер так сконфигурирован:

Код:
TCCR1A=0x00;     // регистр управления таймером1  на выводе  OC1A =  0 (звук выключен)
TCCR1B=0x0D;     // 00001101 режим работы CTC и коэф. предделения 1024 f= 7,813 kHz
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x07;      // регистр сравнения (еще деление на 7)
OCR1BH=0x00;
OCR1BL=0x00;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 06 авг 2009, 23:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
>> Звук получается только при лог.1 на PD2 (на PD1 и PD0 не реагирует).

дак по вашему коду только на PD2 звук и включается

TCCR1A=0x40; // включение звука

===============

Сокращайте длину процедур в прерывании и повышайте частоту такта МК.

Возможно ва над опереходить к прерыванию только для музыки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: работа с несколькими АЦП
СообщениеДобавлено: 07 авг 2009, 10:23 
Не в сети

Зарегистрирован: 29 июл 2009, 14:11
Сообщения: 12
Откуда: Всеволожск (СПб)
Так ведь TCCR1A=0x40; добавлял во все три выхода одинаково.
Частоту тактирования повышал, не помогло.
Если переходить на прерывание только по таймеру, то как тогда с АЦ преобразованиями?
:pardon:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO