Вопрос по EEPROM фирмы Microchip

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Доброго времени суток! Так случилось, что возникла у меня необходимость хранить (и иногда читать) довольно-таки большой константный массив. Для этих целей думаю использовать внешнюю EEPROM типа 24LC64. Имеется китайский PICKit2 http://ru.aliexpress.com/item/PICKIT2-P ... 20886.html, в описании которого явно указана поддержка данной серии EEPROM. В тоже время, открыв MPLAB 8.43, создав проект и выбрав данную память, я обнаружил что ни один из известных МПЛАБУ программаторов не дружит с такой (и почти любой другой из списка) памятью. Так кому верить то? :dont_know:
И еще вопросик, если я все-таки могу шить данную память, как мне разместить в ней информацию? То есть мне нужен эквивалент команде

Код: Выделить всё

const unsigned char array[228]=
{
   1, 2, 3, 4, 5, ....228
};//Адрес массива 0x0-0xE3
Реклама
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Сб июл 28, 2007 12:51:11

Сообщение andryvlad »

У PICkit 2 есть своя оболочка
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

У PICkit 2 есть своя оболочка
Спасибо, скачал. Значит, все таки возможность прошить eeprom есть, и это не может не радовать :)

Второй вопрос остается открытым - как мне сделать прошивку с моим массивом? До этого программировал и пики, и 8051 МК - там все понятно. А вот как делаются прошивки для eeprom не очень понимаю. Не в ручную же в hex виде набивать? Да и там контрольная сумма по-моему нужна. :dont_know:
И еще - в zif панель для моего программатора память вставляется так же, как если бы это был dip-8 микроконтроллер? Просто там же все по i2c в этой памяти, вот меня и терзают сомнения.
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

4elovek37 писал(а):...как делаются прошивки для eeprom...
Уточните, пожалуйста, что конкретно нужно???
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

4elovek37 писал(а): А вот как делаются прошивки для eeprom не очень понимаю.
Смотря что в вашем массиве , просто текст можно и в редакторе набить и скопипастить ...
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Уточните, пожалуйста, что конкретно нужно???
Задачи 2:
1) Заранее записать константный (все числа известны и лежат в excel файлике) 2-мерный char массив из 600 строк и 3 столбцов вида

Код: Выделить всё

{ 
1, 2, 3, //Строка 0
4, 5, 6, //Строка 1
//....
x, y, z//Строка 599
}
Так как двумерные массивы напрямую в eeprom не записать, прошиваем его в одномерном виде

Код: Выделить всё

{
//Столбец 0:
1,//Строка 0
4,//Строка 1
//...
x,Строка 599

//Столбец 1:
2,//Строка 0
5,//Строка 1
//...
y,Строка 599

//Столбец 2:
3,//Строка 0
6,//Строка 1
//...
z,Строка 599
}
Далее микроконтроллер уже в ходе работы будет вычислять как считать из памяти нужное число. Но для этого мне обязательно нужно знать четкие адреса начала каждого столбца в памяти. То есть уметь так прошивать память, что бы данные хранились по заранее определенным адресам.

2)Тут я немного отойду от главного вопроса этой темы, поэтому что бы не засорять текст сверну все это в спойлер
СпойлерМК будет в ходе работы записывать в свободный (заранее определенный) участок памяти масств структур типа

Код: Выделить всё

struct event
{
	unsigned char state;
	unsigned char vector;
	unsigned char codename;
	unsigned char start_date_day;
	unsigned char start_date_month;
	unsigned char start_date_year;
	unsigned char start_weekday;
	unsigned char start_hour;
	unsigned char start_minute;
	unsigned char stop_hour;
	unsigned char stop_minute;
	double fade;
	double delay_multipiller;
};

xdata struct event calendar[25];
Тут все понятно - по i2c предаем адрес, и поехали :) Вот только как программно мне устроить правильное преобразование в char и передачу я пока не придумал, но это уже совсем другая история :)
И так, для реализации первой задачи у меня есть, как уже упоминалось выше, китайский PICKit 2 с zif панелькой, одноименная програ + MPLAB. Завтра память куплю.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

4elovek37, Создайте свой каталог (аналогично FAT), зарезервировав некий необходимый объём памяти в начале адресного пространства EEPROM в котором будут ссылки на блоки данных.
Создать файл прошивки и редактировать данные можно, к примеру, в WinHex.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Купил eeprom, программатор отказался её автоматически определять. Если выбрать модель вручную, производит операцию erase, так же после этого можно произвести операцию чтения: значения всех ячеек == 0x00 (то есть вроде бы стирает/читает нормально). Если в текстовом поле со считанными данными поменять хоть какое-то значение, и попытаться прошить память - выдает ошибку "Programming failed at EEPROM adress 0x000011 (тут адрес той ячейки, которую модифицировали" Что за беда?
Создать файл прошивки и редактировать данные можно, к примеру, в WinHex.
Программу скачал. Насколько я понял это что-то типа текстового редактора, просто в удобном для чтения hex файлов виде? То есть данные придется вбивать руками?(в excel файле у меня все в десятичном виде). Стыдно признаться, но так и не нашел кнопку "generate .hex" :facepalm:
Создайте свой каталог (аналогично FAT), зарезервировав некий необходимый объём памяти в начале адресного пространства EEPROM в котором будут ссылки на блоки данных.
Простите, не очень понял. Вы предлагаете в начале памяти в ячейки записать адреса ячеек, с которых будут начинаться столбцы/иные блоки данных? Не очень знаком с FAT и пр. файловыми системами.
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

