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

 
 
> ad7730, не могу прочитать..
shuric80
сообщение Apr 15 2009, 05:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



Здравствуйте. кто нибудь сталкивался с такой проблемой...при попытки прочитать регистры состояния ad7730 +AT91sam7s256 . выдает на все запросы-- 0xFFFF. Осцилографом проверял , данные приходят на АЦП-на выходе. проскакивают импульсы, очень похоже на нагрузке как емкостни. (эспоненциалные). длина соединительных поводов 20 см. частота тактирования 500 кГц.питание АЦП 5в(и аналоговой и цифровой части). микроконтроллера 3.3 В. сигнал CS снимал так и МК так и на землю вешал. POL- вешал и на землю и на питание -тоже самое.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shuric80
сообщение Apr 28 2009, 07:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



по даташиту чтобы просмотреть содержимое регистра данных нужно послать его адрес 0x12- . ??? выдает данные. повторяющиеся. вроде буффер выходной на АЦП или на spi -неочищается и выдает одно и тоже..
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 29 2009, 12:54
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Для начала: для обращения к регистрам у меня написан такой файл (не нашел как сюда загрузить файл, поэтому втыкаю его в текст):
CODE
//
// Чтение/запись по SPI
//

.global ReadStatus

ReadStatus: ldi r18, 0x10

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f

ret

// Data

.global ReadData

ReadData: ldi r18, 0x11

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

/* mov r25, r1 // 3

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 2

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r23, 0x0f // 1

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r22, 0x0f // 0
*/
out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r25, 0x0f // 2

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 1

subi r25, 0x80

ret

// Mode

.global ReadMode, WriteMode

ReadMode: ldi r18, 0x12

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r25, 0x0f

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f

ret

WriteMode: ldi r18, 0x02

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r25
sbis 0x0e, 7
rjmp .-4

out 0x0f, r24
sbis 0x0e, 7
rjmp .-4

ret

// Filter

.global ReadFilter, WriteFilter

ReadFilter: ldi r18, 0x13

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

mov r25, r1 // 3

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 2

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r23, 0x0f // 1

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r22, 0x0f // 0

ret

WriteFilter:ldi r18, 0x03

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r24
sbis 0x0e, 7
rjmp .-4

out 0x0f, r23
sbis 0x0e, 7
rjmp .-4

out 0x0f, r22
sbis 0x0e, 7
rjmp .-4


ret

// DAC

.global ReadDAC, WriteDAC

ReadDAC: ldi r18, 0x14

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 2

ret

WriteDAC: ldi r18, 0x04

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r24
sbis 0x0e, 7
rjmp .-4

ret

// Offset

.global ReadOffset, WriteOffset

ReadOffset: ldi r18, 0x15

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

mov r25, r1 // 3

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 2

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r23, 0x0f // 1

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r22, 0x0f // 0

ret

WriteOffset:ldi r18, 0x05

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r24
sbis 0x0e, 7
rjmp .-4

out 0x0f, r23
sbis 0x0e, 7
rjmp .-4

out 0x0f, r22
sbis 0x0e, 7
rjmp .-4


ret

// Gain

.global ReadGain, WriteGain

ReadGain: ldi r18, 0x16

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

mov r25, r1 // 3

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r24, 0x0f // 2

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r23, 0x0f // 1

out 0x0f, r1
sbis 0x0e, 7
rjmp .-4
in r22, 0x0f // 0

ret

WriteGain: ldi r18, 0x06

out 0x0f, r18
sbis 0x0e, 7
rjmp .-4

out 0x0f, r24
sbis 0x0e, 7
rjmp .-4

out 0x0f, r23
sbis 0x0e, 7
rjmp .-4

out 0x0f, r22
sbis 0x0e, 7
rjmp .-4


ret[/code]
Прототипы в h-файле:
[code]// AdcComm.h

uint8_t ReadStatus();

#define NOREF 0x10 // No reference voltage
#define STBY 0x20 // Standby mode
#define STDY 0x40 // Steady
#define RDY 0x80 // Ready

/////////////////////////////////////////////////////////////////////////////

//long ReadData();
int ReadData();

/////////////////////////////////////////////////////////////////////////////

int ReadMode();
void WriteMode(int);

#define BO 0x0004 // BurnoutCurrent
#define CLKDIS 0x0008 // Master clock disable
#define RANGE10 0x0000 // Input range
#define RANGE20 0x0010
#define RANGE40 0x0020
#define RANGE80 0x0030
#define HIREF 0x0080 // High reference (5V)
#define WL 0x0100 // Word length (1-24 bit)
#define DO 9 // Digital output bits position
#define DEN 0x0800 // Digital output enable
#define UNI 0x1000 // 1 - unipolar
#define MD_IDLE 0x0000 // Idle mode
#define MD_CC 0x2000 // Continuous conversion
#define MD_SC 0x4000 // Single conversion
#define MD_STBY 0x6000 // Standby
#define MD_IC0 0x8000 // Internal zero-scale calibration
#define MD_ICF 0xa000 // Internal full-scale calibration
#define MD_SC0 0xc000 // System zero-scale calibration
#define MD_SCF 0xe000 // System full-scale calibration

