помогите разобраться с пищалкой (пьезоизлучатель)

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Сообщение kentik »

взята тема тут: http://chipenable.ru/index.php/programm ... evays.html

делаю это на атмеге 64 - в итоге тупо скрип и все.
частота 8 МГц. внутренняя.

самые главные в программе строчки это:
настройка таймера:
Спойлер

Код: Выделить всё

void SOUND_Init(void)
{
  //настройка вывода мк на выход
  PORT_SOUND &= ~(1<<PINX_SOUND);
  DDR_SOUND |= (1<<PINX_SOUND);
  
  //настройка таймера T2
  TIMSK |= (1<<TOIE2);   
  TCCR2 = (0<<WGM01)|(0<<WGM00)|(0<<CS02)|(0<<CS01)|(1<<CS00);  //режим - нормал, прескалер - 
  TCNT2 = 0;    
  OCR2 = 0;
   
  //инициализация переменных
  pSong = Empty;
  state = SOUND_STOP;
  durationNote = 0;
  toneNote = 0;
  repeat = 0;
  indexNote = 0;
  statReg = 0;
#ifndef SOUND_BPM  
  bpm = 0;
#endif
}
установка переменных - коэффициентов частоты:

Код: Выделить всё

#define SOUND_F_CPU     16U //тактовая частота мк
#define SOUND_TIM_PRE   1U  //зачение предделителя таймера 


ну и вычисление:

Код: Выделить всё

#define f(x) (SOUND_F_CPU*1000000UL/(x*2*SOUND_TIM_PRE))
#define fn(x) ((x*SOUND_F_CPU)/SOUND_TIM_PRE)

#define dn(x) ((24U*SOUND_F_CPU*1000000UL)/(x*SOUND_TIM_PRE*256UL*32UL)/COEF)
#define ms(x) (((x)*SOUND_F_CPU*1000UL)/(SOUND_TIM_PRE*256UL*32UL))

я так понимаю, что в примере юзают атмегу8 на частоте 16 МГц.
у меня стоит атмега64 на частоте 8МГц.

в Codevision тупо поменял:
1. на #include <mega64.h>
2. #define SOUND_F_CPU на 8U
3. в проекте указал что камушек - атмега64

скомпилил - длинный монотонный хрип.
стал играться с коэффициентами - эффекта ноль.

Подскажите, плииииииз - что не то.
вроде и таймер так же все настроен и частоты правильно указываю. но не пашет зараза такая.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

поправлю, в статье микроконтроллер ATmega8535. код смотреть нет времени.
Ставим плюсы: )
Реклама
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Сообщение kentik »

ibiza11 писал(а):в статье микроконтроллер ATmega8535.
да. это я заметил :-)
это поправлено.
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Сообщение kentik »

неужели никто зуммер не использует?
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Используем зумер, почему нет, просто пишу на асме, в си не практикую, вникать в прогу долго. Принцип то простой, читаешь даташит на зумер или подобный, там написано при какой частоте какая нота звучит, настраиваешь таймер на нужную частоту и подаешь на зумер.
Реклама
Ответить

Вернуться в «Периферия»