ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
41469 Топик полностью
Xanoy (14.10.2005 00:38, просмотров: 1) ответил Xanoy на Читал, и пробывал, тот же результат :(
rezident Ты пробывал менять скорость передачи UART на лету? Тут непонятки каки е то Мне вот че не понятно: после инициализации FLL+, ставлю задержку что бы кварц нормально запустился, потом инициализирую все остальное, и перехожу в рабочий цикл, так вот при таком коде:
void main(void)
{
  unsigned volatile i;

  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer

  FLL_CTL0 |= XCAP18PF;                 // Configure load caps
  FLL_CTL1  = SELS + SELM1;             //
  for (i = 0xFFFF; i > 0; i--);           // Time for flag to set
  IFG1 &= ~OFIFG;                         // Clear OSCFault flag
  ....
у меня ошибка фреймов при переключении скорости +5% где то (фрейм должен быть 44uS а получается 46uS,). а если я отключаю задержку старта кварца (убираю строку for (i = 0xFFFF; i > 0; i--); // Time for flag to set), то получается какой то каламбур на выходе UART. Попробывал передать байты на одной скорости:
#pragma vector = USART0TX_VECTOR
__interrupt void DMX_tx (void)
{   _DINT();    
    U0TXBUF = 0;
    _EINT();
   }
с включенной задержкой на старт кварца, и без нее, не увидел разницы - на выходе UART стабыльно идут фреймы с периодом 44uS. Вот теперь немогу понять каким образом задержка на стабилизацию кварца влеяет на скорость передачи при изменении ее на лету. Щас смотрю каждый рисунок, каждий сигнал который может быть связан с UART, перечитываю описание блоков, но пока связи найти не могу... Может кто сталкивался с данной проблемой?