Ahoj, nehrajete si někdo s tímto MCU? Chtěl bych na něm zprovoznit seriovou komunikaci, ale nejde mi vyvolat přerušení od příjmu znaku. Pokud povolím přerušení od odeslání znaku tak mi program někam odskočí a už se nerozjede…
/* Map peripheral pins */
asm("di");
SYSKEY = 0x0;
SYSKEY = 0xAA996655;
SYSKEY = 0x556699AA;
RPF1R = 0x0001; // configure the output U3TX to pin RF1
U3RXR = 0x0100; // configure the input U3RX to pin RF0
SYSKEY = 0x0;
UARTConfigure(UART3, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetLineControl(UART3, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
UARTSetFifoMode(UART3, UART_INTERRUPT_ON_RX_NOT_EMPTY);
UARTSetDataRate(UART3, GetPeripheralClock(), DESIRED_BAUDRATE*2);
UARTEnable(UART3, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
// Configure UART3 RX Interrupt
INTEnable(INT_SOURCE_UART_RX(UART3), INT_ENABLED);
INTSetVectorPriority(INT_VECTOR_UART(UART3), INT_PRIORITY_LEVEL_2);
INTSetVectorSubPriority(INT_VECTOR_UART(UART3), INT_SUB_PRIORITY_LEVEL_0);
asm("ei");
void __ISR(_UART_3_VECTOR, IPL0) IntUart3Handler(){
if(IFS1bits.U3RXIF){ //prijaty seriovy znak
IFS1CLR = _IFS1_U3RXIF_MASK; //smazani priznaku prijmu
}
else{
if(IFS2bits.U3TXIF){
IFS2CLR = _IFS2_U3TXIF_MASK;}
}
pokud by někdo věděl kde dělám chybu…slibuju, že už se nikdy nebudu pouštět do programování a půjdu se věnovat jen krásným ženám
administrator: přejmenováno z "PIC32MX350F512H"