Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Как пример, генерация beep 1 кГц с помощью системного таймера 500 мкс:

Отправлено Леонид Иванович 31 октября 2008 г. 22:39
В ответ на: Бип при нажатии кнопки отправлено <font color=gray>Nashhh</font> 31 октября 2008 г. 22:21


#define FCLK 16.000 //clock frequency, MHz
#define TSYS 500.0 //system tick, uS
#define SND (1 << PB0) //OL - sound output
#define Port_SND (PORTB & SND)
#define Port_SND_0 (PORTB &= ~SND)
#define Port_SND_1 (PORTB |= SND)
#define T2VAL (FCLK * TSYS / 64.0) //system timer period

//--------------------------- System timer init: -----------------------------

void Main_Timer_Init(void)
{
TCCR2 = (1<<WGM21) | (1<<CS22); //timer 2 mode: CTC, CK/64
OCR2 = T2VAL - 1; //load compare register
TIFR = (1<<OCIE2); //pending interrupts clear
TIMSK = (1<<OCIE2); //compare interrupt enable
fTick = 1; //force update
}

//------------------------ System timer interrupt: ---------------------------

#pragma vector = TIMER2_COMP_vect
__interrupt void Timer(void)
{
Sound_Gen(); //generate sound
}

#define BEEP_D 100.0 //beep duration, mS

#define MS2P(x) (int)(x * 500 / TSYS) //convert mS to periods

//------------------------------ Variables: ----------------------------------

int SndTimer; //sound duration in periods

//--------------------------- Beep generation: -------------------------------

__monitor void Sound_Beep(void)
{
SndTimer = MS2P(BEEP_D);
}

//--------------------------- Sound generation: ------------------------------

void Sound_Gen(void)
{
if(SndTimer)
{
Port_SND? Port_SND_0 : Port_SND_1;
if(Port_SND) SndTimer--;
}
}

//----------------------------------------------------------------------------



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 63:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru