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

 
 
> таймер в таймере или шим в шиме, помогите исходничком
Maks321
сообщение Sep 7 2009, 20:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-05-08
Пользователь №: 37 328



ситуация такая: контролер -мега8
нужно сделать от 2 до 10 импульсов в одном такте PWM сигнала. частоты пвма в пределах от 40гц до 5Кгц ,осцилограмму нужно получить примерно такую

простыми задержками по мсекундам никчему не привела(съела весь ресурс),запустить или остановить 2й таймер из-под прерывания первого тож не получилось. можно конешно на 2 выхода повесить логику 2И , но чтото мне подсказывает что это логика есть в контролере.
мой исходник щас на уровне инициализации, такчто и выложить на обозрение нечего sad.gif
сильно не пинайте, процессоры только начал программить .

Сообщение отредактировал Maks321 - Sep 7 2009, 20:20
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Maks321
сообщение Sep 9 2009, 22:26
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-05-08
Пользователь №: 37 328



вобщем получилось нечто такое
Код
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
// TCNT1H = 0xFF; //reload counter high value
// TCNT1L = 0x06; //reload counter low value
if (a1 < q1) if (a2 > q2)  { a2 = 0; if (PORTD == 0x00) PORTD = 0xFF;else PORTD = 0x00;}
if (a1 > 10000) { a1 = 0; a2 = 0; PORTD = 0xFF;} // (10000 условная частота 10КГц)
a1++; a2++;
}

a1 a2 переменные для счета.
q1 (q1 = 5000 для 50%) расчитываем % обшего пвм
q2 длительность коротких импульсов(можно посчитать и количество от общей частоты) пока без регулировки скважности
мигаю всем портом исключительно в тестовых ценях на протеусе.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 19:32
Рейтинг@Mail.ru


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