Witam. Znowu problem z tym klockiem :-(
Chcę wykorzystać przerwania od USART`a, po odbiorze znaku i po wysłaniu. Jeśli włączę tylko przerwanie od odbioru, to wszystko działa. Jeśli natomiast włączę również od końca wysłania znaku, to wywoła mi przerwanie w momencie startu programu raz i koniec. Potem nic nie działa (brak przerwań). Poniżej przedstawiam fragment kodu ustalający parametry pracy USART i AIC. Co tu jest nie tak? Przy tym procku zaczynam już siwieć :-(
// Inicjowanie USART 1 US1_CR = US_RSTRX | US_RSTTX | US_RXDIS | US_TXDIS; US1_RCR = 0x00000000; US1_TCR = 0x00000000; US1_IDR = 0xFFFFFFFF; US1_IER = US0_IMR_RXRDY; // "Tak działa" US1_IER = US0_IMR_RXRDY | US0_IMR_ENDTX; // "Tak NIE działa"; US1_MR = US_CLKS_MCK | US_CHRL_8 | US_PAR_NO | US_NBSTOP_2 | US_CHMODE_NORMAL; US1_BRGR = PROCESSOR_CLOCK_FREQUENCY / (16 * US1_BaudRate); US1_TTGR = 0; US1_CR = US_TXEN | US_RXEN;
// Przerwanie od USART1 (PC) AIC_IDCR = 1 << US1_ID; AIC_SVR(US1_ID) = (unsigned)usart1_irq; AIC_SMR(US1_ID) = AIC_SRCTYPE_INT_EDGE_TRIGGERED; AIC_ICCR = 1 << US1_ID; AIC_IECR = 1 << US1_ID;
Pozdrawiam ELP