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

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

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

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

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

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


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

подскажите, как пользоваться i2c дебагером в протеусе, не могу разобраться
Реклама:
caffy вне форума  
Непрочитано 18.12.2009, 17:15  
xerox2
Вид на жительство
 
Регистрация: 15.03.2005
Сообщений: 351
Сказал спасибо: 17
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
xerox2 на пути к лучшему
По умолчанию Re: i2c debugger в proteus

подключай и пользуй
"ну тупыыыее" (С) задорнов
xerox2 вне форума  
Непрочитано 18.12.2009, 17:53  
caffy
Прохожий
 
Регистрация: 01.12.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
caffy на пути к лучшему
По умолчанию Re: i2c debugger в proteus

во-первых, где мне установить адрес, если я в свойствах в пункте Address byte 1 устанавливаю адрес 1101000 пишет, что значение должно быть до 255, не понятно (
во-вторых как мне задать сами данные (полезную нагрузку) в посылаемой последовательности
в-третьих, чем окно Queued отличается от Predefined
я новичок, помогите
caffy вне форума  
Непрочитано 18.12.2009, 19:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: i2c debugger в proteus

схему нам!
вообще им проще пользоваться, как наблюдателем. Сразу видно, куда что течет. В i2c главное не упустить момент, когда надо дать сигнал "принято" ack. А то цепочка рвется.
Easyrider83 вне форума  
Непрочитано 18.12.2009, 22:44  
caffy
Прохожий
 
Регистрация: 01.12.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
caffy на пути к лучшему
По умолчанию Re: i2c debugger в proteus

прошу прощения за оформление
вот написала какой-то скелет программы, естестно что там не работает скорее всего многое, но надо же как-то отлаживать
не знаю что я не так делаю, но i2c дебагер ничего не показывает, ну наверное хотя бы потому, что я должна где-то указать адрес ведомого и не знаю как это сделать
скажите что я не так делаю, только помидорами не бросайте
Код:
LIST    p=16C77

include		‹p16c77.inc›

TRUE	equ	1
FALSE	equ	0

#define _SDA	PORTC, 5
#define _SCL	PORTC, 4
#define _DATA SSPBUF


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

CBLOCK	20h		;блок констант
	data_temp	; временное хранилище для данных
	cnt			; счетчик
	temp_w		; сюда сохраняем аккумулятор по переходу в процедуры
	gh_data_h
	gh_data_l
ENDC

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

start:

i2c_init:

	bcf		STATUS, RP0				; 0 банк	
	movlw	b'00001011'
	movwf	SSPCON					; программная поддержка ведущего режима i2c
		
	;bcf		STATUS, RP0				; 0 банк
	clrf	PORTC					
	bsf		STATUS, RP0				; 1 банк
	movlw	b'0001100'				; настроить SDA и SCL на вход ( в соответствии с даташитом)
	movwf	TRISC
	;movlw	b'0000100'				; настроить SDA на вход, SCL всегда настроен на выход
	;movwf	TRISC
	
	bcf		STATUS, RP0				; 0 банк
	bsf		SSPCON, 5				; initialize SSP module ( SSPEN = 1 )
	
	bsf		STATUS, RP0				; 1 банк	
	movlw	_SAD
	movwf	SSPADD
	;movf	_SAD, SSPADD			; устанавиваем адрес ведомого устройства (последняя 1 - read)

cycle:

	;bcf	STATUS, RP0				; 0 банк	
	
	movwf	temp_w
	call i2c_send_start
	movlw	_SADw
	movwf	_DATA
	;movf _SADw, _DATA	
	call i2c_send_byte
	call i2c_wait_ask
	btfsc _SDA
	goto cycle						; подтверждение отсутствует, пробуем снова
	movlw	_SUBl
	movwf	_DATA
	;movf _SUBl, _DATA				; подтверждение пришло - передаем адрем регистра
	call i2c_wait_ask				; ждем подтверждение
	btfsc _SDA
	goto cycle						; подтверждение отсутствует, пробуем снова
	call i2c_send_repstart			; подтверждение есть - передаем повторный старт
	movlw	_SADr
	movwf	_DATA
	;movf _SADr, _DATA	
	call i2c_send_byte
	call i2c_wait_ask
	btfsc _SDA
	goto cycle						; подтверждение отсутствует, пробуем снова
	call i2c_receive_byte			; подтверждение пришло - принимаем данные
	is_bf:
		btfss	SSPSTAT, BF			; завершен ли прием?
		goto	is_bf				; не завершен - ждем
	call i2c_send_stop				; прием завершен, посылаем stop
	
	goto cycle	
	
	
	
	goto start
;---------------------------------	
;----- Low level subprograms -----
;---------------------------------

i2c_delay:		;40 usec
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	return

	
i2c_send_repstart:
	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000000'				; настроить SDA на выход (5)
	movwf	TRISC
	bsf		_SCL					; SCL - high
	bcf		_SDA					; SDA - low
	bsf		_SDA					; SDA - high
	;call 	i2c_delay
	bcf		_SDA					; SDA - low
	;call 	i2c_delay
	bcf		_SCL					; SCL - low
	bcf		STATUS, RP0				; 0 банк	
	return
	
i2c_send_start:

	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000000'				; настроить SDA на выход (5)
	movwf	TRISC
	bsf		_SDA						; SDA - high
	bsf		_SCL						; SCL - high
	;call 	i2c_delay
	bcf		_SDA						; SDA - low
	;call 	i2c_delay
	bcf		_SCL						; SCL - low
	bcf		STATUS, RP0				; 0 банк	
	return
	
i2c_send_stop:

	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000000'				; настроить SDA на выход (5)
	movwf	TRISC
	bsf		_SCL						; SCL - high
	bcf		_SDA						; SDA - low
	;call 	i2c_delay
	bsf		_SDA						; SDA - high
	;call 	i2c_delay
	bcf		_SCL						; SCL - low
	bcf		STATUS, RP0				; 0 банк	
	return

; посылка байта
; значение DATA (посылаемый байт) должно быть предварительно установлено
i2c_send_byte:
	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000000'				; настроить SDA на выход (5)
	movwf	TRISC
	movlw	_DATA
	movwf	data_temp
	;movf	_DATA, data_temp			; из регистра данных в регистр temp
	movlw	0x8						; устанваливаем счетчик битов
	movwf	cnt	
	i2c_send_bit:
		bcf	_SDA						; SDA - low
		rlf	data_temp, 1			; сдвиг влево через перенос
		btfsc STATUS, C				; если флаг переноса 0, то пропускаем перепад
		bsf	_SDA						; SDA - high
		bsf _SCL						; SCL - high - конец передачи бита - перепад уровней
		bcf _SCL						; SCL - low
		decfsz	cnt,1				; декремент счетчика битов
		goto i2c_send_bit					
	return

i2c_if_bus_empty:
	return

; ожидаем asknowlegment от приемника
; если SDA - high, подтверждение отсутствует и наверное надо снова попробовать передать данные
i2c_wait_ask:
	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000100'				; SDA на вход (5)
	movwf	TRISC
	bsf _SCL							; SCL - high - готов принять подтверждение
	return
	
; принимаем байт
i2c_receive_byte:
	bsf		STATUS, RP0				; 1 банк
	movlw	b'0000000'				; настроить SDA на выход (5)
	movwf	TRISC
	bcf _SDA							; SDA - low - готовы принимать данные
	bcf _SCL							; SCL - low - готовы принимать данные
	return
	
end
caffy вне форума  
Непрочитано 18.12.2009, 23:24  
Alexey_sevast
Частый гость
 
Регистрация: 31.07.2009
Сообщений: 23
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Alexey_sevast на пути к лучшему
По умолчанию Re: i2c debugger в proteus

выкладываю свой небольшой пример применения i2c debugger. Тоже когда-то писал тупую тестовую программку, чтобы чисто протестить I2C в протеусе. В данном проекте в протеусе контроллер AT90S2313 выполняет следующую последовательность действий: 1) старт, 2) слейв-адрес + W, 3) отправляет один байт данных 4) отправляет стоп-состояние на периферийный регистр PCF8574; 5) отправляет рестарт, 6) отправляет слейв-адрес + R, 7) принимает 2 байта данных с этого регистра, 8 ) отправляет стоп-состояние. Шина I2C в данном случае также реализована программно.
Может быть чем-то поможет... Удачи!
Вложения:
Тип файла: rar i2c_2313.rar (18.1 Кб, 412 просмотров)

