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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 19.12.2012, 16:18  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию xmega a4 twi - будет работать так?

"первый раз, первый класс". i2c читал теорию, примерно представляю алгоритм. По реализации на xmega смотрел исходник в апноуте Атмел, драйвер_мастер_тви, мозг подзакипел. Накропал так, для задачи: хмега как мастер опрашивает пару датчиков, фсе. Прерывание.. ну может для красоты, чтобы отправить команду на чтение и забыть, а прерывание подхватит.

Код:
#define CPU_SPEED 32000000
#define BAUDRATE    400000
#define TWI_BAUD(F_SYS, F_TWI) ((F_SYS / (2 * F_TWI)) - 5)
#define TWI_BAUDSETTING TWI_BAUD(CPU_SPEED, BAUDRATE)

void twi_init(void)
{
	TWIE.MASTER.CTRLB = TWI_MASTER_INTLVL_LO_gc | TWI_MASTER_WIF_bm | TWI_MASTER_RIF_bm | TWI_MASTER_SMEN_bm;
	TWIE.MASTER.BAUD =  TWI_BAUDSETTING;
	TWIE.MASTER.CTRLA = TWI_MASTER_ENABLE_bm;
	TWIE.MASTER.STATUS = TWI_MASTER_BUSSTATE_IDLE_gc;
}

void twi_send_byte(uint8_t _addr, uint8_t _byte)
{
	TWIE.MASTER.ADDR = _addr & ~0x01;
	TWIE.MASTER.DATA = _byte;
	while (!(TWIE.MASTER.STATUS&TWI_MASTER_WIF_bm));
}

uint8_t twi_read_byte(uint8_t _addr)
{
	TWIE.MASTER.ADDR = _addr | 0x01;
	while(!(TWIE.MASTER.STATUS&TWI_MASTER_RIF_bm));
	return TWIE.MASTER.DATA;	
}

void twi_send_str(uint8_t _addr, const char *str)
{
	while(*str)
	twi_send_byte(_addr, *(str++));
}
//twi interrupt
ISR(TWIE_TWIM_vect)
{
	RS485_send_byte(twi_read_byte(0x0d));
}
Вопрос. Старт/стоп не моя проблема, хмега сама при передаче? Тогда что, для каждого байта в данном случае будет стартстоп? Или как то надо ручками делать?

Нужно ли ставить в статусном регистре признаки "занято" и снимать их?

Ну и в целом.. датчики приедут на днях, проверить не могу пока что..
Реклама:
whoim вне форума  
Непрочитано 19.12.2012, 16:21  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

Я так понял, & ~0x01 к адресу - это команда на запись, а наоборот - команда на чтение? Или все страшнее? )
whoim вне форума  
Непрочитано 19.12.2012, 19:03  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

whoim,
посмотрите на досуге диаграммы от филлипса на i2c - вопросы отпадут, останется только еще раз прочесть ДШ и понять его работу
jump вне форума  
Непрочитано 20.12.2012, 07:35  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

jump, охота разобраться именно с реализацией в хмеге один хрен я не запоминаю что в ноль, что в единичку.. не влазит уже в голову, да и нет смысла в конкретном случае ) мне ж аппаратную поддержку завести
whoim вне форума  
Непрочитано 20.12.2012, 21:22  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

Сообщение от whoim Посмотреть сообщение
jump, охота разобраться именно с реализацией в хмеге один хрен я не запоминаю что в ноль, что в единичку..
Посмотрите соотв. апноту (avr1308_using_the_XMEGA_twi). Там всё написано.

Сообщение от whoim Посмотреть сообщение
не влазит уже в голову, да и нет смысла в конкретном случае ) мне ж аппаратную поддержку завести
Кстати, если под рукой нет нужной i2c-микросхемы, то слейва можно эмулировать на том же twi-порту xmeg-и, разрешив работу twi slave.
_Артём_ вне форума  
Непрочитано 20.12.2012, 21:54  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

whoim,
а с обычной мегой работали? там все похоже. принцип работы i2c-микросхемы рассмотрите на примере АТ24С512
jump вне форума  
Непрочитано 21.12.2012, 11:30  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

jump, только читал. Практически везде юзают софтовые варианты протоколов. Там, например, есть i2c_start(). Упоминаний об этом шаге в примерах на XMEGA я не нашел. Проверить / "потыкать" все еще нечем.. поставщик подводит заразо..
whoim вне форума  
Непрочитано 21.12.2012, 11:33  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

Сообщение от _Артём_ Посмотреть сообщение
Посмотрите соотв. апноту (avr1308_using_the_XMEGA_twi). Там всё написано.
посмотрел. Там "очень трудный" драйвер, рассчитанный на любую работу с twi. Буфера, статусы, все дела. У меня пока попроще - два датчика опрашивать, мне в принципе и прерывание не очень то нужно.. Думал начать с простейшего, отправил инициализацию, отправил команду чтения регистра, получил содержимое регистра..
whoim вне форума  
Непрочитано 21.12.2012, 11:34  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

Сообщение от _Артём_ Посмотреть сообщение
xmeg-и, разрешив работу twi slave
да сопли неохота кидать дождусь уже обвязки датчиков и прочего
whoim вне форума  
Непрочитано 21.12.2012, 11:36  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: xmega a4 twi - будет работать так?

Вот например - верно ли, что чтобы инициализировать чтение либо передачу нужно занести в ADDR модифицированный адрес, где один бит указывает - чтение или передача? Или тут сложнее, сначала этот бит, потом ждать статуса, потом адрес, а потом получать/забирать данные из DATA?
whoim вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BOSCH будет ли работать ? Nikola777 Делимся опытом 1 25.02.2012 09:13
Переделал схему приемника, будет работать? Baza666 Автоматика и аппаратура связи 0 09.03.2011 18:17
Схема - будет ли работать? po4emu4ka Микроконтроллеры, АЦП, память и т.д 1 02.06.2010 08:53
Работать будет? ilya_sh Источники питания и свет 15 01.04.2010 14:43
Будет ли работать в железе (PCF8574) R-a-v-e-n Микроконтроллеры, АЦП, память и т.д 18 22.06.2009 12:33


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


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