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

 
 
> Кто работал с памятью at45db161d или в принципе с at45dbxxxd, пожалуйста подскажите, Проблемы с at45db161d и их решение
lomtev
сообщение Sep 23 2007, 07:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 22-08-07
Пользователь №: 29 980



Так вот, ситуация такая. Использовал примеры программ из аппноутов, переписал коды команд на те которые советуют в даташите. Перепроверил и в других источниках типа занятие 7 с сайт 123avr. Функции написаны правильно. Сначала стираю память, потом пишу в нее значения до 176, тобишь записываю 176 байт. Потом читаю память и сохраняю данные в массив, после вывожу массив на экран (в выводе символов ошибок нет точно), выводятся исключительно значения 255, в рядок так 255 255 255 и т.д. Впихивал вывод значений в разные места программы с выводом разных переменных - вроде все работает. да и в противном случае вывело первоначальное значение массива а это 0. Забавная еще вещь наблюдается, программа написана изначально была для 28 ногово чипа, а я использую 8 ногий так что приходится читать занятость из регистра стуса строчкой типа while (!(SPSR & temp));, я думал что ошибка в ожидании и добавил строчку SPDR = STATUS_REGISTER;, но потом удалил, покуда изменений не произошло.
Так теперь зараза не хочет работать без этой строчки, хотя раньше работала так же криво как и сейчас.
И еще при стирании биты выставляются как я понял в значение 255.
Кто-нибудь сталкивался или работал с данным чипом? В тупике. предположений нет вообще. Если кто хочет помочь и нуждается в наглядной демонстрации кода, то я выложу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sensor_ua
сообщение Sep 25 2007, 03:34
Сообщение #2


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



1) Прерывания пока разрешать не нужно (в setup()), а иногда и вредно - а вдруг где-то в дебрях спрятанного текстаwink.gif обработчик прерывания SPI от Папы Карло затерялся?
2) Сначала нужно всё-таки записать-прочитать буфер, чтобы убедиться в правильной настройке интерфейса, пинов и вааще - похоже, к этому уже пришли. Для работы с буфером ничего стирать не нужно (там ОЗУ), т.е. erasing(); нафиг. Это для отладки.
3) В функции записи нет строки unsigned char temp = 0x80; оно типа глобально, но в чтениичто-то есть -намешано. Вообще использовать переменные там, где можно использовать литералы (константные объявления через #define) - это моветон. Переменные жрут озу (стек), их нужно правильно объявлять, не забывать инициализировать, не позволять опитмизатору их выбрасывать... Кроме того, цифирьки разбирать типа SPCR = 0x5C; не очень хорошо - это приводит к нежеланию читать код у меня (ИМХО, и у большинства тоже), но это бы полбеды - беда в том, что такое написание приводит к механическим ошибкам и не позволяет поддерживать код уже через очень короткое время после написания. Компилятор всё-равно всё в цифирьки перепакует, но нафига человеку его работу пытаться сделать, да ещё и неуклюже? Помотрите хотя бына примеры инициализации из DS - там достаточно читабельно. Короче, замените, где надо эту temp на (1<<SPIF), а где на (1<<BUSY). Равно и остальное, а то обсуждение усложняетсяwink.gif
5) Приведение типа к знаковому (char)SPDR в функции чтения - нафиг. Объявление bt_word[] не нашёл.
4)Для отладки уберите всякие static buffer_counter и запишите хотя бы один раз в буфер с нулевого адреса несколько байт данных, ну и прочитайте оттуда же. Цикл, вызывающий запись в буфер одного байта, уберите из main и положите в функцию записи, а лучше пока вааще убить и попробовать тупо записать, например, 4 константы.
5) Убрав вызов erasing() из main перестанет выключаться SPI 8-D
SPCR = 0x00; // Выключить SPI
и есть вероятность, что то, что написано далее, будет фунциклироватьwink.gif
6) Функцию стирания надо будет рихтовать - там некорректные кусочки ожидания готовности (обсуждали ранее)- ожидание либо вынести в отдельную функцию, либо по месту поправить. Я, например, не использую принципиально функции записи со стиранием, потому, если драйвер для себя, то могу запихнуть ожидание внутрь, но если иначе, то смысла прятать нет. Кроме того, в ожидании (а это порядком 40+ мс!!!) часто можно заниматься чем-то более важнымwink.gif иногда узнавая, как же ж там дела...


