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

 
 
> Готовность SPI, как определить?
777777
сообщение May 20 2008, 08:00
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Как определить, что в SPDR можно писать очередной байт? SPIF устанавливается после передачи, но после обработки сбрасывается, и при включении там 0. А есть ли какой бит, по которому можно определить, что передача в данный момент не идет? Т.е. который устанавливается сразу после записи в SPDR?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Qwertty
сообщение Nov 13 2008, 16:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Отпишусь тут. Сегодня помучал SPI. Узнал много нового smile.gif
Не ждать готовности SPI можно.
Код
void    SpiMasterTx(uint8_t data)
{
do
  {
   SPDR = data;
  }
  while(SPSR & (1<<WCOL));
}

Такая конструкция оказалась вполне работоспособной. То что писал Maik-vs в 4 сообщении этой темы не подтвердилось - данные в SPDR не портятся. Симулятор студии и реальный осциллограф также это подтверждают.
Ждать приходится только при чтении:
Код
uint8_t    SpiMasterTxRx(uint8_t data)
{
    do
        {
        SPDR = data;
        }
        while(SPSR & (1<<WCOL));
    while(!(SPSR & (1<<SPIF)));
    return SPDR;
}

Оказывается WCOL очень полезный флаг....
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Nov 13 2008, 19:45
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(Qwertty @ Nov 13 2008, 19:47) *
Отпишусь тут. Сегодня помучал SPI. Узнал много нового smile.gif
Не ждать готовности SPI можно.
Код
void    SpiMasterTx(uint8_t data)
{
do
  {
   SPDR = data;
  }
  while(SPSR & (1<<WCOL));
}

Такая конструкция оказалась вполне работоспособной. То что писал Maik-vs в 4 сообщении этой темы не подтвердилось - данные в SPDR не портятся. Симулятор студии и реальный осциллограф также это подтверждают.

М-да. Оказывается, "while" теперь переводится "не ждать"... lol.gif
Где я писал, что портятся данные в SPDR? Они НЕ ПЕРЕДАЮТСЯ, если запись в SPDR произошла в течение передачи. Это коллизия называется. А Вы фигачите байт в SPDR пока передача не закончится и с нею коллизия стало быть тоже. Хотя в 6-м посте пеклись, как бы "записать SPDR и продолжить заниматься другими делами." wacko.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 777777   Готовность SPI   May 20 2008, 08:00
- - Dog Pawlowa   Цитата(777777 @ May 20 2008, 11:00) Как о...   May 20 2008, 08:12
- - singlskv   Цитата(777777 @ May 20 2008, 12:00) Как о...   May 20 2008, 08:23
- - Maik-vs   Цитата(777777 @ May 20 2008, 12:00) Как о...   May 20 2008, 09:38
|- - 777777   Цитата(Maik-vs @ May 20 2008, 13:38)...   May 20 2008, 10:45
|- - Maik-vs   Цитата(777777 @ May 20 2008, 14:45) Вот я...   May 20 2008, 13:01
|- - =GM=   Цитата(777777 @ May 20 2008, 09:45) Похож...   May 20 2008, 13:41
|- - singlskv   Цитата(=GM= @ May 20 2008, 17:41) А по-мо...   May 20 2008, 16:26
||- - =GM=   Цитата(singlskv @ May 20 2008, 15:26) кон...   May 20 2008, 16:55
||- - singlskv   Цитата(=GM= @ May 20 2008, 20:55) Я и так...   May 20 2008, 17:29
||- - Qwertty   Цитата(singlskv @ May 20 2008, 21:29) Код...   May 20 2008, 19:36
||- - singlskv   Цитата(Qwertty @ May 20 2008, 23:36) Так ...   May 20 2008, 20:04
|||- - Qwertty   Цитата(singlskv @ May 21 2008, 00:04) А в...   May 20 2008, 21:50
|||- - singlskv   Цитата(Qwertty @ May 21 2008, 01:50) Про ...   May 20 2008, 21:59
||- - =GM=   Цитата(Qwertty @ May 20 2008, 18:36) Я де...   May 21 2008, 12:00
||- - =GM=   Цитата(Qwertty @ May 20 2008, 18:36) Я де...   May 22 2008, 17:08
||- - singlskv   Цитата(=GM= @ May 22 2008, 21:08) Подсказ...   May 22 2008, 21:53
||- - =GM=   Цитата(singlskv @ May 22 2008, 20:53) Пов...   May 22 2008, 23:09
||- - singlskv   Цитата(=GM= @ May 23 2008, 03:09) Спасибо...   May 23 2008, 18:46
||- - defunct   Цитата(singlskv @ May 23 2008, 21:46) Ну ...   May 23 2008, 19:15
|||- - singlskv   Цитата(defunct @ May 23 2008, 23:15) Что ...   May 23 2008, 19:34
|||- - defunct   Цитата(singlskv @ May 23 2008, 22:34) Ну ...   May 23 2008, 22:24
||- - =GM=   Цитата(singlskv @ May 23 2008, 17:46) Для...   May 24 2008, 00:25
|- - Maik-vs   Цитата(=GM= @ May 20 2008, 17:41) Откуда ...   May 21 2008, 12:49
- - defunct   SPI генерит прерывание, сигнализирующее о том, что...   May 20 2008, 09:57
- - Qwertty   А ответы нужны?   May 20 2008, 10:59
- - ILYAUL   Не очень понял зачем SREG сохранять   May 22 2008, 17:19
|- - =GM=   Команда cpi портит флаги в прерывании.   May 22 2008, 21:29
- - Qwertty   Цитата(Maik-vs @ Nov 13 2008, 22:45)...   Nov 13 2008, 21:16


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:29
Рейтинг@Mail.ru


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