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

 
 
> AD7730->atmega32, читает все регистры,в них не пишет.
grek81
сообщение Sep 17 2013, 12:35
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 8-01-09
Пользователь №: 43 036



Добрый день. Мучаюсь с 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
             }


соответсвено считываю значение и передаю в порт. Может кто подскажет почему же данные для чтения принимаются,а данные на запись нет.
Вот еще, что забыл указать не могу увидеть частоту на кварце. Схема в приложении только, немного изменена и изменения указаны.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 03:12
Рейтинг@Mail.ru


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