Последний раз редактировалось Alexey_sevast; 18.12.2009 в 23:47. Причина: Грубая ошибка при описании программы!
Alexey_sevast вне форума  
Непрочитано 19.12.2009, 19:26  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: i2c debugger в proteus

Так, похоже грядет "зимняя сессия" и очередная миграция перелетных ласточек. (Не в обиду! Это так, типа предсказание Вольфа Мессинга).
Мисс caffy - к Вам это не относится, дамы у нас здесь пользуются особым вниманием и положением. Просто маленькое замечание не по теме. Все вопросы, связанные с Протеусом обсуждаются в специально отведенном для этого подфоруме (картинка покажет где).
Что касается Выложенного Вами кода, то на досуге посмотрим, но бегло видно, что процедуры I2C взяты из "стандартного" кода, давно блуждающего в Интернете. Он работает в железе, но для симуляторов типа Протеуса там есть один камень прекновения - временные параметры смены сигналов. Поэтому куча "горчичников", и сбои встроенного дебаггера I2C гарантированы, поскольку любой программный дебаггер строго следует заданным параметрам, как правило стандартным для протокола, а здесь слегка нарушенным. Я когда то пытался подогнать этот вариант под Протеус, но потом забросил, со свободным временем куча проблем.
Миниатюры:
Нажмите на изображение для увеличения
Название: Vetka.gif
Просмотров: 362
Размер:	25.7 Кб
ID:	3007  

