| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
xmega a4 twi - будет работать так?
19.12.2012, 16:18
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
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));
} |
Вопрос. Старт/стоп не моя проблема, хмега сама при передаче? Тогда что, для каждого байта в данном случае будет стартстоп? Или как то надо ручками делать?
Нужно ли ставить в статусном регистре признаки "занято" и снимать их?
Ну и в целом.. датчики приедут на днях, проверить не могу пока что..
|
|
|
|
19.12.2012, 16:21
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
Я так понял, & ~0x01 к адресу - это команда на запись, а наоборот - команда на чтение? Или все страшнее? )
|
|
|
|
19.12.2012, 19:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
whoim,
посмотрите на досуге диаграммы от филлипса на i2c - вопросы отпадут, останется только еще раз прочесть ДШ и понять его работу
|
|
|
|
20.12.2012, 07:35
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
jump, охота разобраться именно с реализацией в хмеге  один хрен я не запоминаю что в ноль, что в единичку.. не влазит уже в голову, да и нет смысла в конкретном случае ) мне ж аппаратную поддержку завести
|
|
|
|
20.12.2012, 21:22
|
|
|
Гражданин KAZUS.RUN
Регистрация: 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
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
whoim,
а с обычной мегой работали? там все похоже. принцип работы i2c-микросхемы рассмотрите на примере АТ24С512
|
|
|
|
21.12.2012, 11:30
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
jump, только читал. Практически везде юзают софтовые варианты протоколов. Там, например, есть i2c_start(). Упоминаний об этом шаге в примерах на XMEGA я не нашел. Проверить / "потыкать" все еще нечем.. поставщик подводит заразо..
|
|
|
|
21.12.2012, 11:33
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
Сообщение от _Артём_
|
|
Посмотрите соотв. апноту (avr1308_using_the_XMEGA_twi). Там всё написано.
|
посмотрел. Там "очень трудный" драйвер, рассчитанный на любую работу с twi. Буфера, статусы, все дела. У меня пока попроще - два датчика опрашивать, мне в принципе и прерывание не очень то нужно.. Думал начать с простейшего, отправил инициализацию, отправил команду чтения регистра, получил содержимое регистра..
|
|
|
|
21.12.2012, 11:34
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
Сообщение от _Артём_
|
|
xmeg-и, разрешив работу twi slave
|
да сопли неохота кидать  дождусь уже обвязки датчиков и прочего
|
|
|
|
21.12.2012, 11:36
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: xmega a4 twi - будет работать так?
Вот например - верно ли, что чтобы инициализировать чтение либо передачу нужно занести в ADDR модифицированный адрес, где один бит указывает - чтение или передача? Или тут сложнее, сначала этот бит, потом ждать статуса, потом адрес, а потом получать/забирать данные из DATA?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:42.
|
|