[an error occurred while processing this directive]
программа для AD7705
(«Телесистемы»: Конференция «Аналоговая схемотехника»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Alex39 25 апреля 2006 г. 18:46

Подскажите пожайлуста. Работаю с AD7705, схема почти то же что и Evaluation Board с www.analog.com. Их программа с моей платой работает. Пытаюсь написать свою не получается. Пишу на VC++ с использованием драйвера inpout32.dll (Out32(888,123)- посылка в порт десятичного числа ;status = Inp32(889)-чтение). RESET-3, DOUT-13, DIN-2, CS-4, SCLK-5, DRDY-10 нога LPT порта.
Вот текст программы.
#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "h.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "windows.h"

int datadec,i,j,data[8],s=0,datacom[8],sclk[15],datacomdec[8],status,d,dataread[8];
double e,a=0,b[8],c;

void write(void) //функция записи
{for (i =0;i<8;i++)
datacom[i]=0;//обнуляем datacom
for (j =7;j>-1;j--)
{datacom[0]=data[j];
datacomdec[j]=sclk[j]+128+2+datacom[0]*1+datacom[1]*2+datacom[2]*4+datacom[3]*8+datacom[4]*16+datacom[5]*32+datacom[6]*64+datacom[7]*128;
Sleep(0);//задержка
Out32(888, datacomdec[j]);//посылаем в порт дес число= тактовый импульс+питание (128)+reset off(2)+число //из data}}

void read(void)//функция чтения
{Out32(888,134);// 2-reset + 4-cs + 128 -5v
for(i=0;i<15;i++)
{Out32(888,sclk[i]+128+2);
dataread[i] = Inp32(889);//чтение из status
printf("%d \n",dataread[i]);}}

void main()
{ status = Inp32(889);//чтение из status
printf("read from status %d \n",status);

Out32(888,134);//2-reset 4-cs 128 -9v
sclk[0]=0;//тактовые импульсы
sclk[1]=8;sclk[2]=0;sclk[3]=8;sclk[4]=0;sclk[5]=8;sclk[6]=0;sclk[7]=8;sclk[8]=0;sclk[9]=8;sclk[10]=0;sclk[11]=8;
sclk[12]=0;sclk[13]=8;sclk[14]=0;sclk[15]=8;

data[0]=0;//канал1, следующий clock регистр
data[1]=0;data[2]=0;data[3]=0;data[4]=0;data[5]=1;data[6]=0;data[7]=0;
write();

data[0]=0;//задаем частоты
data[1]=0;data[2]=1;data[3]=1;data[4]=0;data[5]=0;data[6]=0;data[7]=0;
write();

data[0]=0;//канал 1 , следующий setup регистр
data[1]=0;data[2]=0;data[3]=0;data[4]=1;data[5]=0;data[6]=0;data[7]=0;
write();

data[0]=0;// нормальная работа, однопорярные операции, Кусил=1
data[1]=0;data[2]=1;data[3]=0;data[4]=0;data[5]=0;data[6]=0;data[7]=0;
write();
status = Inp32(889);//чтение из status
printf("read from status %d \n",status);
…………………………………………………………………………………………………………………….
//чтение
Out32(888,134);//2-reset 4-cs 128 -9v
data[0]=0;//38h в коммуникационный регистр – читаем из дата регистра
data[1]=0;data[2]=0;data[3]=1;data[4]=1;data[5]=1;data[6]=0;data[7]=0;
write();
Sleep(10);
read();}

Ответ от микросхемы получаю только после двойного прогона инициализации (почему?), но прочитать из нее не получается.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru