|
AVR, AT25256A |
|
|
|
Jan 3 2006, 19:48
|
Группа: Новичок
Сообщений: 14
Регистрация: 3-01-06
Пользователь №: 12 807

|
Прошу помощи! Не могу запустить программу записи и чтения данных из АТ90S8535 в память AT25256A по SPI .Или неправильно подключил память,или неправильный обмен данными.Прошу совет или образец программы ! e_av74@mail.ru Входы HOLD\ и WP\ подключил к +5V . ?
;---------------------Вот мой кусок программы записи 1 байта в память
cbi PORTB,_CS ; CS'=0 ldi tmp,0x06 ; WREN rcall send_spi sbi PORTB,_CS ; CS'=1 nop nop nop nop cbi PORTB,_CS ; CS'=0 ldi tmp,0x02 ;WRITE rcall send_spi mov tmp,Xh rcall send_spi mov tmp,Xl rcall send_spi mov tmp,dspi rcall send_spi sbi PORTB,_CS ; CS'=1 ret ;---------------------- SPI ----------------------- send_spi: out SPDR,tmp ; wait_spi: sbis SPSR,SPIF ; rjmp wait_spi in tmp,SPDR ret ;------------------------------------------------------ А это чтение из памяти: sbi PORTB,_CS ; CS'=1 cbi PORTB,_CS ; CS'=0 ldi tmp,0x03 ;READ rcall send_spi mov tmp,Xh rcall send_spi mov tmp,Xl rcall send_spi mov dspi,tmp sbi PORTB,_CS ; CS'=1 ret
|
|
|
|
|
 |
Ответов
|
Jan 15 2006, 17:11
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 4-01-05
Из: г. Самара
Пользователь №: 1 803

|
В твоей программе конфигурация SPI точно неправильная, сделай как я писал .EQU SPCRR = (1<<SPE)+(1<<MSTR)+(1<<CPOL)+(1<<CPHA)+(0<<DORD)+(0<<SPR1)+(0<<SPR0) вот конфигурация из моей программы.
Команды NOP можно убрать, у меня на 8 Мгц работает без них всё отлично. Если весь обмен по SPI делаешь в процедуре send_spi, тогда добовать туда же установку CS в 1, а в остальном месте CS не трогай, чтобы не путаться. вот так - ;---- Обмен по SPI -------------- send_spi:
cbi PORTB,pb4 ; CS'=0 out SPDR,n ; Начать передачу
wait_spi: sbis SPSR,SPIF ; SPI - готов?Пропуск если разряд установлен rjmp wait_spi
in v,SPDR ; Чтение данных
sbi PORTB,pb4 ; CS'=1
ret ;----------------------------------
В остальном программа вроде правильна, попробуй сперва читать из памяти, а потом уже писать туда. Я когда прогу писал, читал с памяти и выдавал в UART для проверки. Если не заработает попробуй вывод CS у AT25256 повесить на другой порт. не на SS, хотя должно работать!
|
|
|
|
Сообщений в этой теме
Andrey_31 AVR Jan 3 2006, 19:48 solidreg А как сконфигурирован SPI? (SPCR register) Должен ... Jan 3 2006, 21:22 prottoss Цитата(Andrey_31 @ Jan 4 2006, 02:48) Про... Jan 4 2006, 12:27 Andrey_31 Вроде инициализация и всё остальное похожи на исхо... Jan 5 2006, 00:32 prottoss Цитата(Andrey_31 @ Jan 5 2006, 07:32) Вро... Jan 5 2006, 14:09 Blade000 В программе у тебя всё правильно. SPI настроить ну... Jan 15 2006, 11:16 Andrey_31 Кто знает ? Рад любой мысли ! Вторую неделю ту... Jan 15 2006, 16:18 Blade000 Могу прислать проект для ATmega8, там есть обмен с... Jan 15 2006, 16:33 Andrey_31 Спасибо за советы, жду новых !!!
При л... Jan 16 2006, 00:06 Blade000 А зачем ты SO повесил на 5В через резюк???
напряму... Jan 16 2006, 07:52 Sasok Не хотел вам мешать, но вместо AT25*** удобней и л... Jan 16 2006, 08:34 AndyBig ЦитатаНе хотел вам мешать, но вместо AT25*** удобн... Jan 16 2006, 09:43 Sasok Цитата(AndyBig @ Jan 16 2006, 12:43) Вот ... Jan 16 2006, 10:06 Andrey_31 С резаком видел схемы ,и они работали. Сам пробова... Jan 16 2006, 18:00 Blade000 C STK2000 не работал, сказать точно не могу, но я ... Jan 17 2006, 06:40 Blade000 Как успехи то, заработала память? Jan 18 2006, 17:39 Andrey_31 Когда я отсоединил программатор на выходе памяти п... Jan 21 2006, 07:45 Blade000 Скинь мне схему на почту, я посмотрю, что неправил... Jan 21 2006, 10:07
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|