Например TDA7294

Форум РадиоКот • Просмотр темы - Изучаю работу модуля TWI. Нужна помощь.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс фев 08, 2026 14:45:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Сб май 26, 2012 23:46:11 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
До этого времени обходился без применения i2c шины. Решил разобраться с ней и застопорился. Для начала хочу просто записать/прочитать байт в 24С128. Написал вот такой код.
СТАРТ выводится нормально, код подтверждения (0x08) приходит, потом пихаю в TWDR адрес устройства + W, и даю команду на передачу, и ничего не происходит. В регистре TWSR остаётся код 0x08, а в TWCR - 0xEC (11101100)
Подскажите где я туплю??
Код:
TWSR=0x00;            //
TWBR=0x20;            //  СКОРОСТЬ 100.000 КГЦ
TWCR=0b01000100;      //  ВКЛЮЧАЮ МОДУЛЬ TWI

ПОТОМ В ОСНОВНОМ ЦИКЛЕ
     
      TWCR |= 0x20;          // ВЫДАТЬ В ЛИНИЮ СТАРТ
      TWCR |= 0x80;          // СБРАСЫВАЕМ TWINT 
      while (TWCR & 0x80 ) {}// ЖДЕМ УСТАНОВКИ ФЛАГА TWINT
      if (TWSR==0x08)        // ЕСЛИ КОД ПОДТВЕРЖДЕНИЯ РАВЕН  0x08
        {
        TWDR=0b10100000;    // ЗАГРУЖАЕМ АДРЕС УСТРОЙСТВА К КОТОРОМУ ОБРАЩАЕМСЯ (SLA+W)
        TWCR |= 0x40;       // ИНИЦИАЛИЗАЦИЯ ПЕРЕДАЧИ
        TWCR |= 0x80;       // СБРАСЫВАЕМ TWINT 
        while(TWCR & 0x80){}// ЖДЕМ УСТАНОВКИ ФЛАГА TWINT
       }


Пробую в железе.
Изображение

_________________
KIT


Вернуться наверх
 
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Вс май 27, 2012 08:36:34 
http://www.gaw.ru/html.cgi/txt/app/micr ... AVR315.htm
http://blog.bevice.ru/posts/716.html
http://electronics-and-mechanics.azm.su/page8.html

вот интересные статьи. Тоже пришлось писать модуль TWI для себя, используя прерывания. Но я пишу сугубо на ассемблере (вот такой я мазохист :) ), поэтому больше ничего сказать не могу. Но если всё делать по описанию, то всё получается.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Вс май 27, 2012 22:59:10 
Открыл глаза

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср июн 15, 2011 02:22:15
Сообщений: 73
Рейтинг сообщения: 0
Хорошая статья

http://nagits.wordpress.com/2010/12/18/avr_i2c_eeprom/


Вернуться наверх
 
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Пн май 28, 2012 08:51:36 
Кстати, хочу обратить внимание на момент с работой с EEPROM-ками. Если потом вы захотите писать/читать не по 1 байту а блоками, то учесть следующее.
1. Читать можно, начиная с любого адреса и хоть всю память до конца, при этом автоинкремент адреса будет идти автоматом.
2. Писать можно блоками не более 16 байт. Блок начинается с адреса, кратный 16. Автоинкремент идёт только внутри блока, т.е. после ячейки 15 пойдёт 0. Запись блока в память начинается после передачи СТОП. После передачи текущего блока и перед записью следующего пауза не менее 10 мс (у ряда микросхем 5 мс - в ДШ на данный тип)


Вернуться наверх
   
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Пн май 28, 2012 09:12:00 
Открыл глаза

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср июн 15, 2011 02:22:15
Сообщений: 73
Рейтинг сообщения: 0
orinoko писал(а):
Кстати, хочу обратить внимание на момент с работой с EEPROM-ками.

Замечание очень важное. Только для протеуса длина блока не должна превышать 8 байт и пауза перед записью следующего блока должна быть не менее 50 мс.


Вернуться наверх
 
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Пн май 28, 2012 11:08:35 
Вы знаете. лично недавно, когда проверял свою программу, видел, что Протеус прекрасно схомячил 16-байтный блок. Но я заметил, что не все епромки одного типа одинаково эмулируются (у меня использовалась 24с16). И 10 мс осилил.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Изучаю работу модуля TWI. Нужна помощь.
СообщениеДобавлено: Пн май 28, 2012 14:11:00 
Грызет канифоль
Аватар пользователя

Карма: 6
Рейтинг сообщений: 41
Зарегистрирован: Чт янв 13, 2011 18:54:29
Сообщений: 250
Откуда: Минск
Рейтинг сообщения: 0
Я тоже изучал TWI. Использовал прерывание, мне так показалось проще. Особенно после прочтения http://easyelectronics.ru/avr-uchebnyj- ... c-i2c.html автор Di Halt.
Но для моих целей не подошло, делал типа анализатора.

_________________
Учиться, учиться, ...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y