Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
13.04.2009, 03:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от khomiak
|
Сообщение от dimonbest
|
В кодевижине эти библиотеки есть. В справке есть пример работы с памятью, правда с другой, но принцип тот же.
|
это хорошо...
а что за память?
может если есть уже библиотеки, то лучше ту память взять?
|
Ребята.. вы бы перед тем как спрашивать. даташиты бы что ли почитали.. что бы владеть предметом хотя бы в минимальном обьёме... что бы УМЕЛИ спросить НУЖНОЕ...
24C00 24C01 24C02 24C04 24C08 24C16. отличаются только одбъемом памяи и объемомбуфера для записи.
24С32, 24С64, 24С128, 24С256, 24С1024 отличаются ещё и 10 битным адресом...
|
|
|
|
13.04.2009, 09:58
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от khomiak
|
Опять обращаюсь к общественности.
спаял вот такую штуку... джампер отключает питание микроконтроллера, когда считываю память с компа.
работает от внутреннего генератора 8 МГц.
(CKSEL0=0, CKSEL1=0, CKSEL2=1, CKSEL3=0, SUT0=0, SUT1=1)
и написал прогу, только вот она не работает почему-то ...
кинте рабочие коды плиз, если у кого есть.
#asm
.equ __i2c_port=0x12
.equ __sda_bit=4
.equ __scl_bit=3
#endasm
#include‹MEGA8.h›
#include‹delay.h›
#include ‹i2c.h›
#define EEPROM_BUS_ADDRESS 0xa0
/* write a byte to the EEPROM */
void eeprom_write(unsigned int address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
void main(void) {
/* write the byte 55h at address 1111h */
eeprom_write(0x1111,0x55);
}
|
Какую микросхему памяти используешь?
Прикрепленный файл: 9688756.pdf
|
|
|
|
13.04.2009, 12:39
|
|
Временная регистрация
Регистрация: 27.10.2007
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от picavr
|
Ребята.. вы бы перед тем как спрашивать. даташиты бы что ли почитали.. что бы владеть предметом хотя бы в минимальном обьёме... что бы УМЕЛИ спросить НУЖНОЕ...
24C00 24C01 24C02 24C04 24C08 24C16. отличаются только одбъемом памяи и объемомбуфера для записи.
24С32, 24С64, 24С128, 24С256, 24С1024 отличаются ещё и 10 битным адресом...
|
http://www.gaw.ru/html.cgi/txt/doc/m...24c128_256.htm
Память размером 256 кбит внутренне разделена на 512 страниц по 64 байта в каждой. Для доступа к памяти по произвольному адресу требуется 15-разрядное слово адреса.
но никак не 10. если не можете показать рабочий код, то лучше вообще не писать.
Сообщение от dimonbest
|
Какую микросхему памяти используешь?
|
спаибо, dimonbest, что опять откликнулся.
память 24с256.
в прикрепленном пдф есть схема подключения. с компа считать и записать могу. какой код для записи с мк?
|
|
|
|
13.04.2009, 13:11
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Попробуй вот так, должно получится...
Код:
|
#define EEPROM_BUS_ADDRESS 0xa0
/* write a byte to the EEPROM */
void eeprom_write(unsigned int address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address››8);
i2c_write(address & 0x00FF);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
void main(void) {
eeprom_write(0,0x55);
} |
|
|
|
|
13.04.2009, 22:29
|
|
Временная регистрация
Регистрация: 27.10.2007
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от dimonbest
|
Попробуй вот так, должно получится...
|
спасибо большое. действительно получилось.
ниже привожу пример считывания байта с одной ячейки(0x0001) и записи в другую ячейку(0x70e7).
мож кому мой опыт пригодится.
Код:
|
#asm
.equ __i2c_port=0x12
.equ __sda_bit=4
.equ __scl_bit=3
#endasm
#include‹MEGA8.h›
#include‹delay.h›
#include ‹i2c.h›
#define EEPROM_BUS_ADDRESS 0xa0
void eeprom_write(unsigned int address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address››8);
i2c_write(address & 0x00FF);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
unsigned char eeprom_read(unsigned int address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address››8);
i2c_write(address & 0x00FF);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
void main(void) {
unsigned char i;
i2c_init();
i=eeprom_read(0x0001);
eeprom_write(0x70e7,i);
} |
|
|
|
|
14.04.2009, 03:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от khomiak
|
Память размером 256 кбит внутренне разделена на 512 страниц по 64 байта в каждой.
|
Вообще то не организация по странично, а буфер RAM 64 байта, для записи с любого адреса по 64 байт.
Сообщение от khomiak
|
Для доступа к памяти по произвольному адресу требуется 15-разрядное слово адреса. но никак не 10.
|
ошибся,
24с00-16 7 бит адрес
24с32-64 10бит адрес
24с128-256 16 бит адрес
24с512 17 бит адрес
Сообщение от khomiak
|
если не можете показать рабочий код, то лучше вообще не писать.
|
А мой код на АСМ PIC вам поможет? ))) и там всё просто до безобразия. Пишем по даташиту и всё пашет.
|
|
|
|
14.04.2009, 20:41
|
|
Временная регистрация
Регистрация: 27.10.2007
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от khomiak
|
Память размером 256 кбит внутренне разделена на 512 страниц по 64 байта в каждой.
|
Вообще то не организация по странично, а буфер RAM 64 байта, для записи с любого адреса по 64 байт.
|
цитата из даташита:
AT24C128/256, 128K/256K SERIAL EEPROM: The 128K/256K is internally organized as 256/512 pages of 64-bytes each.
(пер.256/512 страниц по 64 байта каждый)
Сообщение от picavr
|
Сообщение от khomiak
|
Для доступа к памяти по произвольному адресу требуется 15-разрядное слово адреса. но никак не 10.
|
ошибся,
24с00-16 7 бит адрес
24с32-64 10бит адрес
24с128-256 16 бит адрес
24с512 17 бит адрес
|
цитата из даташита:
AT24C128/256. Random word addressing requires a 14/15-bit data word address.
(пер.любое слово адресуеться 14/15-битным словом адреса)
AT24C512. Random word addressing requires a 16-bit data word address.
(пер.любое слово адресуеться 16-битным словом адреса)
значит размерность адреса такова:
AT24C128 - 14
AT24C256 - 15
AT24C512 - 16
Сообщение от picavr
|
Сообщение от khomiak
|
если не можете показать рабочий код, то лучше вообще не писать.
|
А мой код на АСМ PIC вам поможет? ))) и там всё просто до безобразия. Пишем по даташиту и всё пашет.
|
а может кому-то и будет интересно..
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Протокол I2C с микросхемами 24с256
|
Faworit |
Микроконтроллеры, АЦП, память и т.д |
6 |
20.07.2009 23:04 |
Память в МК
|
worldmasters |
Микроконтроллеры, АЦП, память и т.д |
4 |
20.10.2008 17:25 |
память (внешняя память)
|
satnettv |
Микроконтроллеры, АЦП, память и т.д |
0 |
04.09.2007 15:20 |
Дополнительная память
|
IlyaD |
Микроконтроллеры, АЦП, память и т.д |
1 |
18.12.2006 13:56 |
Память
|
sachem |
Микроконтроллеры, АЦП, память и т.д |
1 |
23.09.2003 11:15 |
Часовой пояс GMT +4, время: 23:28.
|
|