Перейти к содержанию
    

Renesas R8C timer RD buffer register mode

Собственно сабж. Скоро лопну от злости.

В режиме без буфера все работает.

В режиме с буфером содержимое трех регистров переносится, а TRDGRD0 не переносится в TRDGRB0 (вижу в отладчике).

 

 

#define BUFFERED

#ifndef BUFFERED

#define PERIOD_REG0    trdgra0
#define PERIOD_REG1    trdgra1
#define PWM_REG0    trdgrb0
#define PWM_REG1    trdgrb1

#else

#define PERIOD_REG0    trdgrc0
#define PERIOD_REG1    trdgrc1
#define PWM_REG0    trdgrd0
#define PWM_REG1    trdgrd1

#endif




void ConfigureTimerRD(void)
{    trdstr    = 0x00;        // stop timer
#ifdef BUFFERED
    trdmr    = 0xf1;        // registers 0 and 1 work Synchro with buffer
#else
    trdmr    =    0x01;
#endif
    trdpmr    = 0x11;        // TRDIOB0, TRDIOB1 : PWM
    trdfcr    = 0x80;        // not PWM3 mode
    trdpocr0 = 0x07;    // output active level = high
    trdocr    = 0x00;        // initial output = 0
    trdoer1 = 0xff;        // disable all outputs of PWM
    trdoer2 = 0x00;        // disable outputs by INT0
    trdiora0= 0xaa;
    trdiora1= 0xaa;    
    trdiorc0= 0xaa;
    trdiorc1= 0xaa;    

    trdcr0    = 0x23;        // count at both edges f8 , clear together with 1
    trdcr1    = 0x23;        // count at both edges f8
    PERIOD_REG0 = TIMER_PWM_RESOL-1;    
    PERIOD_REG1 = TIMER_PWM_RESOL-1;    
    PWM_REG0    = TIMER_PWM_RESOL;        // change point of PWM
    PWM_REG1    = 0;        // change point of PWM 
    trd0    = 0xffff;    // counter itself
    trd1    = 0xffff;
        
    trdier0 = 0x00;        // enable compare A0 interrupt
    trdier1 = 0x00;        // disable all interrupts in 1 channel
//    trd0ic = 0x04;        // interrupts priority register - enabled
    trdstr = 0x0F;        // Go!

    OFF_PIN_DU3();
    OFF_PIN_DU4();
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам спросил - сам разобрался.

 

Регистр для управления полярностью выходного сигнала имеет гораздо более сильное влияние на всю работу сравнения и генерации ШИМ, чем это можно представить из названия. После установки регистров каналов 0 и 1 в одинаковое значение ну и выяснения подробностей, не описанных в документации, все заработало.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Угу, один из тех моментов, которые заставляют пересматривать проекты в пользу, например, STM8...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...