|
Готовность SPI, как определить? |
|
|
|
 |
Ответов
|
Nov 13 2008, 16:47
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Отпишусь тут. Сегодня помучал SPI. Узнал много нового  Не ждать готовности 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 очень полезный флаг....
|
|
|
|
|
Nov 13 2008, 19:45
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(Qwertty @ Nov 13 2008, 19:47)  Отпишусь тут. Сегодня помучал SPI. Узнал много нового  Не ждать готовности SPI можно. Код void SpiMasterTx(uint8_t data) { do { SPDR = data; } while(SPSR & (1<<WCOL)); } Такая конструкция оказалась вполне работоспособной. То что писал Maik-vs в 4 сообщении этой темы не подтвердилось - данные в SPDR не портятся. Симулятор студии и реальный осциллограф также это подтверждают. М-да. Оказывается, "while" теперь переводится "не ждать"... Где я писал, что портятся данные в SPDR? Они НЕ ПЕРЕДАЮТСЯ, если запись в SPDR произошла в течение передачи. Это коллизия называется. А Вы фигачите байт в SPDR пока передача не закончится и с нею коллизия стало быть тоже. Хотя в 6-м посте пеклись, как бы "записать SPDR и продолжить заниматься другими делами."
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|