![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
msreds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.5.2014 Репутация: нет Всего: нет |
Здравствуйте! Нужна помощь по SPI, не могу реализовать передачу хотя бы одного бита хоть ты тресни:( Работаю в AtmelStudio 6.1, МК Atmega328p 2шт....
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
без исходных кодов никто не поможет ... и немного не в той теме пост
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Если расскажите по подробней, томожно будет помочь.
|
|||
|
||||
msreds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.5.2014 Репутация: нет Всего: нет |
Toyamatokanava,
#include <pololu/3pi.h> #define SPI_PORTX PORTB #define SPI_DDRX DDRB #define SPI_MISO 4 #define SPI_MOSI 3 #define SPI_SCK 5 #define SPI_SS 2 void SPI_MasterInit(void) { /* Установка MOSI и SCK на вывод, все остальные на ввод */ DDRB = (1«DDB3)|(1«DDB5); /* Разрешение SPI в режиме мастера, установка скорости связи fck/16 */SPCR = (1«SPE)|(1«MSTR)|(1«SPR0); } void atata() { } void SPI_MasterTransmit(char cData) { /* Запуск передачи данных */ SPDR = cData; /* Ожидание завершения передачи данных */ while(!(SPSR & (1«SPIF))); } /*инициализация SPI модуля в режиме master*/ int main() { atata(); //SPI_MasterInit(); } из этого надо сделать рабочую передачу байта/бита/чего угодно Это сообщение отредактировал(а) msreds - 13.5.2014, 09:58 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Я использую следующий код:
Сессия выглядит следующим образом: spiOpen(); spiSend(); spiRecv(); ... ; spiClose(); |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Господа, а разве для SPI я не должен сам "махать" clock'ом, защёлкой и данными ?
Как-то доводилось работать с SPI через плату на PCI, которая тупо транслировала мои данные в SPI. Там мне нужно было делать как-то так:
Если этот ваш SPDR такой умный, что сам всё это делает, то тогда простите, что влез )) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
LeonidPr |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
не, сейчас не нужно махать. кидаете данные в регистр передачи, а дальше модуль SPI сам все разрулит. если прерывания настроены еще и обрабочик дернет, давай мол че там дальше?
![]() --------------------
pkunzip.zip |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Он не умный. Это всего лишь SPi Data Register.
![]() |
|||
|
||||
msreds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.5.2014 Репутация: нет Всего: нет |
bsa, что такое "&= ~" в 10 строке?
моя программа совсем не катит? мне в итоге надо нажать кнопку на одном устройстве, а работу должно начать другое)) |
|||
|
||||
Toyamatokanava |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
|
|||
|
||||
msreds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.5.2014 Репутация: нет Всего: нет |
передача ведь идёт через B3, почему его нет вообще?)
|
|||
|
||||
msreds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.5.2014 Репутация: нет Всего: нет |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
msreds, ты уверен, что у тебя проблема именно в spi, а не в устройствах к нему подключенных. Осциллографом проверь.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |