ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
284086
pav256 (16.11.2011 14:52, просмотров: 5843)
Синхронизация счетчиков на ATxmega. На ATmega осуществляется генерация нескольких синхронизированных импульсных последовательностей (частоты кратны, скважность и фазы различны). Вопрос синхронизации решается просто: GTCCR |= 1<<TSM; // остановка предделителей ... // инициализация таймеров //пример, инициализация Т3: TIMSK3 = 0x00; TCCR3A = 1<<COM3A1 | 1<<COM3A0 | 1<<WGM31; // 14 режим, TCCR3B = 1<<WGM33 | 1<<WGM32 | 1<<CS30; // 14 режим, предделитель на 1 TCCR3C = 0x00; //частота ICR3H = 0x01; // 40КГц ICR3L = 0x8F; //длительность импульса OCR3AH = 0x00; // ((2clk * 16) + 3) - 1 OCR3AL = 0x22; //фаза (смещение относительно базовой фазы) TCNT3H = 0x00; TCNT3L = 0x22; //устанавливаем порт на выход CONVST_CONTROL |= 1<<CONVST_BIT; ... // инициализация таймеров GTCCR &= ~(1<<TSM); // пуск предделителей Требуется переписать ПО под ATxmega, где отсутствует аппаратная возможность как остановки так и сброса предделителей. Если кто сталкивался с аналогичной задачей на ATxmega подскажите, можно ли реализовать синхронизацию таймеров более изящным методом, чем учет длительности кода при инициализации фазы таймера.