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

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

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

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

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

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

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

 
Опции темы
Непрочитано 29.11.2009, 20:52  
toxxinus
Временная регистрация
 
Регистрация: 12.02.2008
Сообщений: 77
Сказал спасибо: 84
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
toxxinus на пути к лучшему
По умолчанию Затруднение с TWI интерфейсом

Доброго времени суток!
Вопрос про реализацию twi интерфейса в микроконтроллерах mega8. Реализовываю передачу между контроллерами ATMega8(12МГц) и ATMEga8L(8МГц). РЕжим передачи - от главного к ведущему. Вот инициализация и функция передачи на главном контроллере:
Код:
/* I2C Init */
		//SCL - 100 kHz
	TWSR = ( 1 ‹‹ TWPS1 )|( 1 ‹‹ TWPS0 );
	TWBR = 252;


int twi_write(char cmd){

//start
	TWCR = (1‹‹TWINT)|(1‹‹TWSTA)|(1‹‹TWEN);
	while (!(TWCR & (1‹‹TWINT)));
	if ((TWSR & 0xF8) != 0x08) return 1;
//address transmit
	TWDR = MOTOR_ADDRESS;
	TWCR = (1‹‹TWINT)|(1‹‹TWEN);
	while (!(TWCR & (1‹‹TWINT)));
	if ((TWSR & 0xF8) != 0x18) return 1;
//data transmit
	TWDR = cmd;
	TWCR = (1‹‹TWINT)|(1‹‹TWEN);
	while (!(TWCR & (1‹‹TWINT)));
	if ((TWSR & 0xF8) != 0x28) return 1;
//stop
	TWCR = (1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWSTO);

return 0;
Вот инициализация и функция(по прерыванию) приема данных:

Код:
/* I2C Init */
	TWAR = 0x02;	//address
	TWCR = (1‹‹TWEA)|(1‹‹TWEN)|(1‹‹TWIE);


ISR( TWI_vect ){

	switch (TWSR & 0xF8){
		case 0x60:			//address
			TWCR = (1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWEA)|(1‹‹TWIE);
			break;
		case 0x70:			//generall call
			TWCR = (1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWEA)|(1‹‹TWIE);
			break;
		case 0x80:			//data recieve
			cmd = TWDR;
			OCR1AL = cmd;
			OCR1BL = cmd;
			TWCR = (1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWEA)|(1‹‹TWIE);
			break;
		case 0xA0:			//stop
			count = 0;
			break;
		default:
			break;
	}
}
Может быть ошибся где, хотя вроде все по даташиту.
Есть сомнение по поводу скорости приемника (8МГц). Может быть маленькая частота??

UPD: Проблема решена. Если кому интересно, в приемнике после детектирования стоп сигнала необходимо установить биты. Вот кусок кода приемника:
Код:
		case 0xA0:			//stop
			TWCR = (1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWEA)|(1‹‹TWIE);
			count = 0;
			break;
Реклама:

Последний раз редактировалось toxxinus; 30.11.2009 в 09:25.
toxxinus вне форума  
Непрочитано 30.11.2009, 09:28  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Не советую работать с ТВИ ИМЕННО на 8-й меге. У них в слэйве жуткие косяки, сам когда-то возился - так намучался... Кстати именно поэтому Атмел и выпустил мега88... Рекомендую в слэйв поставить 48...168 или другую мегу, но только не 8 или 16. Хотя возможно в новых ревизиях мега8 это исправлено...

Или настройте ТВИ в другом чипе, а потом перенесите в мега8
niXto вне форума  
Сказали "Спасибо" niXto
toxxinus (01.12.2009)
Непрочитано 30.11.2009, 23:41  
Деня VDV
Частый гость
 
Аватар для Деня VDV
 
Регистрация: 25.10.2009
Сообщений: 22
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Деня VDV на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

А почему выбор пал именно на TWI?
Почему не UART.
А у 8й меге TWI действительно глючет, Atmel действительно предлогает 88мегу.
Деня VDV вне форума  
Сказали "Спасибо" Деня VDV
toxxinus (01.12.2009)
Непрочитано 01.12.2009, 00:05  
toxxinus
Временная регистрация
 
Регистрация: 12.02.2008
Сообщений: 77
Сказал спасибо: 84
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
toxxinus на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Сообщение от Деня VDV Посмотреть сообщение
А почему выбор пал именно на TWI?
Почему не UART.
Да это для себя было выбрано. Пощупать простейшую шину так сказать... В принципе глюков замечено не было. Все работает как часы))
toxxinus вне форума  
Непрочитано 01.12.2009, 00:25  
Деня VDV
Частый гость
 
Аватар для Деня VDV
 
Регистрация: 25.10.2009
Сообщений: 22
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Деня VDV на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Ну в принципе понял.
Деня VDV вне форума  
Сказали "Спасибо" Деня VDV
toxxinus (02.12.2009)
Непрочитано 01.12.2009, 23:48  
Alex-R
Прохожий
 
Регистрация: 24.11.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Alex-R на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Мастер работает на Mege8 отлично, и ни каких косяков в мастере не обнаружено. Давно всё работает, стабильно и ни каких сбоев. Слэйв не пробовал.
Alex-R вне форума  
Сказали "Спасибо" Alex-R
toxxinus (02.12.2009)
Непрочитано 02.12.2009, 15:05  
Деня VDV
Частый гость
 
Аватар для Деня VDV
 
Регистрация: 25.10.2009
Сообщений: 22
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Деня VDV на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Мастер работает нормально, а вот когда программируешь МК слэйвом уже хуже.
А тем более если МК работают от внутреннего генератора появляются приколы.
Начинаешь шерстить программу а она и рабочая, берешь 88ю прошиваешь туже программу и все работает !
И тут тебе становится так сильно жалко двух потраченных суток что начинаешь сильно ругаться. РРРРР,рррр,РРРРР.
Деня VDV вне форума  
Сказали "Спасибо" Деня VDV
toxxinus (02.12.2009)
Непрочитано 02.12.2009, 18:57  
toxxinus
Временная регистрация
 
Регистрация: 12.02.2008
Сообщений: 77
Сказал спасибо: 84
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
toxxinus на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Спасибо, буду знать
toxxinus вне форума  
Непрочитано 03.12.2009, 13:28  
Alex-R
Прохожий
 
Регистрация: 24.11.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Alex-R на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Деня VDV, Спасибо, учту на будущее, если придётся слэйв организовывать на Mega8. Да и от внутреннего генератора частенько приходится работать. Хотя пока ни разу не возникала необходимость в слэйве.
Alex-R вне форума  
Сказали "Спасибо" Alex-R
toxxinus (08.12.2009)
Непрочитано 03.12.2009, 20:24  
Деня VDV
Частый гость
 
Аватар для Деня VDV
 
Регистрация: 25.10.2009
Сообщений: 22
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Деня VDV на пути к лучшему
По умолчанию Re: Затруднение с TWI интерфейсом

Ребят такой вопрос может кто краем глаза где ни будь видел.
Хочу своей дочери собрать джойстики что-то на подобии СегаМегаДрайв и запаралелить с клавиатурой чтоб играть удобней.
Собрать думаю на Меге.
Деня VDV вне форума  
Сказали "Спасибо" Деня VDV
toxxinus (08.12.2009)
 

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

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

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

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


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


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