Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Буферы приема/передачи данных АЦП */
- uint32_t ADC_TX_BUF;
- uint32_t ADC_RX_BUF;
- /* Флаги завершения операций */
- bool tx_cmpl = false;
- bool rx_cmpl = false;
- /* Количество тактов в циклах записи/чтения данных в/из АЦП */
- #define WR_TICKS_COUNT 24
- #define RD_TICKS_COUNT 24
- /* Счетчик тактов */
- uint8_t ticks = 0;
- void Timer3_IRQHandler(void) {
- ticks++;
- /* ЗАПИСЬ */
- if(TIMER_GetITStatus(MDR_TIMER3, TIMER_STATUS_CNT_ARR) == SET) { /* NEGEDGE REF */
- TIMER_ClearFlag(MDR_TIMER3, TIMER_STATUS_CNT_ARR);
- /* SDATA - PB10 */
- PORT_Write(MDR_PORTB, ((ADC_TX_BUF >> 21) & SDATA) | (MDR_PORTB->RXTX & ~SDATA));
- ADC_TX_BUF = ADC_TX_BUF << 1;
- if(ticks == WR_TICKS_COUNT) {
- ticks = 0;
- tx_cmpl = true;
- }
- }
- /* ЧТЕНИЕ */
- else if(TIMER_GetITStatus(MDR_TIMER3, TIMER_STATUS_CCR_REF_CH3) == SET) { /* POSEDGE REF */
- TIMER_ClearFlag(MDR_TIMER3, TIMER_STATUS_CCR_REF_CH3);
- ADC_RX_BUF |= (uint32_t)PORT_ReadInputDataBit(MDR_PORTB, SDATA);
- ADC_RX_BUF = ADC_RX_BUF << 1;
- if(ticks == RD_TICKS_COUNT) {
- ticks = 0;
- rx_cmpl = true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement