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

AD7730->atmega32, читает все регистры,в них не пишет.

Добрый день. Мучаюсь с AD7730 ни как не получается залить данные и увидеть их изменения в регистрах. Читаются значения по умолчанию,а прописать ничего не могу. Протокол SPI роде как работает смотрел осцилографом все сигналы на мести и чистые. По сути AD7730 принимает команды на чтение и выдает данные. А команды на запись не принимает. Пробывал подвешивать входа на землю и на питание через резистор ничего не помогает.

codevision

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 1000.000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x51;
SPSR=0x00;

ADC_Reset();  

void ADC_Reset()   
{   
    CHIP_UNSELECT_AD7730_1;
    CHIP_SELECT_AD7730_1;  
    spi(0xFF);                  
    spi(0xFF);                  
    spi(0xFF);                  
    spi(0xFF);                     
    CHIP_UNSELECT_AD7730_1;  
} 



unsigned char AD7730_Read_ModeReg()
{

unsigned char mode[2];
//unsigned int iTmp;
CHIP_UNSELECT_AD7730_1;
CHIP_SELECT_AD7730_1;
delay_ms(10);
spi(0x12);// switch com to mode reg
mode[0]=spi(0xFF);//hi
mode[1]=spi(0xFF);//low
CHIP_UNSELECT_AD7730_1; 
//iTmp=iTmp<<8;
//iTmp=iTmp+mode[1];
PORTD.4=1; // вкл передачу RS485;
putchar(mode[0]);
delay_ms(1);
putchar(mode[1]);
delay_ms(1);
PORTD.4=0; // вкл передачу RS485;
//return iTmp;
}

void AD7730_Write_ModeReg(unsigned int iData)
{

unsigned char  mode[2];
mode[0] = (unsigned char) (iData>>8);
mode[1] = (unsigned char) (iData&0x00FF);
CHIP_SELECT_AD7730_1;
delay_us(2);
spi(0x02);// switch com to mode reg
spi(mode[0]);//
spi(mode[1]);//
CHIP_UNSELECT_AD7730_1;
delay_ms(1);
PORTD.4=1; // вкл передачу RS485;
putchar('o');
delay_ms(1);
putchar('k');
delay_ms(1);
PORTD.4=0; // вкл передачу RS485;
}




      if(getchar()==0x30)     // запись значения в флеш
             {
            AD7730_Read_ModeReg();
             
             }        
     
      if(getchar()==0x40)     // запись значения в флеш
             {
             AD7730_Write_ModeReg(0xB132);

             PORTD.4=1;// прием по RS485
             printf("good");
             delay_ms(4);
             PORTD.4=1;// прием по RS485
             }

 

соответсвено считываю значение и передаю в порт. Может кто подскажет почему же данные для чтения принимаются,а данные на запись нет.

Вот еще, что забыл указать не могу увидеть частоту на кварце. Схема в приложении только, немного изменена и изменения указаны.

post-43036-1379421042_thumb.jpg

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


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

Все работает, проблема в питании пока не разобрался почему, но почему садится напряжение.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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