Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 23.08.2007, 17:20  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию Возможно ли подключить к Mega 16 память EEPROM АТ24С16А?

Возможно ли подключить к МК данную микросхему памяти. У микросхемы АТ24С16А связь с МК осуществляется через 2Wire интерфейс. Насколько я знаю в Mega 16 такой интерфейс аппаратно не поддерживается , как его реализовать программно и получится ли из этого что-нибудь путевое? До этого я использовал память DataFlash AT45D ( SPI интерфейс), но она дороговато стоит да и достать не так легко как EEPROM АТ24С16А. Поэтому хочу попробовать эту микросхему памяти. Может кто даст свои советы или предложит другие варианты добавления памяти.
Реклама:
Zemlyanov вне форума  
Непрочитано 23.08.2007, 17:49  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Кто сказал что у 16 меги нет аппаратного и2с протокола? есть он...
Можно все конечно самому написать.
Каким компилятором пользуетесь? Я пишу на кодевижене, а в нем есть библиотека для работы по и2с протоколу, писать вообще ничего не надо!
dimonbest вне форума  
Непрочитано 23.08.2007, 22:55  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Пользуюсь тоже CodeVisionAVR . Я и не знал что 2Wire I2C это одно и тоже. Я правда и I2C некогда не пользовался. Может есть какие то особенности в работе, подскажите.
Zemlyanov вне форума  
Непрочитано 23.08.2007, 23:16  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Пример есть в справке компилятора
Код:
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 */
}
lsa вне форума  
Непрочитано 24.08.2007, 08:34  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от Zemlyanov
Пользуюсь тоже CodeVisionAVR . Я и не знал что 2Wire I2C это одно и тоже. Я правда и I2C некогда не пользовался. Может есть какие то особенности в работе, подскажите.
И datasheet конечно же не помешает почитать.
Когда будете собирать схему надо не забыть подпаять подтягивающие резисторы на лапы SCL и SDA...
dimonbest вне форума  
Непрочитано 24.08.2007, 09:29  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Спасибо за помощью. Все понял, пример в компиляторе посмотрел, буду пробовать.
Zemlyanov вне форума  
Непрочитано 24.08.2007, 16:16  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

В примере из CodeVision память 256 байт , с адресацией к нужной ячейки памяти все понятно. А как адресовать мне , у меня память 16Кб. Какая программно обратится к нужной ячейки памяти ? В ДатаШит не посылайте, я там уже был, принципа адресации памяти свыше 256 байт не понял. Если можно напишите код на С, он бы мне очень помог.
Zemlyanov вне форума  
Непрочитано 24.08.2007, 16:20  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

ТАК:
Код:
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);
}
dimonbest вне форума  
Непрочитано 26.08.2007, 10:27  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Не пойму что происходит с микросхемой, сохраняю разные значения по разным адресам а когда читаю эти адреса выводится последнее записанное значение со всех адресов .Такое ощущение что в микросхеме один адрес, может она накрылась (подсоединял к плате проводками не аккуратно, мог и закоротить). Программа вроде написана правильно, проверял в Proteuse , сразу вроде работала нормально. Может кто сталкивался с такой проблемой ?
Zemlyanov вне форума  
Непрочитано 26.08.2007, 11:16  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от Zemlyanov
...сразу вроде работала нормально.
Вроде работала или точно? И что значит сразу? Уже не работает? Попробуте выложить проект...
dimonbest вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot