Прежде чем начать работать с модулем AWEX, изучите его наличие в вашем микроконтроллере. Когда я начинал изучать AWEX я столкнулся с тем, что документация на ATXmega256A3 разнилась, в одном документе было написано что их два, на PORTC и на PORTE. После того, как мои попытки завести AWEX на PORTE не увенчались успехом. Я нашел другой доумент, где было написано, что AWEX есть только на PORTC.
AWEX это некое расширение модуля таймера-счетчика. Используется для аппаратной генерации импульсов. Очень удобно использовать для генерации ШИМ сигнала для управления инверторами и шаговыми двигателями. Имеется возможность вставлять паузу мертвого времени и.т.д.
Собственно простой пример:
AWEXC.DTBOTH - Общий регистр паузы неперекрытия
AWEXC.DTHS и AWEXC.DTLS Регистры паузы неперекрытия верзнего и нижнего уровня
AWEXC.OUTOVEN - Регистр разрешения перекрытия выходов
TCC0.CTRLB = TC_WGMODE_SS_gc | TC0_CCAEN_bm - запускаем режим генерации импульсов с однонаправленным счетом и активируем канал A.
Данный пример управляет с помощью PORTC.0 и PORTC.1 двумя транзисторами в плечах преобразователя.
Так как MOSFET транзисторы запираются не сразу, и не возникло ситуации, когда оба транзистора открыты. Необходимо выставлять паузы неперекрытия, чтобы транзистор наверняка заперся.
Больше технической русскоязычной документации здесь
Источник
AWEX это некое расширение модуля таймера-счетчика. Используется для аппаратной генерации импульсов. Очень удобно использовать для генерации ШИМ сигнала для управления инверторами и шаговыми двигателями. Имеется возможность вставлять паузу мертвого времени и.т.д.
Собственно простой пример:
int main(void) { ClockExt8MHz(); PORTC.DIRSET = 0xFF; PORTC.OUTCLR = 0xFF; TCC0.CTRLB = TC_WGMODE_SS_gc | TC0_CCAEN_bm; TCC0.PER = 512; TCC0.CCA = 256; TCC0.CTRLA = TC_CLKSEL_DIV1_gc; AWEXC.CTRL = AWEX_DTICCAEN_bm; AWEXC.DTBOTH = 48; AWEXC.OUTOVEN = 0x03; while (1) { } }AWEXC.CTRL = AWEX_DTICCAEN_bm - здесь разрешаем использование на канале А, паузы неперекрытия.
AWEXC.DTBOTH - Общий регистр паузы неперекрытия
AWEXC.DTHS и AWEXC.DTLS Регистры паузы неперекрытия верзнего и нижнего уровня
AWEXC.OUTOVEN - Регистр разрешения перекрытия выходов
TCC0.CTRLB = TC_WGMODE_SS_gc | TC0_CCAEN_bm - запускаем режим генерации импульсов с однонаправленным счетом и активируем канал A.
Данный пример управляет с помощью PORTC.0 и PORTC.1 двумя транзисторами в плечах преобразователя.
Так как MOSFET транзисторы запираются не сразу, и не возникло ситуации, когда оба транзистора открыты. Необходимо выставлять паузы неперекрытия, чтобы транзистор наверняка заперся.
Больше технической русскоязычной документации здесь
Источник
0 коммент.:
Отправить комментарий