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

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

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

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

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

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


 
Опции темы
Непрочитано 21.01.2010, 19:28  
caffy
Прохожий
 
Регистрация: 01.12.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
caffy на пути к лучшему
Вопрос i2c proteus глюк?

PIC16F874 + I2C debugger
Использую аппаратную поддержку (pic - мастер)
Из-за того изменение сигнала на SDA и SCL происходят в один момент (хотелось бы, чтобы уровень SDA менялся бы позже, чем SCL), то идет неверная интерпретация сигнала i2c дебагером
Например, вот этот импульс он интерпретирует как повторный старт, хотя это второй бит посылаемых данных
Не могу понять, что я делаю не так, были попытки поменять контроллер и версию протеуса


SCL - синий, SDA - желтый
Как заставить пик выставлять нужную длительность импульсов?
Реклама:
caffy вне форума  
Непрочитано 21.01.2010, 19:37  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: i2c proteus глюк?

Пример в студию.
TEHb вне форума  
Непрочитано 22.01.2010, 15:26  
caffy
Прохожий
 
Регистрация: 01.12.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
caffy на пути к лучшему
По умолчанию Re: i2c proteus глюк?

Вот кусок, относящийся к I2C
Код:
LIST    p=16F874
include		‹p16F874.inc›

TRUE	equ	1
FALSE	equ	0

#define _SDA	PORTC, 4
#define _SCL	PORTC, 3
#define _BUF 	SSPBUF
#define _PADD 	SSPADD

_SAD	equ		b'1101000'	;адрес ведомого устройства
_SADw	equ		b'11010000'	;SAD+w
_SADr	equ		b'11010001'	;SAD+r
_SUBh	equ		28h			;SUB - адрес регистра, из которого получаем старший байт данных
_SUBl	equ		29h			;SUB - адрес регистра, из которого получаем младший байт данных


org	0x00
goto	start
;
org	0x04	; уход в прерывание
	
retfie		; возврат по стеку

start:
; ----- common initial ------
bsf		INTCON, GIE				; глобальное разрешение всех прерываний
bsf		INTCON, PEIE			; разрешение прерываний от периферийных модулей

; ----- I2C receiver  -------
bsf		STATUS, RP0				; 1 банк
movlw	.10
movwf	SSPADD

bcf		STATUS, RP0				; 0 банк
movlw	b'00001000'				; установка режима ведущего i2c 
movwf	SSPCON

bsf		STATUS, RP0				; 1 банк
movlw	b'00011000'				; SCL на вход, SDA на вход
movwf	TRISC

bsf 	STATUS, RP0				; 1 банк
bcf		SSPSTAT, CKE			; выходные уровни соответствуют спецификации I2C

bcf		STATUS, RP0
movlw	0x00
movwf	PIR1

bcf		STATUS, RP0				; 0 банк
movlw	b'00101000'				; включение поддрежки i2c
movwf	SSPCON

bsf 	STATUS, RP0				; 1 банк
bsf		SSPCON2, SEN			; инициирование START

call i2c_wait_SSPIF

bcf		STATUS, RP0
movlw	_SADw
movwf	SSPBUF

call i2c_wait_ACK
call i2c_wait_SSPIF

bcf		STATUS, RP0
movlw	_SUBh
movwf	SSPBUF

call i2c_wait_ACK
call i2c_wait_SSPIF

bsf 	STATUS, RP0				; 1 банк
bsf		SSPCON2, RSEN			; формируем повторный START

call i2c_wait_SSPIF

bcf		STATUS, RP0
movlw	_SADw
movwf	SSPBUF

call i2c_wait_ACK
call i2c_wait_SSPIF

bsf 	STATUS, RP0				; 1 банк
movlw	0x00
movwf	SSPSTAT

bsf 	STATUS, RP0				; 1 банк
bsf		SSPCON2, RCEN			; разрешаем прием данных

call i2c_wait_SSPIF
caffy вне форума  
Непрочитано 18.02.2010, 19:57  
VOSAP
Частый гость
 
Регистрация: 06.04.2009
Сообщений: 20
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
VOSAP на пути к лучшему
По умолчанию Re: i2c proteus глюк?

Повторюсь конечно
При использовании аппаратного i2c в контроллере 16F887, i2c Дебагер корректно принимает только условие старт и стоп. Вместо принимаемых символов(данных) - знаки вопроса. В железе все работает. При использовании програмного (самописного) i2c, i2c дебагер принимал все правильно.


// Настройка модуля MSSP режим i2c мастер
SSPSTAT = 0;
SMP = 1;
SSPADD = ClockValue;
SSPCON2 = 0;
SSPCON = 0b00101000; // SSPEN‹5›=1;
SSPIF = 0;
BCLIF = 0;

функции

void I2C_Start (void)
{
SSPIF = 0;
SEN = 1; // Start
while (SSPIF==0) ;
}

void I2C_Stop (void)
{
SSPIF = 0;
PEN = 1;
while (SSPIF==0) ;
}

void I2C_Send_Byte (unsigned char Data)
{
SSPIF = 0;
SSPBUF = Data;
while (SSPIF==0);
}

Думаю дебагер одновременный спад задних фронтов, воспринимает как шум.
VOSAP вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c debugger в proteus caffy Proteus 12 08.07.2020 22:52
AT89C51RD2 & Proteus & XDATA Muzicant Proteus, KiCAD и другие ECAD 11 06.10.2017 18:38
Proteus не работает в связке с MPLAB-ом SergSit Proteus 11 11.05.2011 13:44
LPT b PROTEUS romshe Proteus 0 01.11.2009 18:22
[Решено] Проблема с eeprom в Proteus Memfis666 Proteus, KiCAD и другие ECAD 1 01.10.2009 15:38


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


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