Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 25.11.2007, 21:55  
sergey2000
Прохожий
 
Регистрация: 27.05.2006
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sergey2000 на пути к лучшему
По умолчанию не записывается в в буфер 1 at45db081 и at89c51ed2

вечер добрый.
Что то не хочет работать data flash at45db081, Чтение статуса происходит нормально . нога RDY/BSY в hight. а при чтение буфера вроде происходит не знай насколько правиль по одному адресу 125 по другому 187. сделал две тестовые функции одна записывает другая читает буф1.

Код:
unsigned char READ_BUF_1(int adres)
{
unsigned char S;unsigned char M;
if(adres ›= 263){adres = 263;} if(adres ‹= 0){adres = 0;} // контроль правильного ввода адреса
//
if(0x100 & adres){S = 1;}else {S = 0;}
//
if(0x80 & adres){M |= 0x80;}
if(0x40 & adres){M |= 0x40;}
if(0x20 & adres){M |= 0x20;}
if(0x10 & adres){M |= 0x10;}
if(0x08 & adres){M |= 0x08;}
if(0x04 & adres){M |= 0x04;}
if(0x02 & adres){M |= 0x02;}
if(0x01 & adres){M |= 0x01;}
//
WAIT_REDY();      // проверка ноги REDY/BESY
CS(0)              //выбор кристал
SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0xD4;     // передача команды по SPI
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0x00;     // передача 0
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = S;     // передача адрес S по SPI
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = M;     // передача адрес M по SPI
RX_TX_END();      // ожидание завершения передачи


SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0x00;    // передача Х
RX_TX_END();     // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0x00;    // чтение данных
RX_TX_END();     // ожидание завершения передачи



CS(1)             // CS1
return SPDAT;
}//end read buf1
//--------------------------------------------------------------------------------------------------
void WRITE_BUF_1(int adres, unsigned char dat)
{
unsigned char S;unsigned char M;
if(adres ›= 263){adres = 263;} if(adres ‹= 0){adres = 0;} // контроль правильного ввода адреса
//
if(0x100 & adres){S = 1;}else {S = 0;}
//
if(0x80 & adres){M |= 0x80;}
if(0x40 & adres){M |= 0x40;}
if(0x20 & adres){M |= 0x20;}
if(0x10 & adres){M |= 0x10;}
if(0x08 & adres){M |= 0x08;}
if(0x04 & adres){M |= 0x04;}
if(0x02 & adres){M |= 0x02;}
if(0x01 & adres){M |= 0x01;}
//
WAIT_REDY();      // проверка ноги REDY/BESY
CS(0)              //выбор кристал
SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0x84;     // передача команды по SPI
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = 0x00;     // передача x
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = S;     // передача адрес S по SPI
RX_TX_END();      // ожидание завершения передачи

SPSTA = 0x00;      //сброс регистра состояния
SPDAT = M;     // передача адрес M по SPI
RX_TX_END();      // ожидание завершения передачи


SPSTA = 0x00;      //сброс регистра состояния
SPDAT = dat;    // запись данных в буфер 1
RX_TX_END();     // ожидание завершения передачи

CS(1)             // CS1

}//end write buf 1
//--------------------------------------------------------------------------------------------------

вызываю

void main()
{
unsigned char var;

//иниц SPI, flash


WRITE_BUF_1(25 , 11);   //запись
var = READ_BUF_1(25); // чтение

индикация (var);  читается 216, вроде бы должен читаться как 11.


}



spi настроен SPCON = 0x73;
Реклама:
sergey2000 вне форума  
Непрочитано 26.11.2007, 03:01  
VDG
Прописка
 
Регистрация: 20.12.2005
Сообщений: 117
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
VDG на пути к лучшему
По умолчанию Re: не записывается в в буфер 1 at45db081 и at89c51ed2

В датафлеше запись и чтение насколько помнится идут по разным фронтам. Пишите софтовый драйвер SPI.
VDG вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WDT и супервизор питания AT89C51ED2(RD2) Lord_Alukard Микроконтроллеры, АЦП, память и т.д 1 18.12.2007 08:30
нужен совет специалиста по MSC51 at89c51ed2 sergey_as Микроконтроллеры, АЦП, память и т.д 1 09.12.2007 19:34
Нужна помощь: буфер FIFO NETPOZYVNOGO Микроконтроллеры, АЦП, память и т.д 3 29.09.2007 10:21
буфер udav_ru Аудиотехника 3 10.06.2006 02:49
isp at89c51ed2 Микроконтроллеры, АЦП, память и т.д 4 18.01.2006 19:51


Часовой пояс GMT +4, время: 02:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot