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

 
 
> Обмен по 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
Палыч
сообщение Mar 27 2009, 11:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Hellper @ Mar 27 2009, 14:47) *
сброс осуществляется установкой значения в регистре ?
SETBIT(SPSR, SPIF); ???
Да, сброс - записью единицы в бит

PS. Поторопился с ответом... Для бита SPIF читаем в DS
Цитата
SPIF is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, the SPIF bit is cleared by first reading the SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR).
Go to the top of the page
 
+Quote Post



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

 


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


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