Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Работа SPI в ATmega128

Отправлено leonopulos 18 декабря 2006 г. 09:36


вопрос в следующем.
мне надо сделать максимально быструй обмен по SPI.
при тактовой 8 МГц я его настраиваю на скорость 8/2=4МГц тактовая по SPI.
Судя по доке я должен затратить при передаче 1 байта 1/(4*8)=2 мксек. Однако получается где-то 5 мксек. это видно и по осциллу - там видно, что байт передаётся за 2 мксек + промежуток между передачами байтов 3 мксек. и по AVRSTUDIO тоже это видно. там перед передачей следующего байта прога стоит ждёт установки бита SPIF в SPSR где-то эти же 3 мксек. не могу понять откуда эта задержка берётся и как от неё избавиться.
вот по этим макросам передаётся каждый байт:
#define SPI_WAIT() \
do { \
while (!(SPSR & (1 << SPIF))); \
} while (0)

#define SPI_TX(x) \
do { \
EM_WAIT(); \
SPDR = x; \
} while (0)


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 123:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru