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

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

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

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

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

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


 
Опции темы

i2c debugger в proteus

Непрочитано 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
Сообщений: 348
Сказал спасибо: 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,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
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,693
Сказал спасибо: 28
Сказали Спасибо 4,526 раз(а) в 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, время: 08:56.


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