AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
20.05.2018, 13:10
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
CodevisionAVR помогите разобраться с управлением TWI
Встала передо мной задачка связать Амегу с 24с08.
Записывать и считывать несколько байт.
Хочется сделать это по TWI интерфейсу.
Написать программу путем обращения к его регистрам, не проблема.
Мне хочется разобраться именно с командой Кодевижна
Цитата:
|
bool twi_master_trans(
unsigned char slave_addr,
unsigned char *tx_data,[CODE]
unsigned char tx_count,
unsigned char *rx_data,
unsigned char rx_count)
|
Есть пример с хелпом, но там описан побайтный ввод-вывод.
Мне хочется записывать-считывать ну скажем 8 цифр подряд.
В хелпе пример для АЕ25с512 у нее 2 байта адреса.
Пример использования функции таков:-
Цитата:
|
struct
{
struct
{
unsigned char msb;
unsigned char lsb;
} addr;
unsigned char data;
} twi_eeprom;
unsigned char eeprom_rd_data;
/* the TWI master for SCL bit rate of 100 kHz */
twi_master_init(100);
/* globally enable interrupts */
#asm("sei")
/* write the byte 0x55 to the AT24C16B EEPROM address 0x210 */
twi_eeprom.addr.msb=0x02;
twi_eeprom.addr.lsb=0x10;
twi_eeprom.data=0x55;
twi_master_trans(EEPROM_TWI_BUS_ADDRESS,(unsigned char *) &twi_eeprom,3,0,0);
/* 10ms delay to complete the write operation */
delay_ms(10);
/* read the byte back into the eeprom_rd_data variable */
twi_master_trans(EEPROM_TWI_BUS_ADDRESS,(unsigned char *) &twi_eeprom,2,&eeprom_rd_data,1);
|
вопрос 1: Как я понял,
Для переделки кода под микросжему 24с08 примера из структуры надо будет убрать unsigned char msb, а в команде записи в память:-
twi_master_trans(EEPROM_TWI_BUS_ADDRESS,(unsigned char *) &twi_eeprom,3,0,0);
Цифру 3 заменить на 2.
А при чтении 2 заменить на 1.
Не поскажите, какие надо внести изменения, чтобы последовательно записывать-читать несколько байт подряд из массива? Ну кроме объявления самого массива, ес-но?
Если че, то пож-ста на мою чайниковость сильно не ругайтесь...
|
|
|
|
20.05.2018, 13:19
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Или эта команда только для побайтового вывода и считать-записать несколько байт за раз с помощью ее не предусмотрено?
|
|
|
|
20.05.2018, 14:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,034
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Используйте тег CODE для повышения читаемости исходника.
Сообщение от zev
|
Цифру 3 заменить на 2.
А при чтении 2 заменить на 1.
|
Думаю - да.
Сообщение от zev
|
Или эта команда только для побайтового вывода и считать-записать несколько байт за раз с помощью ее не предусмотрено?
|
Сколько данных заложить в структуру twi_eeprom - столько и будет, КМК. Глвное, что-бы это было не больше страницы EEPROM ("лишние" данные сверх размера страницы будут затирать данные в "голове").
__________________
Экзорцист 40-го уровня.
|
|
|
|
20.05.2018, 15:08
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Сообщение от ForcePoint
|
Сколько данных заложить в структуру twi_eeprom - столько и будет, КМК. Глвное, что-бы это было не больше страницы EEPROM ("лишние" данные сверх размера страницы будут затирать данные в "голове").
|
Мне бы простой кусок кода с разжевыванием, в силу моей тугодумости(обусловленой крайне малой практикой, ибо раз в несколько лет кустарю иногда девайсы для личного потребления, элементарные вещи вспоминать приходится ) в этом вопросе, ну по типу как в хелпе кодевижна написано было, но чуток подробнее.
Типа байт несколько, как записать-прочитать. И что, куда ставить.
Был бы премного благодарен.
Последний раз редактировалось zev; 20.05.2018 в 15:19.
Причина: дополнение
|
|
|
|
20.05.2018, 15:32
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Сообщение от ForcePoint
|
Используйте тег CODE для повышения
Сколько данных заложить в структуру twi_eeprom - столько и будет, КМК. .
|
Вопрос в том, как их заложить. и в коде оформить.
Ибо чайник я. А прогу хочется именно с применением этой функции составить, хотя и "ногодрыга" для работы с памятью по заглаза хватило бы.
Но это как говорится- пройденый этап.
Хочется разобраться в этом, новом лично для меня вопросе, а практики не хватает...
Надеюсь на помощь сочувствующих.
|
|
|
|
20.05.2018, 15:47
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Сообщение от ForcePoint
|
Сколько данных заложить в структуру twi_eeprom - столько и будет, КМК.
|
Вот, вот. В том, как оформить это заложение конкретно в виде кода вопрос и состоит.
|
|
|
|
20.05.2018, 15:48
|
|
Частый гость
Регистрация: 11.10.2006
Сообщений: 44
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Сообщение от ForcePoint
|
Используйте тег CODE для повышения читаемости исходника.
|
Простите, сразу эту "кнопочку" не разглядел.
|
|
|
|
20.05.2018, 19:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,034
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
Re: CodevisionAVR помогите разобраться с управлением TWI
Не великий спец в Си... Можно зарезервировать в структуре место для всей страницы памяти. Использовать можем сколько понадобится, при соблюдении условия tx_count ‹= pagesize.
Код:
|
const pagesize = NNN // NNN = 16 для 24xC08
struct {
struct {
unsigned char msb;
unsigned char lsb;
} addr;
unsigned char data[pagesize];
} twi_eeprom; |
__________________
Экзорцист 40-го уровня.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:00.
|
|