-
04.03.2006, 23:47 #1
- Регистрация
- 21.01.2006
- Сообщений
- 28
- Поблагодарили
- 0
- Поблагодарил
- 0
программирование мк Avr 8535
здравствуйте всем , кто то может знает как можно сформировать такой сигнал на выходе микроконтроллера Avr серии 8535 . в общем история такая требуется сформировать сигнал на выходе порта к примеру Pb.0 длительностью 2 миллисекунды, а на Pb.1 одновременно включить на длительность 500 микросекунд, по истечении
500 микросекунд сигнал с вывода Pb.1 выключить, а после 1500 микросекунд выключить сигнал на выводе рв.0 , затем сделать задержку на 2 миллисекунды и вновь повторить операцию , т.е. выводить в цикле. может это можно как то организовать с таймерами . пожалуйста подскажите как это можно все организовать, за ранее спасибо.
-
07.03.2006, 11:47 #2
- Регистрация
- 05.12.2005
- Адрес
- Волжский, Волгоградская обл.
- Возраст
- 69
- Сообщений
- 59
- Поблагодарили
- 1
- Поблагодарил
- 0
Если с таймером, то например так:
unsigned int count_mks;
#pragma vector = TIMER1_OVF_vect
__interrupt void Timer1_Ovf_vect(void) {
count_mks++;
switch(count_mks) {
case 1:
PORTB |= ((1<<PB0) + (1<<PB1));
break;
case 501:
PORTB &= ~(1<<PB1);
break;
case 2001:
PORTB &= ~(1<<PB0);
break;
case 4001;
count_mks = 0;
break;
}
}
Это самое простое.
Но это при точном подборе кварца и предделителя на сработку таймера с периодом в микросекунду. Если нет, то прерывания надо сделать почаще а в тело обработчика добавить загрузку регистра TCCR1.Последний раз редактировалось rz4an; 07.03.2006 в 12:11.
-
21.03.2006, 00:35 #3
- Регистрация
- 21.01.2006
- Сообщений
- 28
- Поблагодарили
- 0
- Поблагодарил
- 0
Cпасибо за подсказку, попробовал свою реализацию на языке Ассемблер для AVR,вроде как получилось. Пробовал в симуляторе, в живую еще не пробовал.А у Вас я так понимаю написано на языке С++ ?
-
21.03.2006, 17:08 #4
- Регистрация
- 05.12.2005
- Адрес
- Волжский, Волгоградская обл.
- Возраст
- 69
- Сообщений
- 59
- Поблагодарили
- 1
- Поблагодарил
- 0
Просто С, без крестов
Давно перешел на С и не жалею
-
24.03.2006, 00:31 #5
- Регистрация
- 21.01.2006
- Сообщений
- 28
- Поблагодарили
- 0
- Поблагодарил
- 0
возник вопрос, этот просто "С" не является специализированным языком для микроконтроллера AVR. Или делай ему #include "8535def.inc";
и дальше свободно программируй ?
-
24.03.2006, 15:06 #6
- Регистрация
- 05.12.2005
- Адрес
- Волжский, Волгоградская обл.
- Возраст
- 69
- Сообщений
- 59
- Поблагодарили
- 1
- Поблагодарил
- 0
"С" он и в африке "С"
Если правильно писАть, текст переносится практически на любой процессор.
"С" не привязан к процессору как мнемоника ассемлера.
Вот компиляторы для разных процессоров, действительно разные
В приведенном выше примере, специализированными являются тоьлко строки:
#pragma vector = TIMER1_OVF_vect
__interrupt void Timer1_Ovf_vect(void) {
Это был пример для компилятора фирмы IAR.
|
Социальные закладки