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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Непонятная работа AT45DB161D
IF_P
сообщение Mar 19 2011, 10:09
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



В прошлом году тестировал м/с AT45DB161B (28 pin). Все работало нормально (то что мне было необходимо). Сейчас решил поставить эту м/с в один проект. Вместо DB161B поставил DB161D (8 pin). Согласно информации Atmel никаких изменений вносить не надо. Снизу вверх эта м/с полностью поддерживается. Программу полностью перенес с макета в этот проект. Но AT45 ведет себя странным образом.
Записываю 528 байт, читаю тоже 528. А на RS232 получаю 528, 529, 792, 880 байт в зависимости от записываемого байта. Т.е. при записи в ту же страницу разных чисел получаю различную длину данных.
Ну и информация в ячейках совершенно другая от записываемой.
Программу еще раз проверил на макете - все OK. В Proteus'е тоже моделируется все нормально. В проекте предусмотрено 4 таких м/с. Запаял остальные - тоже самое. Кто что может посоветовать или кто-то уже встречался с чем-то подобным.
У меня питание AT45 - 3,3V - 74HCT125 - ATMega128.

Приложил файлы полученные при чтении.

P.S.

Хочу уточнить. В макете AT45 питается 5V. Я где-то здесь читал, что такое возможно. Под рукой не было 3V стабилизатора и я запитал от 5 V. Да, действительно все работало. Я отладил работу с этой м/с и занялся другими узлами на этой же макетке.
Но вот сейчас, когда я попробовал вернуться к этим м/с на макете, оказалось что они не работоспособны.
Одна из AT45 (их 2 шт ) повесила выход глухо на "0". Вторая выдавала всякий мусор. После замены м/с все снова зарабтало на макете.
Так что, НЕ ЗАПИТЫВАЙТЕ AT45 5V, как кое-кто советует. Работайте по datasheet wink.gif

Вот только-что попробовал прочитать р-р состояния.
На макете (DB161B) - 0xAC, что соответствует документации

У меня на плате (DB161D) - 0xF0 0xF3 на всех 4-х м/с
Почему два байта?

Сообщение отредактировал IF_P - Mar 19 2011, 09:45
Прикрепленные файлы
Прикрепленный файл  TEST_AT45.RAR ( 1.04 килобайт ) Кол-во скачиваний: 35
 
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 19 2011, 14:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(IF_P @ Mar 19 2011, 12:09) *
У меня на плате (DB161D) - 0xF0 0xF3 на всех 4-х м/с
Почему два байта?


Что-то у Вас в программе не так: непонятно как mega в режиме SPI-мастера может считывать на запрос статуса 2 байта, а не один.
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 19 2011, 14:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(_Артём_ @ Mar 19 2011, 16:17) *
Что-то у Вас в программе не так: непонятно как mega в режиме SPI-мастера может считывать на запрос статуса 2 байта, а не один.

Так я же написал, что с другой м/с (AT45DB161B) эта же программа считывает один байт и он отвечает документации.
А тут два байта, причем, ни один из них не подходит.
Да и в Proteus'е эта же программа выводит один байт. 05.gif

Вот выкладываю тестовый пример. Проект в IAR 4.30A, Proteus 7.5 SP3.
У меня на плате LCD 4х20 и клавиатура 4х4. Поэтому в программе есть соответствующие модули и операторы.
Все что касается этих программ, я сдвинул подальше (test_AT45.c)

P.S.

В файле "instruction.txt" порядок работы

Сообщение отредактировал IgorKossak - Mar 19 2011, 19:17
Прикрепленные файлы
Прикрепленный файл  TEST_AT45_proekt.RAR ( 455.56 килобайт ) Кол-во скачиваний: 58
 
Go to the top of the page
 
+Quote Post
uriy
сообщение Mar 19 2011, 20:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



SPI это вам не I2C. Сколько байт вы просите столько микросхема вам и выдаст. Если вы даете клоки она выдает данные, нет клоков нет данных на ее выходе. Раз она вам два байта возвращает, значит вы два байта и просите.
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 20 2011, 15:49
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(uriy @ Mar 19 2011, 22:42) *
SPI это вам не I2C. Сколько байт вы просите столько микросхема вам и выдаст. Если вы даете клоки она выдает данные, нет клоков нет данных на ее выходе. Раз она вам два байта возвращает, значит вы два байта и просите.

Да знаю я это. Выше я привел тестовый пример. Там можна увидеть, что я запрашиваю один байт (р-р статуса), а получаю 2.
И эта же программа на другой плате, но с другой м/с (DB161B) работает нормально.
Proteus тоже выдает один байт. Вот скриншот Proteus'а.
Если в программе ошибка, то и здесь будет тоже.

Сообщение отредактировал IF_P - Mar 20 2011, 15:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
M_Andrey
сообщение Mar 20 2011, 18:26
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376



