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

 
 
> Проблема с SPI, зависает при обращении к SPDR
Alex Truhin
сообщение Oct 7 2010, 10:33
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 13-04-10
Пользователь №: 56 609



Atmega 128 и память AT45DB321, читаю статус памяти,
SELECT();
status = DF_SPI_RW(StatusReg);
status = DF_SPI_RW(0x00);
DESELECT();

static uint8_t DF_SPI_RW( uint8_t tx )
{
uint8_t rx;
SPDR = tx;
while(!(SPSR & 0x80));
rx = SPDR;
return rx;
}
при первом чтении все ОК, но при повторном чтении, на строке status = DF_SPI_RW(0x00);
программа зависает, т.е. SPSR не взводиться.
Возможно есть проблемы с памятью, но почему не взводится флаг SPSR? Ведь насколько я понимаю,
мастер устройству пофиг на реакцию слэйв устройства на SPI?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Oct 8 2010, 13:08
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



А можно поинтересоваться что у Вас с пином SS (используется или нет и как настроен - вход или выход) ?
Go to the top of the page
 
+Quote Post
V_G
сообщение Oct 8 2010, 14:47
Сообщение #3


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(alexeyv @ Oct 9 2010, 00:08) *
А можно поинтересоваться что у Вас с пином SS (используется или нет и как настроен - вход или выход) ?

Если вопрос по теме топика, то в мастер-режиме пин SS никак не задействован, его можно настраивать как угодно и манипулировать вручную. У меня на SPI сидят несколько устройств, для каждого вручную дергаю свой чипселект (он же SS)

Сообщение отредактировал V_G - Oct 8 2010, 14:48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 8 2010, 21:20
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(V_G @ Oct 8 2010, 17:47) *
Если вопрос по теме топика, то в мастер-режиме пин SS никак не задействован, его можно настраивать как угодно и манипулировать вручную.
Это не по теме топика (у автора он настроен на вывод), но для полноты картины: в мастер-режиме, будучи настроенным на ввод эта ножка используется:
Цитата
If SS is configured as an input, it must be held high to ensure Master SPI operation. If the SS pin is driven low by peripheral circuitry when the SPI is configured as a master with the SS pin defined as an input, the SPI system interprets this as another master selecting the SPI as a slave and starting to send data to it. To avoid bus contention, the SPI system takes the following actions:
1. The MSTR bit in SPCR is cleared and the SPI system becomes a slave. As a result of the SPI becoming a slave, the MOSI and SCK pins become inputs.
2. The SPIF flag in SPSR is set, and if the SPI interrupt is enabled, and the I-bit in SREG is set, the interrupt routine will be executed.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex Truhin   Проблема с SPI   Oct 7 2010, 10:33
- - aesok   Код настройки SPI. Функция DF_SPI_RW - это первая ...   Oct 7 2010, 10:53
- - Alex Truhin   Код настройки: static uint8_t df_GetStatus() { ...   Oct 7 2010, 15:17
|- - Lmx2315   прошу прощения если не на то ссылку даю и если нич...   Oct 7 2010, 17:55
|- - KSANDER   Цитата(Alex Truhin @ Oct 7 2010, 19:17) С...   Oct 8 2010, 07:44
|- - aesok   Как запрограмирован фьюз M103C? Как скомпилировала...   Oct 8 2010, 09:48
- - Alex Truhin   Цитата(KSANDER @ Oct 8 2010, 17:44) Эта с...   Oct 8 2010, 08:50
- - GDI   Ногу WP подтяните к питанию у АТ45. Можно просто с...   Oct 8 2010, 09:26
- - 777777   А не сбрасывает ли кто SPE случайно? Может просто ...   Oct 8 2010, 10:03
|- - Сергей Борщ   Цитата(777777 @ Oct 8 2010, 13:03) А не с...   Oct 8 2010, 10:25
- - Alex Truhin   Ну по порядку: ЦитатаGDI: Ногу WP подтяните к пита...   Oct 8 2010, 10:53
|- - aesok   > 1. как память slave может влиять на SPI ника...   Oct 8 2010, 11:00
|- - GDI   Цитата(Alex Truhin @ Oct 8 2010, 14:53) W...   Oct 8 2010, 11:10
|- - demiurg_spb   Настройте ногу SS на выход, как Вам уже ранее неод...   Oct 10 2010, 12:41
- - GDI   В сообщении №3 все же написано, про входы и выходы...   Oct 8 2010, 13:29
- - =GM=   Цитата(Alex Truhin @ Oct 7 2010, 09:33) u...   Oct 8 2010, 15:31
- - Alex Truhin   Спасибо всем за рекомендации и советы, теперь толь...   Oct 8 2010, 17:16
- - alexeyv   ЦитатаА можно поинтересоваться что у Вас с пином S...   Oct 11 2010, 03:48


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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 03:44
Рейтинг@Mail.ru


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