Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.03.2012, 23:22
|
|
Прописка
Регистрация: 28.10.2007
Адрес: краснодарский край
Сообщений: 137
Сказал спасибо: 16
Сказали Спасибо 557 раз(а) в 84 сообщении(ях)
|
93c46+avr си-код
приветствую всех участников данного форума!!!
решил попробовать использовать внешнюю микросхему eeprom 93c46 в связке с авр-контроллером в своих устройствах.Пишу на си.Пробовал писать код по даташитам атмела и СТ,обгуглил всё вокруг и везде,нашёл очень мало да и то не помогло,хотя очень совпадало с даташитами.
Сам уже голову сломал,мозги на бекрень....ничто ещё не вызывало столько трудностей,сколько эта восьминогая хе..ня.Уже ,бляха,и танец с бубном пробовал,и заклинания .Короче,последняя надежда на вас.
Пожалуйста,хлопцы,помогите хотя-бы одной какой-нибудь функцией для работы с ней,ну или ткните куда-нибудь.Два месяца регулярного секаса,а ей похеru.Заранее премного благодарен!
|
|
|
|
28.03.2012, 00:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 04.12.2009
Сообщений: 5,455
Сказал спасибо: 73
Сказали Спасибо 2,510 раз(а) в 1,414 сообщении(ях)
|
Re: 93c46+avr си-код
Взяли бы лучше 24CXX на I2C - с ней я смог разобраться двадцать лет назад до интернета и под досом через LPT запрограммировать. А уж сейчас-то! Тогда пошли первые импортные телеки, и у них сразу начали слетать прошивки. Ни про какие сервисные режимы я слыхом не слыхивал. В телеке пропали настройки на каналы и прочие, остались только громкость и перекл. каналов. Тупо побил память пополам, очистив одну половину - всё испортилось, зато появились настройки. Эту половину опять пополам - и так за разумное число итераций я нашёл бит, отвечающий за включение настроек. Ну все знают о поиске льва в пустыне. Это сильно потом я узнал про "гостиничный режим", а тогда в паспорте об этом сказано не было...
|
|
|
|
28.03.2012, 03:37
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: 93c46+avr си-код
Насчет 24сХХ не согласен. У них протокол заметно сложнее, чем у 93сХХ. В последних вообще все элементарно, а уж если не смогли разобраться с ними...
Когда-то я пользовался вот этими "даташитами", скачанными еще из FIDO. Они не очень наглядны, поскольку в текстовом формате, но разобраться можно. Программу свою писал по ним (правда, не для 46-й, а для 56-й), так что всё проверено и 100% работает. Удачи!
Последний раз редактировалось RECTO; 28.03.2012 в 03:41.
|
|
|
|
28.03.2012, 09:37
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: 93c46+avr си-код
i2c eeprom хорошь тем, что его не надо из платы выпаивать. Шей на лету и все дела.
|
|
|
|
28.03.2012, 20:15
|
|
Прописка
Регистрация: 28.10.2007
Адрес: краснодарский край
Сообщений: 137
Сказал спасибо: 16
Сказали Спасибо 557 раз(а) в 84 сообщении(ях)
|
Re: 93c46+avr си-код
ребятки,спасибо за отзывы!
с 24сХХ я тоже давно разобрался,без особых проблем.тем не менее,такая простая микросхема ,как 93с46,создала у меня кучу проблем.И вроде бы соблюдал тайминги,и сравнивал с даташитами и чужим кодом.От этого интерес к микросхеме только возрос.Хочу не согласиться с тем,что с 93с46 проще.У24сХХ всего две функции-read,write.А у 93с46 их побольше будет и каждая со своими вы..босами.Самое обидное,что я не могу понять свою ошибку.выложил бы код,но я его уже удалил из-за нерабочести,ну и со злости......
кстати,например,тайминги чтения в даташитах атмела и микрочипа разные,х..ерня какая-то...
или это я туплю..
Последний раз редактировалось andron-kip; 28.03.2012 в 20:24.
|
|
|
|
28.03.2012, 21:10
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,510 раз(а) в 956 сообщении(ях)
|
Re: 93c46+avr си-код
Сообщение от andron-kip
|
кстати,например,тайминги чтения в даташитах атмела и микрочипа разные
|
А в руках то камень чей? Там не только тайминги, у микрочиповских камней с индексами A и B на конце нет ORG, первые строго восьмибитные, вторые - 16-ти. Так что с Атмеловским только 93С46 С совпадет.
__________________
Halex
|
|
|
|
28.03.2012, 22:17
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: 93c46+avr си-код
А что конкретно не получается? Запись? Чтение? Есть ли под рукой программатор, который работает с этой памятью? Возможно, стоит и саму микросхему проверить...
Я работал с ними в 16-разрядном режиме, по тем даташитам, что выкладывал. Все пошло с первого же раза. Никакими "таймингами" вообще не заморачивался - обмен шел через порты в/в, каждое действие занимало несколько микросекунд, всяко получалось заведомо больше, чем необходимо. Единственно что после записи нужно выдерживать паузу в несколько миллисекунд.
В общем, никаких сложностей с ними не помню...
|
|
|
|
28.03.2012, 23:02
|
|
Прописка
Регистрация: 28.10.2007
Адрес: краснодарский край
Сообщений: 137
Сказал спасибо: 16
Сказали Спасибо 557 раз(а) в 84 сообщении(ях)
|
Re: 93c46+avr си-код
на руках имею два чипа-атмел и СТ-оба 93с46 без всяких индексов.
оба включены в 8-битном режиме,код тоже писал под 8-битный режим.
уже сижу и пишу по шагово каждую инструкцию,как в асме,пользуясь даташитом микрочипа.
сразу оговорюсь:профессионалом не являюсь,возможно неправильно понимаю даташит и тайминги,сильно не издевайтесь,выкладываю рутину последней версии со свежими косяками....
честно признаюсь-основа кода спижена мной уже не помню откуда
#define CS PORTB.0
#define MCLK PORTB.1
#define MOSI PORTB.2
#define MISO PINB.3
void w (void)
{
delay_us(2);
}
void ewen(void)
{
unsigned char i=0;
CS=0;
MCLK=0;
MOSI=0;
w();
MCLK=1; //1 front
w();
MCLK=0;
MOSI=1;
CS=1;
w();
MCLK=1; //2 front
w();
MCLK=0;
MOSI=0;
w();
MCLK=1; //3 front
w();
MCLK=0;
w();
MCLK=1; //4 front
w();
MCLK=0;
MOSI=1;
w();
MCLK=1; //5 front
w();
MCLK=0;
w();
MCLK=1; //6 front
w();
MCLK=0;
MOSI=0;
w();
for(i=0;i‹=4;i++)
{
MCLK=1;
w();
MCLK=0;
w();
}
MCLK=0;
MOSI=0;
CS=0;
}
void ewds(void)
{
unsigned char i=0;
CS=0;
MCLK=0;
MOSI=0;
w();
MCLK=1; //1 front
w();
MCLK=0;
MOSI=1;
CS=1;
w();
MCLK=1; //2 front
w();
MCLK=0;
MOSI=0;
w();
MCLK=1; //3 front
w();
MCLK=0;
w();
MCLK=1; //4 front
w();
MCLK=0;
//MOSI=1;
w();
MCLK=1; //5 front
w();
MCLK=0;
w();
MCLK=1; //6 front
w();
MCLK=0;
MOSI=0;
w();
for(i=0;i‹=4;i++)
{
MCLK=1;
w();
MCLK=0;
w();
}
MCLK=0;
MOSI=0;
CS=0;
}
void ee_write(unsigned char address , unsigned char data)
{
unsigned char i=0;
ewen();
CS=0;
MCLK=0;
MOSI=0;
w();
MCLK=1; //1 front
w();
MCLK=0;
MOSI=1;
CS=1;
w();
MCLK=1; //2 front
w();
MOSI=0;
MCLK=0; //
w();
MCLK=1; //3 front
w();
MCLK=0;
MOSI=1;
w();
MCLK=1; //4 front
w();
MCLK=0;
MOSI=0;
w();
for(i=0;i‹=6;i++){
MCLK=1;
if(address&0x80) MOSI=1;
else MOSI=0;
w();
MCLK=0;
address=address‹‹1;
w();
}
for(i=0;i‹=7;i++){
MCLK=1;
if(data&0x80) MOSI=1;
else MOSI=0;
w();
MCLK=0;
data=data‹‹1;
w();
}
MOSI=0;
CS=0;
w();
CS=1;
while(1)
{
if(MISO==1) break;
w();
}
CS=0;
w();
CS=1;
w();
ewds();
}
unsigned char ee_read(unsigned char address)
{
unsigned char dump=0;
unsigned char i=0;
CS=0;
MCLK=0;
MOSI=0;
w();
MCLK=1; //1 front
w();
MCLK=0;
CS=1;
MOSI=1;
w();
MCLK=1; //2 front
w();
MCLK=0;
w();
MCLK=1; //3 front
w();
MCLK=0;
MOSI=0;
w();
MCLK=1; //4 front
w();
MCLK=0;
MOSI=1;
w();
for(i=0;i‹=6;i++){
MCLK=1;
if(address&0x80) MOSI=1;
else MOSI=0;
w();
MCLK=0;
address=(address‹‹1);
w();
}
for(i=0;i‹=7;i++){
MCLK=1;
dump=(dump‹‹1);
dump|=MISO;
w();
MCLK=0;
w();
}
CS=0;
w();
CS=1;
return dump;
}
Последний раз редактировалось andron-kip; 28.03.2012 в 23:06.
|
|
|
|
28.03.2012, 23:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 04.12.2009
Сообщений: 5,455
Сказал спасибо: 73
Сказали Спасибо 2,510 раз(а) в 1,414 сообщении(ях)
|
Re: 93c46+avr си-код
Я знаю одно - геморроя с ними не оберёшься. Даже паршивые телеки попадаются, которые работают только с одной определённой 93c46, не так давно с таким поролся - бабульки-сторожихи попросили сделать. Перебрал всё, что было в доступности - не работает. Единственное, чего добился - нашёл такую, которая хотя-бы читается. Залил прошивку из инета. Хоть звук при включении орать перестал. Но настроек не сохраняла. Спустя 2 недели выпаял из каких-то весов, смотрю - она. Сбегал, заменил - заработало. Хотя попадались и всеядные телеки и стиралки.
В программаторе тоже морока - читается-пишется как 8 или 16 бит, как копировать - непонятно. Не так скопируешь - не работает. Тьфу! Сам бы в своих разработках - ни за что не применил. Ног у контроллера надо больше на одну. Не знаю, есть ли контроллеры с её интерфейсом, с I2C - точно есть.
|
|
|
|
28.03.2012, 23:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: 93c46+avr си-код
Сообщение от Scadauser
|
Не знаю, есть ли контроллеры с её интерфейсом
|
Примитивнейший SPI... ...переменной длины...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:50.
|
|