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

 
 
> Проблема с 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
Ответов
Alex Truhin
сообщение Oct 7 2010, 15:17
Сообщение #2





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



Код настройки:
static uint8_t df_GetStatus()
{
uint8_t status;

SELECT();
status = DF_SPI_RW(StatusReg);
status = DF_SPI_RW(0x00);
DESELECT();

return status;
}
....
SPCR = 0; // Отключаем SPI чтобы сконфигурировать направление ножек
DESELECT();
DDRB &= ~(DF_MISO_PB + DF_READY);
DDRB |= DF_MOSI_PB + DF_SCK_PB + DF_SS_PB; // + DF_RESET_PB /* MOSI, SS, RESET, SCK - выходы */
SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL); // Enable SPI in Master mode, mode 3
SPSR = (1<<SPI2X);

Определяю тип памяти:
chip_id = df_GetStatus() & 0x3C;
Это нормально отрабатывает, а вот дальше через некоторое время вызов df_GetStatus(), виснет на строке while(!(SPSR & 0x80));,
причем у меня несколько устройств, практически одинаковых, на некоторых работает, на некоторых нет.
Сижу вторые сутки нет ни каких идей. Хотя бы в принципе, отчего может не устанавливаться SPSR? Либо в каких ситуациях он сбрасывается кроме записи в SPDR?
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Oct 7 2010, 17:55
Сообщение #3


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



прошу прощения если не на то ссылку даю и если ничем особо новым тут не блесну - вот тут описание SPI для atmega128

http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/15.htm
Цитата
void SPI_MasterInit(void)
{
/* Установка MOSI и SCK на вывод, все остальные на ввод */
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
/* Разрешение SPI в режиме мастера, установка скорости связи fck/16
*/SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
void SPI_MasterTransmit(char cData)
{
/* Запуск передачи данных */
SPDR = cData;
/* Ожидание завершения передачи данных */
while(!(SPSR & (1<<SPIF)))
;
}


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
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
|- - 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
- - alexeyv   А можно поинтересоваться что у Вас с пином SS (исп...   Oct 8 2010, 13:08
|- - V_G   Цитата(alexeyv @ Oct 9 2010, 00:08) А мож...   Oct 8 2010, 14:47
|- - Сергей Борщ   Цитата(V_G @ Oct 8 2010, 17:47) Если вопр...   Oct 8 2010, 21:20
|- - 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 Текстовая версия Сейчас: 26th June 2025 - 03:38
Рейтинг@Mail.ru


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