--------------------
aka Vit
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lomtev   Кто работал с памятью at45db161d или в принципе с at45dbxxxd, пожалуйста подскажите   Sep 23 2007, 07:48
- - sensor_ua   Похоже, чтение регистра статуса неправильное. Пока...   Sep 23 2007, 08:11
|- - lomtev   Цитата(sensor_ua @ Sep 23 2007, 12:11) По...   Sep 23 2007, 10:07
- - sensor_ua   Цитатая понял надо писать до chip_select Неправиль...   Sep 23 2007, 10:40
|- - lomtev   Цитата(sensor_ua @ Sep 23 2007, 14:40) Не...   Sep 23 2007, 10:59
- - sensor_ua   ЦитатаSPDR = STATUS_REGISTER; while (!(SPSR ...   Sep 23 2007, 11:07
|- - lomtev   Написал аналог предложенного выше цикла... вот что...   Sep 23 2007, 18:24
- - sensor_ua   Ну а остальные команды обрамить CS? Вот примерчик ...   Sep 23 2007, 18:40
|- - lomtev   Цитата(sensor_ua @ Sep 23 2007, 22:40) Ну...   Sep 23 2007, 18:51
|- - lomtev   Цитата(lomtev @ Sep 23 2007, 22:51) ДА вр...   Sep 23 2007, 20:02
- - sensor_ua   Чтение/запись буфера не требуют проверки статуса н...   Sep 23 2007, 20:05
- - lomtev   Я уже начал искать совершенно тупые варианты и наз...   Sep 23 2007, 20:05
|- - OLEG_BOS   Цитата(lomtev @ Sep 23 2007, 23:05) Я уже...   Sep 23 2007, 20:16
|- - lomtev   Цитата(OLEG_BOS @ Sep 24 2007, 00:16) В к...   Sep 23 2007, 20:25
|- - OLEG_BOS   Цитата(lomtev @ Sep 23 2007, 23:25) Ясно,...   Sep 23 2007, 20:28
- - sensor_ua   )) MISO - Master Input Slave Output MOSI - Master ...   Sep 23 2007, 20:32
|- - lomtev   Цитата(sensor_ua @ Sep 24 2007, 00:32) ))...   Sep 23 2007, 20:59
- - sensor_ua   Цитатая не понял что есть такое. Вот-вот. Проблема...   Sep 23 2007, 21:02
|- - lomtev   Цитата(sensor_ua @ Sep 24 2007, 01:02) Во...   Sep 23 2007, 21:05
- - sensor_ua   Цитатаона может работать и на пяти Для этого нужно...   Sep 23 2007, 21:13
- - Snaky   Цитата(lomtev @ Sep 23 2007, 14:48) Кто-н...   Sep 24 2007, 03:53
- - sensor_ua   ЦитатаЕсть готовая рабочая билиотека А была надежд...   Sep 24 2007, 04:12
|- - lomtev   Цитата(sensor_ua @ Sep 24 2007, 08:12) А ...   Sep 24 2007, 14:00
|- - zltigo   Цитата(lomtev @ Sep 24 2007, 17:00) в 8 н...   Sep 24 2007, 15:10
- - GDI   Раньше выпускались АТ45 с какой то буквой(вроде , ...   Sep 24 2007, 12:01
- - sensor_ua   ЦитатаВозможно удивитесь Не принимайте так близко ...   Sep 24 2007, 14:30
|- - lomtev   Цитата(sensor_ua @ Sep 24 2007, 18:30) Не...   Sep 24 2007, 20:01
- - lomtev   В прикрепленном файле функции. Файл не большой пос...   Sep 24 2007, 21:16
|- - lomtev   1. В setup написал #asm("cli") // запре...   Sep 25 2007, 17:49
|- - rezident   Цитата(lomtev @ Sep 25 2007, 23:49) Парни...   Sep 25 2007, 18:10
- - GDI   Вот библиотека с которой я работаю, инициализация ...   Sep 25 2007, 06:44
- - lomtev   Предложенный исходник, написан явно не для Codevis...   Sep 25 2007, 18:38
|- - rezident   Цитата(lomtev @ Sep 26 2007, 00:38) Предл...   Sep 25 2007, 18:49
- - lomtev   ТАк парни, кажись пошло г**вно по трубам, перепаял...   Sep 25 2007, 18:59
- - sensor_ua   А какой проц? пока почему-то думал, что мега16.   Sep 25 2007, 19:25
- - lomtev   Всё парни.... всё заработало, по крайней мере перв...   Sep 25 2007, 19:31
- - urasinov   ЦитатаВторая - Не знаю почему но программатор (Обы...   Sep 26 2007, 04:06
- - GDI   Программатор все же лучше сделать покруче, наприме...   Sep 26 2007, 06:58
- - lomtev   Фишка не в самом программаторе, а в компе, если пр...   Sep 26 2007, 17:28
- - lomtev   Заметил странную штуку. Была проблема что у меня н...   Sep 26 2007, 19:48
- - sensor_ua   А unsigned char k не пробовал?   Sep 26 2007, 20:43
|- - lomtev   Цитата(sensor_ua @ Sep 27 2007, 00:43) А ...   Sep 27 2007, 16:29
- - lomtev   Я иногда дивлюсь своему аналитическому уму Добав...   Sep 27 2007, 18:19
- - sensor_ua   eds == 0xFF для Цитатаfor(i=0; i<eds; i++) //Р...   Sep 27 2007, 18:41
- - lomtev   Я бобер хитрый и вывел значение которое должно ото...   Sep 27 2007, 20:33
- - Ivaxa   Решил и про свою проблему написать. При замене AT4...   Jan 23 2008, 13:13
- - uriy   А какую частоту CLK используете? У меня при частот...   Jan 23 2008, 19:15
- - Roger   Помогите решить проблемы, курсач нужно было сдать ...   Dec 11 2009, 13:47
- - GDI   Программатор пробовали от схемы отключать?   Dec 14 2009, 11:50
- - Roger   Цитата(GDI @ Dec 14 2009, 14:50) Программ...   Dec 15 2009, 19:11


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:50
Рейтинг@Mail.ru


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