|
Обмен по SPI, ad5302 |
|
|
|
Mar 27 2009, 10:57
|

Местный
  
Группа: Участник
Сообщений: 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
--------------------
|
|
|
|
|
 |
Ответов
(1 - 9)
|
Mar 27 2009, 11:51
|

Гуру
     
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Mar 29 2009, 08:46
|

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

|
установка ног есть: Код SETBIT(DDR_SCLK, PIN_SCLK); SETBIT(PORT_SCLK, PIN_SCLK);
SETBIT(DDR_MOSI, PIN_MOSI); SETBIT(PORT_MOSI, PIN_MOSI);
SETBIT(DDR_SYNC, PIN_SYNC); SETBIT(PORT_SYNC, PIN_SYNC); программирование через SPI, но программатор отключаю физически.
--------------------
|
|
|
|
|
Mar 30 2009, 02:49
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(Hellper @ Mar 27 2009, 14:47)  LDAC, вроде, нужен для установки одновременно значений на выходе. он у меня в высокоимпедансном состоянии. Цитата(ANALOG DEVICES) When LDAC is high, the DAC register is latched and the input register may change state without affecting the contents of the DAC register. However, when LDAC is brought low, the DAC register becomes transparent and the contents of the input regis- ter are transferred to it. LDAC - на землю!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|