ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
337122 Топик полностью
Nihilist (26.06.2012 09:20, просмотров: 194) Snaky ответил rezident на Интересно, а куда вы еще не написали? :) Хоть бы кусочек кода привели для размышлений над проблемой.
Написал везде:) Если серьезно, то на русских форумах, спросить-то не у кого кроме Вас, ИМХО. Инициализация DMA. DMACTL0 = 0x16; // UCB1RXIFG trigger; DMA0CTL |= DMADT5 + DMADSTINCR + DMASRCINCR + DMADSTBYTE + DMASRCBYTE + DMAEN + DMAIE; DMACTL4 = DMARMWDIS; // Read-modify-write disable DMA0SA = (unsigned short)&UCB1RXBUF;// DMA0DA = (unsigned short)ptr_I2C_array; DMA0SZ = I2C_byte_number; //3 DMA0CTL |= DMAREQ; Прерывание от DMA #pragma vector=DMA_VECTOR __interrupt void DMA_ISR(void) { switch(__even_in_range(DMAIV,16)) { case 0: break; case 2: // DMA0IFG = DMA Channel 0 for(unsigned char a = 0; a < I2C_byte_number; a++) {TWIcmd = (TWIcmd << 8) + I2C_array[a];} FLAGS = I2C_FLAG_SET; // Set bit I2C, command has been received break; case 4: break; // DMA1IFG = DMA Channel 1 case 6: break; // DMA2IFG = DMA Channel 2 case 8: break; // DMA3IFG = DMA Channel 3 case 10: break; // DMA4IFG = DMA Channel 4 case 12: break; // DMA5IFG = DMA Channel 5 case 14: break; // DMA6IFG = DMA Channel 6 case 16: break; // DMA7IFG = DMA Channel 7 default: break; } }