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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Кто работал с памятью at45db161d или в принципе с at45dbxxxd, пожалуйста подскажите, Проблемы с at45db161d и их решение
sensor_ua
сообщение Sep 23 2007, 20:32
Сообщение #16


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

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



wink.gif))
MISO - Master Input Slave Output
MOSI - Master Output Slave Input
Посмотрите AN AVR252, AN AVR107 - может, чем поможет
ЗЫ. Ещё раз - не читайте всякой фигни (курс забаненного здесь кое-кого). Проблемы оттуда.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
lomtev
сообщение Sep 23 2007, 20:59
Сообщение #17


Участник
*

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



Цитата(sensor_ua @ Sep 24 2007, 00:32) *
wink.gif))
MISO - Master Input Slave Output
MOSI - Master Output Slave Input
Посмотрите AN AVR252, AN AVR107 - может, чем поможет
ЗЫ. Ещё раз - не читайте всякой фигни (курс забаненного здесь кое-кого). Проблемы оттуда.

Да что о поблемах каких то все говорят?... Гы, его тут забанили... забавно... Кстати процессорам я именно по его сайту начинал учиться... Конечно сумбурно, но понять можно... CodeVisionAVR, VMLAB, Proteus, все узнал именно от туда... конечно как человека автора я не знаю да и хрен с ним...
А вот AN AVR252 и AN AVR107, я не понял что есть такое.

Цитата(OLEG_BOS @ Sep 24 2007, 00:28) *
..Ну я надеюсь о согласованием уровней все ОК ? wink.gif

А вот это правильный вопрос.... Память на 2,7 Вольта, а шпарю я на пяти 07.gif , но в рассказе забанненного кое-кого я прочитал что она может работать и на пяти.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 23 2007, 21:02
Сообщение #18


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

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



Цитата
я не понял что есть такое.

Вот-вот. Проблема в том, что сначала нужно изучать информацию от производителя, а уж потом религиозные толкованияwink.gif Припадите к истокам, плз. ->
http://www.atmel.com/dyn/products/app_note...p?family_id=607

ЗЫ. Некто забанен был за неприкрытую рекламу. Но, ИМХО, о содержании известного ресурса нужно было бы много нехороших слов сказать. Но ОНО их не понимает;(


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
lomtev
сообщение Sep 23 2007, 21:05
Сообщение #19


Участник
*

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



Цитата(sensor_ua @ Sep 24 2007, 01:02) *
Вот-вот. Проблема в том, что сначала нужно изучать информацию от производителя, а уж потом религиозные толкованияwink.gif Припадите к истокам, плз. ->
http://www.atmel.com/dyn/products/app_note...p?family_id=607

AN значи аппноут... Сейчас посмотрю и спать, вставать в шесть утра
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 23 2007, 21:13
Сообщение #20


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

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



Цитата
она может работать и на пяти

Для этого нужно не забыть, что уровни КМОП (у проца) есть для лог. 1 - 0.7 и выше (т.е. выше 3.5В), а 0 - 0.3 и ниже от напряжения питания. Т.е. линию приёма от FLASH нужно тем или иным способом согласовать. Хотя вид непонятности говорит о близости сигнала к 1-е, а не к 0, т.е. проблемы разные (хотя могут сосуществовать совместно)


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
Snaky
сообщение Sep 24 2007, 03:53
Сообщение #21


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(lomtev @ Sep 23 2007, 14:48) *
Кто-нибудь сталкивался или работал с данным чипом? В тупике. предположений нет вообще. Если кто хочет помочь и нуждается в наглядной демонстрации кода, то я выложу.

Есть готовая рабочая билиотека для этой памяти на http://kurt.embedders.org/


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 24 2007, 04:12
Сообщение #22


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

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



Цитата
Есть готовая рабочая билиотека

А была надеждаwink.gif, что lomtev хотя бы из любопытства обнаружит на страничке аппликух AN AVR335:)))


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
GDI
сообщение Sep 24 2007, 12:01
Сообщение #23


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Раньше выпускались АТ45 с какой то буквой(вроде cool.gif, которая могла работать от 5в, сейчас их выпуск ПРЕКРАЩЕН, смотрите внимательно даташиты - они отличались последней буквой в названии. Я сейчас работаю именно с АТ45DB161D питание и меги и флешки 3.3в - никаких проблем, за исключением того что пришлось поменять опкоды некоторые, в частности и опкод чтения регистра статуса. Библиотеку не помню где брал, может и с avrfreaks
Код
#define FlashPageRead           0xd2    // Main memory page read
#define FlashToBuf1Transfer        0x53    // Main memory page to buffer 1 transfer
#define Buf1Read           0xd4    // Buffer 1 read
#define FlashToBuf2Transfer        0x55    // Main memory page to buffer 2 transfer
#define Buf2Read           0xd6    // Buffer 2 read
#define StatusReg           0xd7    // Status register
#define AutoPageReWrBuf1       0x58    // Auto page rewrite through buffer 1
#define AutoPageReWrBuf2       0x59    // Auto page rewrite through buffer 2
#define FlashToBuf1Compare           0x60    // Main memory page to buffer 1 compare
#define FlashToBuf2Compare       0x61    // Main memory page to buffer 2 compare
#define ContArrayRead           0x68    // Continuous Array Read (Note : Only A/B-parts supported)
#define FlashProgBuf1           0x82    // Main memory page program through buffer 1
#define Buf1ToFlashWE          0x83    // Buffer 1 to main memory page program with built-in erase
#define Buf1Write           0x84    // Buffer 1 write
#define FlashProgBuf2           0x85    // Main memory page program through buffer 2
#define Buf2ToFlashWE          0x86    // Buffer 2 to main memory page program with built-in erase
#define Buf2Write           0x87    // Buffer 2 write
#define Buf1ToFlash            0x88    // Buffer 1 to main memory page program without built-in erase
#define Buf2ToFlash           0x89    // Buffer 2 to main memory page program without built-in erase
вот коды которые у меня работают


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
lomtev
сообщение Sep 24 2007, 14:00
Сообщение #24


Участник
*

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



Цитата(sensor_ua @ Sep 24 2007, 08:12) *
А была надеждаwink.gif, что lomtev хотя бы из любопытства обнаружит на страничке аппликух AN AVR335:)))

