Перейти к содержанию
    

AD74111 & MSP430F149

Доброго времени суток.

 

Столкнулся вот с какой проблемой.Необходимо работатъ с AD74111 , но "control register" не зарежается.

 

Работаю по фронту DFS.

 

Схема стоитъ в режим Mixed Mode.Проц. MSP430F149 clock8MHz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Соберитесь с мыслями и изложите ваши проблемы полно и доступно для восприятия их другими пользователями форума. Сопроводите свои пояснения схемой и исходными кодами, если они у вас есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе утро!

 

проблем такой:

 

AD74111 стоитъ в режим "mixed mode" работаетъ как мастер. Генерируетъ "clock" и "DFS".Между первой и вторий "DFS" нада заредитъ "control register" така говоритъ data sheet, но не получается. Работаю по "interrupt SPI". Можно времени на хватаетъ между двумя "DFS"?

 

ето код:

 

;--------------------------------------------------------------------------
Init_Sig_Del                                                    ;Inicializira SigmaDelta
;--------------------------------------------------------------------------
          bic.b  #BIT2,&P3OUT          ;Din Low
                    
          bic.b  #BIT7,&P6OUT          ;Reset LOW
          nop
                   
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          call   #wait_100ms
          call   #wait_100ms
          call   #wait_100ms
          bis.b  #BIT7,&P6OUT          ;Reset High
;--------------------------------------------------------------------------
          RET
;--------------------------------------------------------------------------
Setup_SPI0_Slave
;--------------------------------------------------------------------------
SetupP3   bis.b   #00Eh,&P3SEL         ; P3.1,2,3 SPI option select

SetupSPI0 bis.b   #SWRST,&U0CTL 
          mov.b   #CHAR+SYNC,&U0CTL    ; 8-bit, SPI, Slave
          bis.b   #STC,&U0TCTL         ; Polarity, UCLK, 3-wire
          bis.b   #USPIE0,&ME1         ; Module enable
          bic.b   #SWRST,&U0CTL        ; SPI enable
         ;bis.b    #URXIE0,&IE1          ; Recieve interrupt enable
;--------------------------------------------------------------------------
          mov.b  #00h,&P1IFG           ;Izchistwa flagovete na prekyswaniq
          bic.b  #BIT0,&P1IES
          bis.b  #BIT0,&P1IE           ;Razre[awa prekyswane ot DFS
;--------------------------------------------------------------------------
          RET
;--------------------------------------------------------------------------
PORT1_EXT_INT                           :Control byte
;--------------------------------------------------------------------------
          mov.b   #098h,&TXBUF0                    
TX11      bit.b   #UTXIFG0,&IFG1       ; USART0 TX buffer ready?
          jz      TX11                 ; Jump is TX buffer not ready
                    
          mov.b   #001h,&TXBUF0
TX22      bit.b   #UTXIFG0,&IFG1       ; USART0 TX buffer ready?
          jz      TX22

          bic.b   #BIT0,&P1IE          ;Zabranqwa prekyswane ot DFS
                    
         ;bis.b   #BIT7,&P2OUT
         ;bic.b   #BIT7,&P2OUT

end_int   RETI

Изменено пользователем rezident
Оформление цитаты исходника.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После беглого взгляда по datasheet AD74111 и вашему коду имеются такие замечания.

Во-первых, где схема подключения? Снова на телепатию рассчитываете? :(

Во-вторых,

1. Инициализировать модуль SPI нужно до того, как "отпустили" RESET AD74111 в состояние HIGH.

2. Инициализация модуля SPI у вас реализована некорректно. Бит SWRST нужно сбросить только после инициализации всех регистров SPI. А у вас он сбрасывается сразу же после установки. См. примечание в разделе 14.2.1USART Initialization and Reset в документе MSP430x1xx Family User's Guide.

2. При инициализации пинов, выполняющих функции SPI, нужно проинициализировать как минимум еще и регистр P3DIR, а не только лишь один P3SEL.

3. Из текста не совсем ясно, используете ли вы прерывания от модуля SPI? Вроде прерывание разрешено, но обработчика по соответствующему вектору в вашем коде нет. Следует использовать именно прерывания от SPI-приемника, а не прерывания от PORT1, к которому, по всей видимости, у вас и подключен сигнал DFS. Используйте SPI в 4-х проводном, а не в 3-х проводном режиме, подключив сигнал DFS к пину SSEL.

 

Если приведете схему подключения и более полный код, то может еще какие мысли возникнут.

 

Ну и оформляйте свой исходный код в соответствии с Правилами форума, используя для оформления тэги [ code ] и [ codebox ]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спосиба для ответ !

 

схема заработало.Нужна фреймовая синхронизация.В 4-х проводном все нормалъно.

Изменено пользователем rezident
Нарушение п.3.4 Правил форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...