значения всех ячеек == 0x00
В чистой должно быть FF в настройках какой-то сигнал инвертирован
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

В чистой должно быть FF в настройках какой-то сигнал инвертирован
Боюсь, что память вообще не читается/пишется. Отключил "Verify on Write", и пропробовал записать несолько произвольных значений - получил сообщение об успешной записи, но при чтении опять получил все ячейки 0x00... Да и то, что программер не может автоматически определить серию/модель меня тоже очень сильно смущает.
upd: Не сообразил как (пробую все что можно, что бы достучаться до памяти), но получил считывание чего-то кроме "0". При этом программатор даже после завершения операций продолжал светить всеми своими диодами. Все остельные симптомы сохранились:
СпойлерИзображение
Изображение
Изображение
То есть по факту он её не очистил :(
Вот, собственно, фото программатора
Изображение
upd2: На фото выше память не правильно вставлена в панель. Нашел фото, где успешно шил pic16f628a, подглядел на какую линию там ровняться. Перевставил память, теперь вновь кроме читаемых нулей ничего :(
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

4elovek37 писал(а):...так и не нашел кнопку "generate .hex"....
В WinHex-е: Edit > Convert File и выбираете из списка....
При сохранении файла не забудьте изменить расширение файла (*.hex)
4elovek37 писал(а):Не очень знаком с FAT и пр. файловыми системами.
Не обязательно копировать структуру FAT. Придумайте свой каталог в котором по заранее определённым адресам будут храниться реальные адреса столбцов (что бы при изменении данных не вносить изменения в программу).

P.S.
При работе в WinHex-е будьте предельно внимательны!!! В этой программе можно открыть на редактирование как файл так и физическое устройство (HDD, RAM и т.д.).
Последний раз редактировалось Albert_V Сб мар 21, 2015 18:11:07, всего редактировалось 2 раза.
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Прозвони цепи от ног памяти до программатора схемы в сети.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

4elovek37, что за память ? Снова квадратную eeprom без пуллапов шьем? :)))
24LC I2C bus devices:
Bus Speed-
400kHz with Tools -> Fast Programming checked
100kHz with Tools -> Fast Programming unchecked

NOTE: Bus pullups are required for all
programming operations. 400kHz requires
2k Ohm pullups.

Ax Chip Select checkboxes-
These are only enabled for devices that support
address chip selects, and allow programming of
multiple devices on the same bus.

Connections for 24LC devices
---------------------------------------
PICkit 2 Pin 24LC Device Pin (DIP)
(2) Vdd 8 Vcc
(3) GND 4 Vss
(5) PGC 6 SCL (driven as push-pull)
(6) AUX 5 SDA (requires pullup)
7 WP - disabled (GND)
1, 2, 3 Ax pins
Connect to Vdd or GND per
datasheet and to set address
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Снова квадратную eeprom без пуллапов шьем
По моей логике раз программатор умеет шить память, то пуллаппы для таких целей должны быть у него в недрах! :)))
Окончательно понял, что не прошить мне так память, лишь после сравнения цоколевок:
ИзображениеИзображение
Но вот не могут эти два устройства, воткнутые в одно и то же место zif панельки и подключенные к одному и тому программатору, одинаково успешно прошиваться! Не знаю о чем с утра думал, наверное последствия вчерашнего затмения / пятницы :facepalm:

Это мне чего теперь, припаивать к памяти проводки, и их напрямую (для sda/scl с 4,7 кОм резисторами на vcc) к выводам программатора?
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Читать умеешь? Это кусок из мануала на пЫккит2 ...
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Это мне чего теперь, припаивать к памяти проводки, и их напрямую (для sda/scl с 4,7 кОм резисторами на vcc) к выводам программатора?
Зачем припаивать ?
Воткните микруху куда-нибудь рядом в панельку и вместе с проводками прижмите её.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Во первых пуллап только на SDA.
Во вторых надо еще адресные и WP на GND ...
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Вс дек 08, 2013 14:57:33
Откуда: Россия, Иваново

Сообщение 4elovek37 »

Завтра постараюсь купить dip-8 панельку и спаять все более-менее чинно, что бы можно было много раз шить разную память. Спасибо за наводку, гуглил про pickit2+ 24lc64, но такой темы с распиновками подключения почему-то не нашел.
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Сообщение otest »

Встал на лапы
Сообщения: 81
Зарегистрирован: Пт янв 30, 2015 09:53:42

Сообщение manjey »

Изображение

У меня вот такой адаптерик собран под 24СХХ
сопроты 10к
Вложения
24CXX.jpg
(37.27 КБ) 3600 скачиваний
Ответить

Вернуться в «PIC»