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

 
 
> Обмен по SPI, ad5302
Hellper
сообщение Mar 27 2009, 10:57
Сообщение #1


Местный
***

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



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

Инициализация SPI:
Код
void init_spi(void)
{
    SPCR = (0 << SPIE)|(1 << SPE)|(0 << DORD)|(1 << MSTR)|(0 << CPOL)|(1 << CPHA)|(1 << SPR1)|(1 << SPR0);
    SPSR=0x00;
}

Ф. пересылки:
Код
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))

void spi_master_transmit(uint8_t data)
{
    transfer = false;
    SPDR = data;
    while(!(SPSR & (1<<SPIF)))
;
}

void change_one(uint8_t value)
{
    uint8_t tmp1 = 0;
    uint8_t tmp2 = 0;
    CLEARBIT(PORT_SYNC, PIN_SYNC);
    tmp1 += (value >> 4);
    tmp2 = (value << 4);
    spi_master_transmit(tmp1);
    spi_master_transmit(tmp2);
    SETBIT(PORT_SYNC, PIN_SYNC);
}


помогите, а ?
Прикрепленные файлы
Прикрепленный файл  ad5302.pdf ( 207.89 килобайт ) Кол-во скачиваний: 27
 


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hellper
сообщение Mar 27 2009, 11:47
Сообщение #2


Местный
***

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



LDAC, вроде, нужен для установки одновременно значений на выходе.
он у меня в высокоимпедансном состоянии.
сброс осуществляется установкой значения в регистре ?
SETBIT(SPSR, SPIF); ???


--------------------
Go to the top of the page
 
+Quote Post



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

 


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


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