/////////////////////////////////////////////////////////////////////////////

long ReadFilter();
void WriteFilter(long);

#define CHOP 0x000010 // Chop enable
#define AC 0x000020 // AC excitation
#define FAST 0x000100 // FASTStep mode
#define SKIP 0x000200 // FIR filter skip

/////////////////////////////////////////////////////////////////////////////

uint8_t ReadDAC();
void WriteDAC(uint8_t);

long ReadOffset();
void WriteOffset(long);

long ReadGain();
void WriteGain(long);

Схема примерно такая:
Прикрепленное изображение



CS у меня постоянно выбран, SPI программируется так:
SPCR = _BV(SPE) | _BV(MSTR) | 0x0;
Дальнейшая работа такая:
WriteFilter((1791L<<12)|CHOP|AC|15); // 57 Гц (1791), CHOP, AC, задержка 15
WriteDAC(ReadEE(DAC_EE));
WriteOffset(ReadEE4(OFFSET_EE));
WriteGain(ReadEE4(GAIN_EE));
WriteMode(MD_CC|REF|BO|Range); // запуск АЦП
ReadEE - это считывание калибровок и прочей фигни из EEPROM
После этого в прерывании считываются значения путем обращения ReadData()
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- shuric80   ad7730   Apr 15 2009, 05:42
- - Евгений Германович   Цитата(shuric80 @ Apr 15 2009, 09:42) Здр...   Apr 15 2009, 08:00
- - shuric80   сейчас я запитал цифровую часть 3.3 вольта. аналог...   Apr 15 2009, 08:27
- - Herz   А как SPI настроен? Изложенному на стр. 35 - 36 да...   Apr 15 2009, 11:25
- - shuric80   да. сооотвествует. пробывал пример алгоритма пред...   Apr 15 2009, 11:49
- - xemul   Проверьте состояние CS' (д.б. 0) и RESET' ...   Apr 15 2009, 11:56
- - shuric80   reset "1"-заведен на +питания. cs-снача...   Apr 15 2009, 12:32
- - Евгений Германович   Попробуйте отсоединить вых данных от ацп и посадит...   Apr 15 2009, 15:28
- - shuric80   провод вешал на землю и на питание-выдавало (0х00 ...   Apr 16 2009, 05:43
|- - Tanya   Цитата(shuric80 @ Apr 16 2009, 09:43) на ...   Apr 16 2009, 12:31
- - Евгений Германович   А может вы команды неправильно подаете? Вы разводк...   Apr 16 2009, 12:28
- - shuric80   постоянная присутсвует, и иногда дергается.точно н...   Apr 17 2009, 05:40
|- - Евгений Германович   Цитата(shuric80 @ Apr 17 2009, 09:40) пос...   Apr 17 2009, 06:59
- - shuric80   подключил другое ацп с spi...тоже самое. значит ош...   Apr 17 2009, 11:52
- - shuric80   опять подскажите. контроллер настроил, spi работае...   Apr 23 2009, 07:09
- - Herz   Так ведь запись и чтение в SPI выполняются одновре...   Apr 23 2009, 07:32
- - shuric80   сейчас кидаю коды чтения регистров, из даташита( 0...   Apr 23 2009, 07:42
- - shuric80   так тоже не получается....что-то идет. а что нинаю...   Apr 23 2009, 08:45
- - Herz   Цитата(shuric80 @ Apr 23 2009, 09:42) сей...   Apr 23 2009, 11:47
- - Евгений Германович   Я извиняюсь но где вы обнаружили,что это SPI,я для...   Apr 23 2009, 12:09
- - shuric80   не очень уверен. я сигнал cs-от ноги отдельно выв...   Apr 23 2009, 12:48
- - Евгений Германович   На другое-это другого типа?   Apr 23 2009, 13:00
- - shuric80   попала из запасов mcp3204 (простенькая ацп с спи) ...   Apr 23 2009, 13:07
- - shuric80   Herz, большое спсибо за пример. завтра попробую н...   Apr 23 2009, 14:17
- - shuric80   не работает. выдает код какой то один и тот же. к...   Apr 24 2009, 11:08
|- - Herz   Цитата(shuric80 @ Apr 24 2009, 13:08) не ...   Apr 24 2009, 12:38
- - shuric80   частота тактовых импульсов spi сейчас стоит 1 МГц....   Apr 24 2009, 13:40
|- - Herz   Цитата(shuric80 @ Apr 24 2009, 15:40) час...   Apr 24 2009, 15:41
- - shuric80   SPI аппаратный. Сигнал-СS отдельно дергаю. а какую...   Apr 27 2009, 05:21
|- - 777777   Да, еще при старте проц делает ему программный сбр...   Apr 29 2009, 14:29
- - sptes   Всем привет, я пишу на mikro C for AVR. Не использ...   Jul 2 2014, 07:18


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

 


RSS Текстовая версия Сейчас: 16th August 2025 - 07:19
Рейтинг@Mail.ru


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