Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/28: Рейтинг темы: голосов - 28, средняя оценка - 4.68
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
1

Программный SPI

22.02.2014, 00:48. Просмотров 5709. Ответов 2
Метки нет (Все метки)

Здравствуйте. CVAVR ругается на строчку:
if(0x0001 & (addr_value>>(9-i))) PORT_SPI |= (1< <SDO); в фунуции set_resistance с ошибкой invotyd expression, что в ней не так?!

П.С. программка AD8400 должна управлять
Код
#include <mega16.h>
#include <delay.h>

#define PORT_SPI         PORTC/*назначения портов и сигналов программного SPI*/
#define DDR_SPI   DDRC
#define PIN_SPI   PINC
#define SDO               PORTC.0
#define CKL               PORTC.1
#define CS                 PORTC.2
#define SHDN             PORTC.3
#define RS                 PORTC.4

void init_SPI (void)//функция инициализации программного SPI
{
DDRC = 0xFF;
PORT_SPI |=  (1<<CS) | (1<<SHDN) | (1<<RS);//с лог. 1
PORT_SPI &= ~(1<<SDO);//и лог. 0
PORT_SPI &= ~(1<<CKL);//
}

void set_resistance (unsykned char addr, unsykned char value)//функция записи
{
unsykned char i;//переменная для цикла
unsykned int addr_value;//промежуточная переменная для вычисления управляющего слова

addr_value = ((unsykned int) (addr<<8)) | ((unsykned int) value);//формируем управляющее слово из двух бит адреса и байта сопротивления
PORT_SPI &= ~(1<<CS);//выбор микросхемы

for(i=0; i < 10; i++)//для 10 бит управляющего слова
{   if(0x0001 & (addr_value>>(9-i))) PORT_SPI |= (1< <SDO);//если бит-единица, то и выставляем единицу
else PORT_SPI &= ~(1<<SDO);//иначе - выставляем ноль
PORT_SPI |=  (1<<CKL);//фронт синхроимпульса
PORT_SPI &= ~(1<<CKL);//спад синхроимпульса
}
PORT_SPI |=  (1<<CS);//не выбираем микросхему
}
void main(void)
{

unsykned char q;//переменная для цикла  spi
init_SPI();//инициализируем программный SPI
PORTA=0x80;
DDRA=0xFF;
PORTB=0x03;
DDRB=0x2F;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
while (1)
{

for(q=0;q < 255; q++)
{
set_resistance(0x01, q);

q=0;

}
}
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 00:48
Ответы с готовыми решениями:

Программный SPI для PIC
объясните пожалуйста реализацию SPI-интерфейса(передача 16 бит) для простейшего pic(12 серия), в...

SPI -> 485->SPI
Есть необходимость переводить SPI на 485 интерфейс. Хотел бы уточнить, драйвер 485 сажать напрямую...

UART<->SPI
Всем привет! Для тестирование одного МК по протоколу SPI, решил по быстрому собрать &quot;конвертер&quot;...

Соединение по SPI?
Кто нибудь связывал два контроллера по SPI? Интересует именно работа контроллера как слэйва. Уже...

Использование SPI
Есть два контроллера. Нужно организовать обмен по SPI. Один контроллер в режиме MASTER, другой в...

2
SpySorp
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 38
22.02.2014, 01:07 2
(1< <SDO) что за запись такая?
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
22.02.2014, 01:21 3
SpySorp, Жесткий косяк=) Походу подсознательно пробегал глазами и не замечал. Спасибо.
0
22.02.2014, 01:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 01:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вопрос по SPI
Всем привет! Мучает такой вопрос. При передаче байта по SPI на каждый импульс тактового сигнала...

SPI at89s53
Нужно в микроконтроллер принять 2 байта из АЦП mcp3201. Пишу программу в Keil uVision5, при...

atmega spi
Итак, есть проект на Attiny2313 http://we.iosyitistromyss.ru/Lifelover/tcp-http-i-tinka.html. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.