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

 
 
> MSP430 + AD5422
_Toxa_
сообщение Oct 12 2010, 18:33
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 16-08-07
Пользователь №: 29 832



Господа знатоки, просьба поделиться опытом, если кто навешивал AD5422 на MSPшку.
Ситуация тривиальная - 249й контроллер, по SPI на него навешана flash (напрямую) и 4 AD5422 (через мультиплексоры и ADuMки)
Все по пдфнику на ЦАП делаю - значения на выходе не хочет выставлять.

Схемы прилагаю (48ая нога контроллера проброшена на 3ю DA2 вручную - упустил из виду при составлении схемы)


Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 13 2010, 16:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Функция SPI_Send как-то странно у вас задумана и реализована. Не осиливаю ее смысл. Можете пояснить функцию каждого оператора?
1. Зачем устанавливать флаг UCB1TXIFG перед записью в буфер? Его вообще-то проверять перед записью нужно, чтобы убедится в готовности буфера. Или вы используете прерывания USCI? Но тогда для чего следующий цикл ожидания? И где обработчик прерывания?
2. Для чего предназначен вот этот while (((UC1IFG&UCB1TXIFG)>>3)==0); цикл ожидания? Я бы еще понял, если бы проверялся флаг готовности приемника. Но флаг готовности передатчика сообщает лишь о том, что готов буфер передатчика. Но он вовсе не означает, что передача/транзакция уже завершилась. К тому же зачем нужен сдвиг вправо при проверке условия в этом цикле, если сравнение с нулем и перед сравнением наложена битовая маска? Не осиливаю такую логику cranky.gif
3. Что делает функция SPI_WaitForComplete? Ожидает окончания занятости? Но флаг UCBBUSY сбрасывается, когда в линию выдается последний бит данных и транзакция еще не завершена. Конец транзакции нужно отслеживать по готовности буфера приемника, проверяя установку флага UCB1RXIFG. И не забывать сбрасывать его (флаг) программно перед началом передачи байта.
4. wdgRst(); это сброс WDT? Зачем он здесь и почему именно здесь? Вообще пока отключите WDT и не включайте до тех пор, пока не отладите всю программу без него!
Go to the top of the page
 
+Quote Post



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

 


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


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