Xmega: AWEX

Posted by Reason89 | Posted in , ,

    Прежде чем начать работать с модулем AWEX, изучите его наличие в вашем микроконтроллере. Когда я начинал изучать AWEX я столкнулся с тем, что документация на ATXmega256A3 разнилась, в одном документе было написано что их два, на PORTC и на PORTE. После того, как мои попытки завести AWEX на PORTE не увенчались успехом. Я нашел другой доумент, где было написано, что AWEX есть только на PORTC.
  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 транзисторы запираются не сразу, и не возникло ситуации, когда оба транзистора открыты. Необходимо выставлять паузы неперекрытия, чтобы транзистор наверняка  заперся.
Больше технической русскоязычной документации здесь



Comments (0)

Отправить комментарий