Например TDA7294

Форум РадиоКот • Просмотр темы - EEPROM AT45DB081D + AVR
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт дек 18, 2025 09:09:44

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Пн июл 16, 2012 12:26:08 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
Добрый день!.помогите запустить еепромку.
Суть проблемы в том что пишу в буфер данные допустим
-> 0b 1111 1111 а при считывание с еепромки получаю 0b 0111 1111 <-
-> 0b 0111 1111 чтение 0b 1011 1111
-> 0b 0011 1111 чтение 0b 1001 1111
-> 0b 0001 1111 чтение 0b 1000 1111
в общем она берет стирает старший бит данных и переносит его в 7-мой бит .
в чем может быть проблема ?? :shock:
код по даташу ниже будут картинки .
Код:
int i;
   unsigned char temp = 0x80; //(1<<7); SPIF

   PORT_SPI=(1<<DD_SS);                           //PORTB
   DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS); //DDRB
   SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);

//запись в буфер
PORTB &= ~(1<<4); //SS=0
     
  SPDR = 0x84;            //опкод записи в буфер 1
  while (!(SPSR & temp));
  SPDR =0;                //не имеет значения 
  while (!(SPSR & temp));
  SPDR =0;                // не имеет значения 
  while (!(SPSR & temp));
  SPDR =0;                // адрес в буфере
  while (!(SPSR & temp));

  SPDR =0b00001111;  //данные
  while (!(SPSR & temp));
     
PORTB |= (1<<4); //SS=1


//чтение из буфера
PORTB &= ~(1<<4); // SS=0
 
  SPDR = 0x54;               //опкод чтение из буфера 1    
  while (!(SPSR & temp));
  SPDR =0;                 // не имеет значения 
  while (!(SPSR & temp));
  SPDR =0;                 // не имеет значения 
  while (!(SPSR & temp));
  SPDR =0;                 // не имеет значения 
  while (!(SPSR & temp));
  SPDR =0;                 // адрес в буфере
  while (!(SPSR & temp));

  SPDR =0x00;              // не имеет значения 
  while (!(SPSR & temp));
  i=SPDR;  //чтение
 
PORTB |= (1<<4); // SS=1


Вложения:
Комментарий к файлу: Рисунки с даташа
Без имени-5.jpg [90.22 KiB]
Скачиваний: 706
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Пн июл 16, 2012 18:20:48 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
вроде как правильно, только зачем нужен temp и while (!(SPSR & temp));, можно например так while(!(SPSR & (1<<SPIF))); - наверное хекс будет меньше (проверка бита в регистре).
почему i int, i=SPDR, тогда уж i=(int) SPDR;
Посмотрел свои исходники - буфер заполнял весь (264 байта), переписывал командой 0х83 в main memory. Читал командой 0хЕ8 без буфера. Все отлично работало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Вт июл 17, 2012 12:06:56 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
Ну с буфером вроде все работает читает пишет пришлось вот эти биты установить
Код:
SPCR = (1<<SPE) | (1<<MSTR)| (1<<CPOL) | (1<<CPHA);
теперь пытаюсь содержимое буфера записать в страницу и прочитать ее потом но чет оно не хочет этого делать =( выложите исходник если он у вас остался .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Вт июл 17, 2012 13:15:53 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
остались исходники консольного приложения для PC - вначале тренировался на порту LPT.
Потом был куплен для записи AT45 программатор Тритон, а в устройстве (для воспроизведения звука) стояла тини13 и уже записанная звуком AT45. Программа для тини написана была на АБ - там только чтение.
Может пригодится:
Вложение:
LPT_AT45p.zip [1.72 KiB]
Скачиваний: 351


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Вт июл 17, 2012 15:32:50 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7014
Откуда: Ижевск
Рейтинг сообщения: 0
Может это пригодится.


Вложения:
read_from_at45.rar [724 байт]
Скачиваний: 402

_________________
Docendo discimus
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Вт июл 17, 2012 17:31:43 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
Спасибо за код,буду сидеть разбираться :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Ср июл 18, 2012 17:34:21 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
блин чет все равно не хочет читать с самой памяти.в буфер все пишется читается .когда читаю с самой памяти все байты получите равны 0xFF;
по сути это вить значит что в еепром не чего не записалось и я читаю стертые данные ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Чт июл 19, 2012 05:32:07 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
тут можно еще почитать: http://electronix.ru/forum/index.php?showtopic=103639


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Чт июл 19, 2012 10:37:49 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 238
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3868
Откуда: Москва
Рейтинг сообщения: 0
WP и RESET подтянуты к питанию?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Пт июл 20, 2012 09:41:14 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
Уф ура товарищи :)) все заработало все проблема заключалась в том что я не проверял регистр статуса на занятость еепромки
.Сделал проверки перед каждым действием записи или чтение и все пошло :) Спасибо всем за помощь !


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: EEPROM AT45DB081D + AVR
СообщениеДобавлено: Сб июл 21, 2012 20:37:13 
Первый раз сказал Мяу!

Зарегистрирован: Ср июн 08, 2011 11:32:49
Сообщений: 39
Рейтинг сообщения: 0
Возник еще один вопрос .По даташу написано что размер странице по умолчанию стоит 264 байта но я читаю регистр статуса сразу после инициализации SPI и в нем нулевой бит стоит 1-ца то биш размер страницы 256 байт . и при чтение страницы тоже читается до 255 байта а дальше 0xFF.В общем как можно сделать размер страницы 264 байта ?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y