ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
653830
texnar (18.02.2016 17:04 - 19.02.2016 15:46, просмотров: 4902)
ATMEL ARM32 DAMD21 настройка UART Помогите пожалуйста разобраться с Atmel ARM32 SAMD21. Приобрел плату, Ардуину, просто как готовую плату. Какой-то не дружелюбный АРМ, особенно после Миландра. Не могу настроить Уарт через регистры, попытка первая: прерывание возникает, на ножке тишина. поппытка вторая: распотрошил ардуиновскую либу: один байт уходит и ... тишина. в прерывание не попадает. зависает. код инициализации, прерывание и основной цикл: это только верхушка айсберга. вся инициализация контроллера выполняется ардуиной void SERCOM1_Hadler() { PORT->Group[0].OUTTGL.reg=1<<Q; //tglpin if (SERCOM1->USART.INTFLAG.bit.RXC) { uint8_t data = (uint8_t)SERCOM1->USART.DATA.bit.DATA; } if (SERCOM1->USART.INTFLAG.bit.TXC) { SERCOM1->USART.INTFLAG.bit.TXC = 1; } } void uart_config() { GCLK->CLKCTRL.bit.ID = GCM_SERCOM1_CORE; GCLK->CLKCTRL.bit.GEN = GCLK_CLKCTRL_GEN_GCLK0; GCLK->CLKCTRL.bit.CLKEN = 1; while ( GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY ); PM->APBCMASK.reg |= PM_APBCMASK_SERCOM1; SERCOM1->USART.CTRLA.bit.MODE = 1;//internal clock SERCOM1->USART.CTRLA.bit.SAMPR = 0;//16 samples SERCOM1->USART.CTRLA.bit.TXPO = 1;//PA18 txpad2 SERCOM1->USART.CTRLA.bit.RXPO = 0;//PA16 rxpad0 SERCOM1->USART.CTRLA.bit.FORM = 0;//usart frame SERCOM1->USART.CTRLA.bit.DORD = 1;//lsb_first SERCOM1->USART.CTRLB.bit.TXEN = 1; SERCOM1->USART.CTRLB.bit.RXEN = 1; SERCOM1->USART.INTENSET.bit.RXC = 1; SERCOM1->USART.INTENSET.bit.TXC = 1; SERCOM1->USART.BAUD.reg = 65535.0f * ( 1.0f - 16.0f * (float)(baudrate) / (float)(SystemCoreClock)); SERCOM1->USART.CTRLA.bit.ENABLE = 1; while(SERCOM1->USART.SYNCBUSY.bit.ENABLE); NVIC_EnableIRQ(SERCOM1_IRQn); NVIC_SetPriority (SERCOM1_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority */ } в основном цикле с интервалом 100мс выполняется одна команда SERCOM1->USART.DATA.bit.DATA='U'; В результате зацикливаюсь в обработчике прерывания по умолчанию Dummy_Handler(). Но как и почему? Обработчик ведь существуют.