Код
AT91C_BASE_PIOA->PIO_PDR=(1<<11)|(1<<10);
AT91C_BASE_PIOA->PIO_MDER=(1<<11)|(1<<10);
AT91C_BASE_PIOA->PIO_PPUDR=(1<<11)|(1<<10);
AT91C_BASE_PIOA->PIO_ASR=(1<<11)|(1<<10);
AT91F_TWI_CfgPMC();
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_SWRST); //сброс, так и не понял для чего он нужен
AT91C_BASE_TWI->TWI_CWGR=(1<<16)|(200<<8)|(200<<0); //МСК=47 МГц
AT91C_BASE_TWI->TWI_CR=AT91C_TWI_MSEN;
AT91C_BASE_TWI->TWI_MMR=(44<<16); // у потенциометра 7ми битный адрес 44
AT91C_BASE_TWI->TWI_THR=0x24; //Первый регистр пошёл
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_START);
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXRDY)); //А вот с TWI_SR какая-то хрень
AT91C_BASE_TWI->TWI_THR=0xFF; //Второй регистр пошёл
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXRDY));
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_STOP);
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXCOMP));
AT91C_BASE_PIOA->PIO_MDER=(1<<11)|(1<<10);
AT91C_BASE_PIOA->PIO_PPUDR=(1<<11)|(1<<10);
AT91C_BASE_PIOA->PIO_ASR=(1<<11)|(1<<10);
AT91F_TWI_CfgPMC();
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_SWRST); //сброс, так и не понял для чего он нужен
AT91C_BASE_TWI->TWI_CWGR=(1<<16)|(200<<8)|(200<<0); //МСК=47 МГц
AT91C_BASE_TWI->TWI_CR=AT91C_TWI_MSEN;
AT91C_BASE_TWI->TWI_MMR=(44<<16); // у потенциометра 7ми битный адрес 44
AT91C_BASE_TWI->TWI_THR=0x24; //Первый регистр пошёл
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_START);
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXRDY)); //А вот с TWI_SR какая-то хрень
AT91C_BASE_TWI->TWI_THR=0xFF; //Второй регистр пошёл
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXRDY));
AT91C_BASE_TWI->TWI_CR=(AT91C_TWI_STOP);
while(!(AT91C_BASE_TWI->TWI_SR&AT91C_TWI_TXCOMP));