А как вы определяете что программа считывает 2 байта - по UART-у? Так может у вас UART неправильно работает - ведь плата другая и могут быть ошибки как минимум в разводке. И вообще как можно доверять симуляциям во всяких протеусах? Выводите считываемые данные сразу на индикатор.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Mar 20 2011, 20:05
Сообщение #7


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(IF_P @ Mar 20 2011, 18:49) *
Если в программе ошибка, то и здесь будет тоже.
Поставьте в виртуальном терминале бодовую скорость этак раза в два больше чем надо (ну или на МК меньше чем надо), и тоже будет ошибка rolleyes.gif
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 20 2011, 20:21
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(SysRq @ Mar 20 2011, 22:05) *
Поставьте в виртуальном терминале бодовую скорость этак раза в два больше чем надо (ну или на МК меньше чем надо), и тоже будет ошибка rolleyes.gif

К чему бы это?
Go to the top of the page
 
+Quote Post
SysRq
сообщение Mar 20 2011, 20:23
Сообщение #9


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(IF_P @ Mar 20 2011, 23:21) *
К чему бы это?
К тому, что вместо одного байта станет два. Байт, посланный на 9600, превратится в два (или больше), если ожидать его как посланный на 57600.
Проверьте работу RS-канала, вам же намекнули...
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 20 2011, 21:35
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(SysRq @ Mar 20 2011, 22:23) *
К тому, что вместо одного байта станет два. Байт, посланный на 9600, превратится в два (или больше), если ожидать его как посланный на 57600.
Проверьте работу RS-канала, вам же намекнули...

Это мне объяснять не надо. Не первый год работаю с COM-портом. Для сомневающихся выкладываю скриншот настроек терминала.
Настройки AVR можно увидеть в тестовом примере.
Что касается разводки, то я перед подачей питания всегда делаю прозвонку. С этим там все в порядке.
А что касается аппаратной части, то у меня тоже возникли сомнения. RS232-это единственный узел, который я не проверил на плате.
Просто у меня никогда с этим не было проблем. Если нет ошибок в монтаже, то все всегда работало.
Попробую глянуть осциллографом. Если нет, то заменю MAX232. На AVR пока не думаю.

P.S.

Правда, завтра уезжаю на пару дней в командировку. По приезду все это проверю.

Сообщение отредактировал IF_P - Mar 20 2011, 21:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SysRq
сообщение Mar 20 2011, 22:00
Сообщение #11


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(IF_P @ Mar 21 2011, 00:35) *
Настройки AVR можно увидеть в тестовом примере.
Fuse bits не видать же ж, они в МК.
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 20 2011, 23:25
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(SysRq @ Mar 21 2011, 00:00) *
Fuse bits не видать же ж, они в МК.

Вот они.

Цитата(SysRq @ Mar 21 2011, 00:00) *
Fuse bits не видать же ж, они в МК.

Я прошу извинить за неточность. Я привел картинку с Fuse, которые я обычно записываю в AVR. Но при чтении там было что-то другое
(видимо, заводские установки). Я их не анализировал, т.к подумал, что это ошибка чтения. Просто записал еще раз то, что надо. И все заработало.
Спасибо SysRq за подсказку про Fuse. С AVR я еще серьезно не работал. Поэтому всех тонкостей не знаю.
Видимо Fuse=M103C был установлен, а я использовал как раз UART1. Больше, вроде нечему мешать.

Еще раз спасибо. Пора баиньки.
Есть еще вопрос по работе с AT45. Но это, возможно, программная ошибка, т.к. проявляется одинаково в обоих платах.
После приезда опишу более детально.
Буду благодарен, если сможете помочь.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SysRq
сообщение Mar 20 2011, 23:50
Сообщение #13


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(IF_P @ Mar 21 2011, 02:25) *
Видимо Fuse=M103C был установлен, а я использовал как раз UART1. Больше, вроде нечему мешать.
Установка M103C меняет очень многое, сразу бы заметили. А вот тактирование от 1МГц не так видно rolleyes.gif

Цитата(IF_P @ Mar 21 2011, 02:25) *
После приезда опишу более детально.
Пишите, сообразим.
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 24 2011, 17:15
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(SysRq @ Mar 21 2011, 01:50) *
Пишите, сообразим.


Вот приехал из командировки и возвращаюсь к своей теме.
Вопрос в следующем.
Чтение из страницы AT45 я делаю с использованием прерывания RS232. Там все нормально.
А вот запись-чтение буфера я попробовал сделать по опросу флага.
После включения питания и инициализации SPI (у меня в тестовой программе "*" "3") я выполняю запись-чтение буфера ("Shift" "1").
Получаю 528 байт. (см. ekr_norm).
Если еще раз послать эту же команду, то получаю 31 байт (см. ekr_1). И так до тех пока не выключу питание.

P.S.
Вот сейчас допаял кнопку RESET. Она у меня заведена и на CPU и на AT45.
После RESET тоже самое. Первый раз нормально, а потом 31 байт.

Сообщение отредактировал IF_P - Mar 24 2011, 17:38
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
nk@
сообщение Mar 25 2011, 11:24
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138



Чем дальше, тем непонятней.
PS: У меня какраз платка лежит на которой mega16 и AT25DF321 (подобный AT45 чип) стоят. Все прекрасно работает. Могу либу задарить.

Сообщение отредактировал nk@ - Mar 26 2011, 10:41
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 22:59
Рейтинг@Mail.ru


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