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

Kolobokov

Участник
  • Постов

    7
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Нет, там был именно SERCOM2_GCLK_ID_CORE Причина была вот эта - GCLK->CLKCTRL.reg I= ... надо было - GCLK->CLKCTRL.reg = etc... теперь работает
  2. ATSAMD - 2 UARTa

    Работающая конфигурация UART - PM->APBCMASK.reg |= PM_APBCMASK_SERCOM0; /* Enable peripheral Multiplexer */ PORT->Group[0].PINCFG[6].reg = 0 | 1 * PORT_PINCFG_PMUXEN; // TXD PORT->Group[0].PINCFG[5].reg = 0 // RXD | 1 * PORT_PINCFG_INEN | 1 * PORT_PINCFG_PULLEN | 1 * PORT_PINCFG_PMUXEN; /* Peripheral Function D selected */ PORT->Group[0].PMUX[6/2].bit.PMUXE = PORT_PMUX_PMUXE_D_Val; // TXD PORT->Group[0].PMUX[5/2].bit.PMUXO = PORT_PMUX_PMUXO_D_Val; // RXD /* Baudrate Register */ uint64_t BaudReg_S0 = (uint64_t)(65536 * (f_cpu - (16 * baud)) / f_cpu); /* */ GCLK->CLKCTRL.reg = GCLK_CLKCTRL_GEN(0) | GCLK_CLKCTRL_ID(SERCOM0_GCLK_ID_CORE) | GCLK_CLKCTRL_CLKEN; /* */ SERCOM0->USART.CTRLA.reg = 0 | 1 * SERCOM_USART_CTRLA_DORD // Data Order LSB | SERCOM_USART_CTRLA_TXPO(0x1) // Transmit Data PA6 SERCOM0_PAD[2] | SERCOM_USART_CTRLA_RXPO(0x1) // Receive Data PA5 SERCOM0_PAD[1] | SERCOM_USART_CTRLA_SAMPR(0x0) // Sample Rate 16x | 1 * SERCOM_USART_CTRLA_RUNSTDBY // Run In Standby | 1 * SERCOM_USART_CTRLA_MODE_USART_INT_CLK; // Operating Mode, Internal Clock //while(SERCOM0->USART.SYNCBUSY.reg & SERCOM_USART_SYNCBUSY_ENABLE); // synchronization busy SERCOM0->USART.CTRLB.reg = 0 |SERCOM_USART_CTRLB_CHSIZE(0x0) // Character Size, 8 bits | 1 * SERCOM_USART_CTRLB_TXEN // TX Enable | 1 * SERCOM_USART_CTRLB_RXEN; // RX Enable while(SERCOM0->USART.SYNCBUSY.bit.CTRLB); // synchronization SERCOM0->USART.BAUD.reg = (uint16_t)BaudReg_S0; // Baudrate value SERCOM0->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; // SERCOM0 peripheral enabled while(SERCOM0->USART.SYNCBUSY.reg & SERCOM_USART_SYNCBUSY_ENABLE); // synchronization busy Добавляю такой же конфиг для другого UART - зависает на последней строке while(SERCOM2->USART.SYNCBUSY.reg & SERCOM_USART_SYNCBUSY_ENABLE); // synchronization busy Где я ошибаюсь ?
  3. Нужен совет по конфигурации и работе с UART в отладчике конфигурация для ATSAMD10 такая - вопросы такие - 1 - с конфигурацией все в порядке ? 2 - при выполнении SERCOM0->USART.DATA.reg = Data_OUT_8bit; не вижу в отладчике появления данных в DATA - так должно быть ? 3 - при выполнении SERCOM0->USART.DATA.reg = Data_OUT_8bit; флаг DRE должен меняться сам - но в отладчике остается прежним
  4. ответы не копирую - случайно так вышло за ответ - спасибо
  5. Те получается - что отладчик RW-only регистры не читает ? Хорошее дело такое получается ( Остальное упомянутое - настраивал, кроме DIR - но в примере с micrichipdevelopers.com для вывода сигнала с генератора на пин этого не было
  6. Все это происходит при начальном конфигурировании порта после подачи питания. Соответсвенно - тактирование и все прочее стоят по умолчанию. ATMEL-ICE должен себя так вести ? У меня просто были прецеденты такого рода с некоторыми AVR.
  7. Пытаюсь вывести сигнал с генератора на пин. В отладчике ATMEL-ICE содержимое регистра остается без изменений - везде нули. Пробовал варианты - ********************************************************************************************************************* PORT->Group[0].WRCONFIG.reg = 0 // GENERIC_CLOCK_GENERATOR_MAIN Control Output | 1 * PORT_WRCONFIG_HWSEL | 1 * PORT_WRCONFIG_WRPINCFG | 1 * PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_PMUX(7) // Peripheral Function H selected (GCLK_IO[1]) | 1 * PORT_WRCONFIG_PMUXEN | PORT_WRCONFIG_PINMASK((uint16_t)(PORT_PA22)) // PA22 ; ********************************************************************************************************************* PORT->Group[0].WRCONFIG.bit.HWSEL = 1; /* Pin# (22) - falls in the upper half of the 32-pin PORT group */ PORT->Group[0].WRCONFIG.bit.WRPINCFG = 1; /* Update PINCFGy registers for all pins selected */ PORT->Group[0].WRCONFIG.bit.WRPMUX = 1; /* Update PMUXn registers for all pins selected */ PORT->Group[0].WRCONFIG.bit.PMUX = 7; /* Peripheral Function H selected (GCLK_IO[0]) */ PORT->Group[0].WRCONFIG.bit.PMUXEN = 1; /* Enable peripheral Multiplexer */ PORT->Group[0].WRCONFIG.bit.PINMASK = (uint16_t)(PORT_PA22); /* Select the pin(s) to be configured */ *********************************************************************************************************************
×
×
  • Создать...