Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.08.2007, 17:20
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Возможно ли подключить к Mega 16 память EEPROM АТ24С16А?
Возможно ли подключить к МК данную микросхему памяти. У микросхемы АТ24С16А связь с МК осуществляется через 2Wire интерфейс. Насколько я знаю в Mega 16 такой интерфейс аппаратно не поддерживается , как его реализовать программно и получится ли из этого что-нибудь путевое? До этого я использовал память DataFlash AT45D ( SPI интерфейс), но она дороговато стоит да и достать не так легко как EEPROM АТ24С16А. Поэтому хочу попробовать эту микросхему памяти. Может кто даст свои советы или предложит другие варианты добавления памяти.
|
|
|
|
23.08.2007, 17:49
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Кто сказал что у 16 меги нет аппаратного и2с протокола? есть он...
Можно все конечно самому написать.
Каким компилятором пользуетесь? Я пишу на кодевижене, а в нем есть библиотека для работы по и2с протоколу, писать вообще ничего не надо!
|
|
|
|
23.08.2007, 22:55
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Пользуюсь тоже CodeVisionAVR . Я и не знал что 2Wire I2C это одно и тоже. Я правда и I2C некогда не пользовался. Может есть какие то особенности в работе, подскажите.
|
|
|
|
23.08.2007, 23:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Пример есть в справке компилятора
Код:
|
Example how to access an Atmel 24C02 256 byte I2C EEPROM:
/* the I2C bus is connected to PORTB */
/* the SDA signal is bit 3 */
/* the SCL signal is bit 4 */
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
/* now you can include the I2C Functions */
#include ‹i2c.h›
/* function declaration for delay_ms */
#include ‹delay.h›
#define EEPROM_BUS_ADDRESS 0xa0
/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}
/* write a byte to the EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
/* 10ms delay to complete the write operation */
delay_ms(10);
}
void main(void) {
unsigned char i;
/* initialize the I2C bus */
i2c_init();
/* write the byte 55h at address AAh */
eeprom_write(0xaa,0x55);
/* read the byte from address AAh */
i=eeprom_read(0xaa);
while (1); /* loop forever */
} |
|
|
|
|
24.08.2007, 08:34
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от Zemlyanov
|
Пользуюсь тоже CodeVisionAVR . Я и не знал что 2Wire I2C это одно и тоже. Я правда и I2C некогда не пользовался. Может есть какие то особенности в работе, подскажите.
|
И datasheet конечно же не помешает почитать.
Когда будете собирать схему надо не забыть подпаять подтягивающие резисторы на лапы SCL и SDA...
|
|
|
|
24.08.2007, 09:29
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Спасибо за помощью. Все понял, пример в компиляторе посмотрел, буду пробовать.
|
|
|
|
24.08.2007, 16:16
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
В примере из CodeVision память 256 байт , с адресацией к нужной ячейки памяти все понятно. А как адресовать мне , у меня память 16Кб. Какая программно обратится к нужной ячейки памяти ? В ДатаШит не посылайте, я там уже был, принципа адресации памяти свыше 256 байт не понял. Если можно напишите код на С, он бы мне очень помог.
|
|
|
|
24.08.2007, 16:20
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
ТАК:
Код:
|
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 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();
/* 5 ms delay to complete the write operation */
delay_ms(5);
} |
|
|
|
|
26.08.2007, 10:27
|
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Не пойму что происходит с микросхемой, сохраняю разные значения по разным адресам а когда читаю эти адреса выводится последнее записанное значение со всех адресов .Такое ощущение что в микросхеме один адрес, может она накрылась (подсоединял к плате проводками не аккуратно, мог и закоротить). Программа вроде написана правильно, проверял в Proteuse , сразу вроде работала нормально. Может кто сталкивался с такой проблемой ?
|
|
|
|
26.08.2007, 11:16
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Сообщение от Zemlyanov
|
...сразу вроде работала нормально.
|
Вроде работала или точно? И что значит сразу? Уже не работает? Попробуте выложить проект...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
память (внешняя память)
|
satnettv |
Микроконтроллеры, АЦП, память и т.д |
0 |
04.09.2007 15:20 |
LCD + Mega
|
ShaxTep |
Микроконтроллеры, АЦП, память и т.д |
5 |
16.12.2006 21:16 |
АЦП Mega
|
AVK74 |
Микроконтроллеры, АЦП, память и т.д |
1 |
21.03.2006 10:01 |
Какую память выбрать EEPROM/Flash с SPI/I2C?
|
graham |
Микроконтроллеры, АЦП, память и т.д |
9 |
17.11.2005 19:17 |
Mega 162 и сторожевик???
|
Слава |
Микроконтроллеры, АЦП, память и т.д |
2 |
06.03.2005 11:19 |
Часовой пояс GMT +4, время: 22:36.
|
|