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

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

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

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

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

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

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

 
Опции темы

Запись в I2C EEPROM

Непрочитано 07.03.2007, 10:30  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию Запись в I2C EEPROM

Здравствуйте,помогите пожалуйста!
Пытаюсь записать в i2c eeprom из PIC, используя аппаратный i2c. Программа на PICС, моделирую в Proteus.

Код:
void InitMem ()
{
	SCK_DIR=IN;
	SDI_DIR=IN;
	
	SSPCON=0b00101000;
	SSPSTAT=0b10000000;
	SSPADD=0b1010000;
	
	return;
}

void WriteMem (unsigned int data)
{
	SEN=1;					//START
	while (!SSPIF) {};
	SSPIF=0;
	SSPBUF=0b10100000;		//адрес ПЗУ
	while (!SSPIF) {};
	SSPIF=0;
	while (ACKSTAT) {};	
	SSPIF=0;
	
	SSPBUF=0x00;			//старший адрес ячейки
	while (!SSPIF) {};
	SSPIF=0;
	while (ACKSTAT) {};		
	SSPIF=0;

	SSPBUF=0x00;			//младший адрес ячейки
	while (!SSPIF) {};
	SSPIF=0;
	while (ACKSTAT) {};
	SSPIF=0;		

	SSPBUF=0x00;			//данные
	while (!SSPIF) {};
	SSPIF=0;
	while (ACKSTAT) {};		
	SSPIF=0;

	PEN=1;					//STOP
	while (!SSPIF) {};
	SSPIF=0;
		
	return;
}
На выделенном участке I2C MemoruLog Messages (в Proteus) выдает:
1.550606273m [RX_ADDR(2) ]: *WARNING* Stop setup time violated. Clock positive edge was at 1.5505069m, setup time is 99.373n, minumum is 600.n).
и соответственно ничего не пишется.
В примере HiTech PICC по I2C такая же фигня.

-- Прилагается рисунок: --
Реклама:
yel вне форума  
Непрочитано 07.03.2007, 12:52  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Посмотрел в протеусе сигналы на линии с помощью I2CSPY. Процессор сразуже после передачи старшего адреса ячейки (т.е. второго байта посылаемой информации) дает на линию STOP. Может кто нибудь знает в чем дело?
yel вне форума  
Непрочитано 07.03.2007, 13:53  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

по аглицки написано что нарушены временные интервалы -похоже паузу нужно добавить.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 07.03.2007, 14:31  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
по аглицки написано что нарушены временные интервалы -похоже паузу нужно добавить.
PIC выставляет сам сигнал STOP (после второго отправленного байта). Этого не должно быть. Насколько я понял, STOP посылается при установке в 1 бита SSPCON2,PEN. EEPROM видит, что не все данные отосланы, а STOP выставлен, вот и пишется, что время не то.
Вопрос в том, почему PIC сам посылает STOP без команды?
yel вне форума  
Непрочитано 07.03.2007, 15:15  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

т.е. почему он

while (ACKSTAT) {};

проскакивает ?

Шагайте по исходнику АСМ кнопкой F11 и смотрите осциллограммы сигналов и что там вообще творится.

Может протеус глючит или модель ПИКа.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 07.03.2007, 15:32  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

[quote="avr123-nm-ru"]т.е. почему он

while (ACKSTAT) {};

проскакивает ?
quote]
В том то и дело, что он ничего не проскакивает, а просто выдает на линию STOP. "Когда его не просят"
yel вне форума  
Непрочитано 07.03.2007, 15:34  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
т.е. почему он

while (ACKSTAT) {};

проскакивает ?
Шагайте по исходнику АСМ кнопкой F11 и смотрите осциллограммы сигналов и что там вообще творится.

Может протеус глючит или модель ПИКа.
yel вне форума  
Непрочитано 07.03.2007, 15:48  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Прошу прощения за за последние посты, не на то нажал, запарился уже.

Итак:
Дело в том, что PIC ничего не проскакивает, он просто выдает на линию STOP, "когда его не просят"
yel вне форума  
Непрочитано 07.03.2007, 16:08  
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Все разобрался
установил:
SSPCON=0b00101000;
STAT_SMP=1;
SSPCON2=0;
И настроил скорость:
SSPADD=0x15;
yel вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись EEPROM Megi88 FedorChek Микроконтроллеры, АЦП, память и т.д 3 23.03.2009 18:42
Запись в EEPROM pic16f628a J-t Микроконтроллеры, АЦП, память и т.д 6 22.01.2008 16:10
PIC,запись в EEPROM ? retas Микроконтроллеры, АЦП, память и т.д 6 30.11.2007 19:13
Запись в eeprom в ATtiny2313 Violett Микроконтроллеры, АЦП, память и т.д 4 23.04.2006 23:19
Запись чтение в EEPROM gnom Микроконтроллеры, АЦП, память и т.д 2 24.02.2006 23:10


Часовой пояс GMT +4, время: 18:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.