Ahoj, začínám s MCU PIC32MX695F512H a mám problém s interaptem při odeslání znaku. Při debagingu jsem zjistil, že přerušení se vykoná, ale jakoby se mi program zacyklí ve funkci pro jeho obsluhu. To samé mi dělal i interapt od příjmu sériového znaku, ale vyřešil jsem to přečtením stavu a snulováním jeho flagu. Nevěděl by někdo proč mi ten stejný přístup nefunguje i u odesílání? Dík…posílám zdrojový kód
UARTConfigure(UART2, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetLineControl(UART2, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
UARTSetDataRate(UART2, GetPeripheralClock(), DESIRED_BAUDRATE);
UARTEnable(UART2, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
// Configure UART2 RX Interrupt
INTEnable(INT_U2RX, INT_ENABLED);
INTSetVectorPriority(INT_VECTOR_UART(UART2), INT_PRIORITY_LEVEL_6);
INTSetVectorSubPriority(INT_VECTOR_UART(UART2), INT_SUB_PRIORITY_LEVEL_0);
INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR); // configure for multi-vectored mode
INTEnableInterrupts(); // enable interrupts
void __ISR(_UART_2_VECTOR, IPL6SOFT) IntUart2Handler(){
if(mU2RXGetIntFlag()){
unsigned char znak = ReadUART2();
mU2RXClearIntFlag();
}
else{
if(mU2TXGetIntFlag()){
//zde by asi mela byt nejaka obsluha…
mU2TXClearIntFlag();
}
}
}
administrator: přejmenováno z "Interapt od odeslání znaku přes UART"