Возможно удивитесь, не такой я лузер конченный и этот аппноут у меня уже пару месяцев валяется, все фунции списаны с него и изучил его я с первой до последней строчки. А еще замечу, что там используется 28 ножный флеш и проверка занятости идет через BUSY, а в 8 ногом ее нет и приходится факаться с этим регистром. Если бы все было так просто.

Цитата(GDI @ Sep 24 2007, 16:01) *
Раньше выпускались АТ45 с какой то буквой(вроде cool.gif, которая могла работать от 5в, сейчас их выпуск ПРЕКРАЩЕН, смотрите внимательно даташиты - они отличались последней буквой в названии. Я сейчас работаю именно с АТ45DB161D питание и меги и флешки 3.3в - никаких проблем, за исключением того что пришлось поменять опкоды некоторые, в частности и опкод чтения регистра статуса. Библиотеку не помню где брал, может и с avrfreaks
Код
#define FlashPageRead           0xd2    // Main memory page read
#define FlashToBuf1Transfer        0x53    // Main memory page to buffer 1 transfer
#define Buf1Read           0xd4    // Buffer 1 read
#define FlashToBuf2Transfer        0x55    // Main memory page to buffer 2 transfer
#define Buf2Read           0xd6    // Buffer 2 read
#define StatusReg           0xd7    // Status register
#define AutoPageReWrBuf1       0x58    // Auto page rewrite through buffer 1
#define AutoPageReWrBuf2       0x59    // Auto page rewrite through buffer 2
#define FlashToBuf1Compare           0x60    // Main memory page to buffer 1 compare
#define FlashToBuf2Compare       0x61    // Main memory page to buffer 2 compare
#define ContArrayRead           0x68    // Continuous Array Read (Note : Only A/B-parts supported)
#define FlashProgBuf1           0x82    // Main memory page program through buffer 1
#define Buf1ToFlashWE          0x83    // Buffer 1 to main memory page program with built-in erase
#define Buf1Write           0x84    // Buffer 1 write
#define FlashProgBuf2           0x85    // Main memory page program through buffer 2
#define Buf2ToFlashWE          0x86    // Buffer 2 to main memory page program with built-in erase
#define Buf2Write           0x87    // Buffer 2 write
#define Buf1ToFlash            0x88    // Buffer 1 to main memory page program without built-in erase
#define Buf2ToFlash           0x89    // Buffer 2 to main memory page program without built-in erase
вот коды которые у меня работают

А не могли бы вы скинуть сами функции записи-чтения. Коды у меня прописаны те же самые.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 24 2007, 14:30
Сообщение #25


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

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



Цитата
Возможно удивитесь

Не принимайте так близко к сердцу. При несколько неудачных Ваших результатах после "пошагового хождения" возникают сомнения в правильности подбора общего подхода. Изучение документации, в том числе особенностей применения чипа от производителя, без некоторого любопытства может занимать несколько меньше времени, но иногда всё же лучше оглядеть всё доступное. Так как для Вас хранилище аппнотов от производителя было некоторой новостью (может мне показалось), я позволил себе намекнуть, что Вы таки бываете любопытным. Оскорбить не думал, но поддеть - даwink.gif
Лучше скажите, что поправили и как что работает.
Кстати, может какой ляпсус в настройках пинов? может DDRn на выход для CS не установили?


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 24 2007, 15:10
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(lomtev @ Sep 24 2007, 17:00) *
в 8 ногом ее нет и приходится факаться с этим регистром.

Для начала просто задержки вставьте вместо ожидания готовности, а то тяжело искать ошибки тем, где их нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lomtev
сообщение Sep 24 2007, 20:01
Сообщение #27


Участник
*

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



Цитата(sensor_ua @ Sep 24 2007, 18:30) *
Не принимайте так близко к сердцу. При несколько неудачных Ваших результатах после "пошагового хождения" возникают сомнения в правильности подбора общего подхода. Изучение документации, в том числе особенностей применения чипа от производителя, без некоторого любопытства может занимать несколько меньше времени, но иногда всё же лучше оглядеть всё доступное. Так как для Вас хранилище аппнотов от производителя было некоторой новостью (может мне показалось), я позволил себе намекнуть, что Вы таки бываете любопытным. Оскорбить не думал, но поддеть - даwink.gif
Лучше скажите, что поправили и как что работает.
Кстати, может какой ляпсус в настройках пинов? может DDRn на выход для CS не установили?

Проработал строку SPCR = 0x5C; //Включили SPI
Вроде все нормально как написано в сноске ниже

/ interrupt выключен,SPI port включен, master mode, MSB first, SPI mode 3, Fcl/4
Порт инициализируется тоже верно:

void setup(void) // настройка переферии МК
{
DDRB = 0xBD; // SPI Port initialisation 1011 0101

// SCK SO SI CS RDY/BSY
// PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
// Настройка выводов МК
// Out In Out Out In Out In Out
// 1 0 1 1 1 1 0 1

PORTB = 0xFF; // all outputs high, inputs have pullups
#asm("sei") // разрешить прерывания

}

Распаяно у меня тоже верно. Единственная строчка которая у меня вызвала непонятие это из аппноута 335, а именно:

do
{
write_SPI(0xFF); // write dummy value to start register shift
while(!(ACSR&T1_OVF)); // wait for timer1 overflow interrupt
OCR1B = SPDR; // play data from shift register
ACSR &= (~T1_OVF); // clear the signal flag
} while (--buffer_counter);

Читают буфер и пишут его в регистр, но куда пишут не важно, можно и в массив. Идет ожидание прерывания после записи фиктивного значения. Сама фукция по вектору:

#pragma vector = TIMER1_OVF_vect
__interrupt void out_now(void)
{
ACSR |= T1_OVF; // an interrupt has occured
}

Это прерывание связано непосредственно с передачей в ШИМ или нужно ждать чего-то после отправки фиктивного значения или это взаимозаменияемо с while (!(SPSR & temp)); ????


И кстати если можно, то пожалуйста на ТЫ... wink.gif

Сообщение отредактировал lomtev - Sep 24 2007, 20:05
Go to the top of the page
 
+Quote Post
lomtev
сообщение Sep 24 2007, 21:16
Сообщение #28


Участник
*

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



В прикрепленном файле функции. Файл не большой поскольку пишу-читаю только буфер.
Основной код очень прост.

int main(void)
{

setup(); //Установка SPI

erasing(); // Стереть пмять

for(k=0;k<176;k++){ //цикл записи в память
if(k<124)flash_write(k);
else flash_write(246-k);
}

flash_read();

while (1){}
return(0);
}
Прикрепленные файлы
Прикрепленный файл  simple.txt ( 7.27 килобайт ) Кол-во скачиваний: 146
 
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 25 2007, 03:34
Сообщение #29


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

Группа: Свой
Сообщений: 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
GDI
сообщение Sep 25 2007, 06:44
Сообщение #30


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Вот библиотека с которой я работаю, инициализация порта сделана для мега128, компилятор IARAVR, инклюд файла Config.h можно убрать.
Прикрепленные файлы
Прикрепленный файл  dataflstk.zip ( 4.42 килобайт ) Кол-во скачиваний: 118
 


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 23:35
Рейтинг@Mail.ru


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