Последний раз редактировалось Halex07; 20.12.2009 в 10:17.
Halex07 вне форума  
Непрочитано 21.12.2009, 16:55  
caffy
Прохожий
 
Регистрация: 01.12.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
caffy на пути к лучшему
По умолчанию Re: i2c debugger в proteus

Цитата:
все вопросы, связанные с Протеусом обсуждаются в специально отведенном для этого подфоруме
сорри

спасибо за попытку помочь, проблема решилась включением подтягивающих резисторов, в смысле i2c дебаггер хотя бы начал реагировать
Цитата:
камень прекновения - временные параметры смены сигналов
в даташите указано, что в pic16 есть фильтр, который контролирует длительность импульсов вне зависимости от частоты микроконтроллера, пока не знаю, может придется задержки выставить
Цитата:
процедуры I2C взяты из "стандартного" кода, давно блуждающего в Интернете
код я писала сама (некоторые мометнты взяты из разных источников) на обум без отладки и естественно он не рабочий, ни в коем случае его не стоит копать! я выложила для полноты описания
caffy вне форума  
Непрочитано 12.10.2010, 12:20  
XRuZzz
Частый гость
 
Регистрация: 12.10.2010
Сообщений: 14
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 1 сообщении
XRuZzz на пути к лучшему
По умолчанию Re: i2c debugger в proteus

А можно ли уточнить для чего вывод TRIG ? на дебагере I2C
XRuZzz вне форума  
Непрочитано 21.06.2011, 12:14  
Andrik75
Частый гость
 
Регистрация: 01.03.2009
Сообщений: 23
Сказал спасибо: 11
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Andrik75 на пути к лучшему
По умолчанию Re: i2c debugger в proteus

Скажите, а есть ли компонент для Proteus-а, который мог бы симулировать работу ну практически любого I2C устройства, тоесть в нем была бы возможность настраивать адресс, геристры, задержки и т.д.. Вот я счас мучаюсь с таким светосенсором как MAX9635 и приходится париться с перепрошивкой каждый раз. А хотелось бы попроще и с меньшим гемором.
Andrik75 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AT89C51RD2 & Proteus & XDATA Muzicant Proteus, KiCAD и другие ECAD 11 06.10.2017 18:38
Proteus не работает в связке с MPLAB-ом SergSit Proteus 11 11.05.2011 13:44
Почему Proteus тормозит nsklital Proteus 1 02.11.2009 21:41
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, время: 03:33.


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