реклама на сайте
подробности

 
 
> Что за хрень с TWI в SAM7X?
InsolentS
сообщение Dec 24 2007, 16:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



второй день мучаю - ни в какую. Регистр TWI_SR всегда содержит значение 0x00000008 что бы не происходило, хотя в даташите 3ий бит вообще определён как резервный!! такое чувство, что-то перепутано с адресами регистров и битов в этих регистрах. Компилятор RV, проц SAM7X256, надо записать 2 байта в потенциометр AD5241, вот код:
Код
  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));


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 06:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016