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

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

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

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

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

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

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

Закрытая тема
Опции темы
Непрочитано 07.03.2007, 10:30   #1
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   #2
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

Посмотрел в протеусе сигналы на линии с помощью I2CSPY. Процессор сразуже после передачи старшего адреса ячейки (т.е. второго байта посылаемой информации) дает на линию STOP. Может кто нибудь знает в чем дело?
yel вне форума  
Непрочитано 07.03.2007, 13:53   #3
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 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   #4
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   #5
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 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   #6
yel
Частый гость
 
Регистрация: 28.07.2006
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
yel на пути к лучшему
По умолчанию

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

while (ACKSTAT) {};

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

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

while (ACKSTAT) {};

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

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

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

Итак:
Дело в том, что PIC ничего не проскакивает, он просто выдает на линию STOP, "когда его не просят"
yel вне форума  
Непрочитано 07.03.2007, 16:08   #9
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, время: 02:49.


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