ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
39282
Andy Mozzhevilov (16.09.2005 13:51, просмотров: 351)
Кто загонял LPC213x в Power Down? не могу понять, но, если в pwd перейти записью PCON = 7, то есть согласно документации с выключением работы BOD в PWD режиме, то при выходе из PWD происходит рестарт контроллера. Если в PWD перейти PCON = 3 (оставив BOD работающим), то выход из pwd происходит нормально. На reset все нормально, никаких провалов. Vcc = 3.3, то есть под ситуацию из errata не попадает. В pwd захожу по уровневому прерыванию на EINT2, в прерывании же меняю полярность, сбрасываю флаг и включаю пробуждение по EINT2, засыпаю, просыпаясь все восстанавливаю и выхожу.
void Eint_isr(void)
{
    // switch to power down
    EXTPOLAR_bit.EXTPOLAR2 = 0;   //0 - low level aclive
    EXTINT_bit.EINT2       = 1;   //clear INT FLAG
    EXTWAKE_bit.EXTWAKE2   = 1;   //wake by INT2

    PIN_OFF(GREEN_LED);
    PCON = 7;                     // power down

    //exit from pwd
    PIN_ON(GREEN_LED);

    EXTWAKE_bit.EXTWAKE2   = 0;   //disable wake by INT2
    EXTPOLAR_bit.EXTPOLAR2 = 1;   //1 - high level aclive
    EXTINT_bit.EINT2       = 1;   //clear INT FLAG
}

int main (void)
{
    PIN_FUNC(EINT_PIN, 3);        //EINT2 mode
    EXTMODE_bit.EXTMODE2   = 0;   //0 - level sens
    EXTPOLAR_bit.EXTPOLAR2 = 1;   //1 - high level aclive
    EXTINT_bit.EINT2       = 1;   //clear INT FLAG

...