Например TDA7294

Форум РадиоКот • Просмотр темы - TWI - как взаимодействует с процессорным временем?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 13, 2025 07:22:12

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


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



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Пн фев 19, 2024 15:08:09 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Раз это отдельный модуль, значит он должен брать на себя основную задачу по организации работы шины? Т.е. МК подготовил сообщение и передал модулю TWI на отправку, после чего процессор "пошел" заниматься своими делами до возникновения прерывания от TWI, например. Так? Или я ошибаюсь и процессор МК "висит" пока идет отправка сообщения? - но тогда прерывания от TWI становятся ненужными.

А что происходит если сообщение еще отправляется модулем TWI, а процессор уже накидал новых сообщений?

Добавлено after 5 minutes 46 seconds:
Работаю в CVAVR со встроенной библиотекой TWI.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Пн фев 19, 2024 15:50:49 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 1
Медали: 1
Лучший человек Форума 2017 (1)
зависит от твоего желания.
лично я жду (процессор ждет) окончания операции (передачи байта или приема байта).
процессор у меня не "висит", а проверят бит TWINT регистра TWCR, ожидая окончания операции.
а можно разрешить прерывание по TWI, тогда процессор может выполнять другую работу, пока не наступит прерывание по TWI.
если нужно передать несколько байт, следует создать буфер и сначала заполнить его требуемым количеством байт. потом по прерыванию процессор из буфера будет брать очередной байт и отправлять его, и так, пока не закончится вся очередь.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Пн фев 19, 2024 17:27:26 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
Starichok51, ок. А если такого буфера не делать, а просто накидывать? У модуля TWI какой-то свой буфер наверно есть? Он будет перезаписываться каждый раз когда прилетит новый байт? И на момент отправки следующего сообщения, что в этом буфере будет лежать, то и отправится?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Пн фев 19, 2024 17:41:59 
Мудрый кот

Карма: 25
Рейтинг сообщений: 485
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1786
Откуда: KN34PC, Болгария
Рейтинг сообщения: 1
Из документации (+трансл.):
Цитата:
Аппаратный буфер TWI в микроконтроллере AVR имеет размер одного байта как для регистров передачи, так и для приема данных. Это означает, что модуль TWI может хранить только один байт данных за раз, а программное обеспечение должно обеспечивать буферизацию остальных данных. Программное обеспечение может использовать флаг TWINT в регистре TWCR, чтобы проверить, готов ли модуль TWI принять или передать другой байт.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 09:58:14 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Нужно знать какая задача стоит, может и не потребуются все эти измудроствования..
А так да, пока отправляется байт можно заниматься другими делами, а потом проверка флага TWINT.
По SPI интерфейсу тоже самое кстати, во время отправки байта готовится следующий, и потом проверка SPIF.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 11:44:52 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
а еще, кстати, то же самое по USART.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 12:17:37 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
да, и USART :))

но:
если на скоростных интерфейсах прирост производительности ощутим, то на айтуси вряд ли можно выкружить многое :)

Нужно рассматривать конкретный пример.

Kalisnik писал(а):
А что происходит если сообщение еще отправляется модулем TWI, а процессор уже накидал новых сообщений?
:shock: как МК может что-то накидать без вашего ведома?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 12:35:20 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
на айтуси я применяю частоту 400 кГц, вполне достаточно для бытовых нужд.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 12:53:18 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
ну да, я это и имел ввиду
если частота интерфейса 400кГц, а тактовая МК 16МГц (например), то прирост в производительности будет невелик, если готовить следующий байт во время отправки предыдущего.

А вот в коде возможна излишняя путаница.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 15:13:26 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
поэтому я и сказал, что нужно заполнить буфер, и тогда процессор спокойно будет продолжать свою работу, отвлекаясь только на прерывание по интерфейсу.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 15:42:58 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24609
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
А вот в коде возможна излишняя путаница.

Никакой путаницы не будет, если не городить синхронизм подготовки данных и его передачи.
Для подобного делают кольцевой буфер, на который есть два указателя - один куда писать из кода, другой - откуда брать для интерфейса.
Это стандартный прием работы.
Получается совершенно автономный код.

Добавлено after 3 minutes 16 seconds:
если частота интерфейса 400кГц

Нужно помнить, что частота определяется мастером шины и никаких ограничений на ее номинал. кроме верхнего значения нет. То есть частота может быть ЛЮБАЯ не превышающая максимально допустимую. 400 кГц (где она указана) - это и есть максимальная.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 16:24:45 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
как МК может что-то накидать без вашего ведома?


Мы - новички, можем все :) Конкретный пример:
Дисплей I2C. Реализовал ползунок, который двигается переменным резистором подключенным к АЦП. Данные с АЦП снимаются по завершении преобразования и отправляются в дисплей функциями glcd_rectangle() и glcd_block() (CVAVR). Полагаю, что АЦП работает быстрее чем интерфейс I2C. Ну вот так и накидывается в буфер :)) . В результате получаю движение ползунка с рывками и тормозами. Скорость I2C 400 КГц. На интерфейсе SPI все летает. Прихожу к выводу, что лучше использовать SPI.

Хотя. дисплей SPI я без АЦП проверял. Просто по пикселю линию рисовал... было все очень быстро. Тогда, может это АЦП тормозит... не проверял.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 16:58:22 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Kalisnik писал(а):
Мы - новички, можем все :)
Я тоже новичёк :)

Однажды была у меня задумка, подключить дисплей через отдельный контроллер. То есть один контроллер получает, обрабатывает и прочее, и льёт уже готовые данные (но скорее условные команды) во второй. А второй тупо данные на дисплей выводит, поле подчищает, с цветами разбирается.. там же тоже много работы бывает :) :)

PS: На подобии дисплея Nextion хотел сделать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 19:08:10 
Мучитель микросхем

Зарегистрирован: Вс апр 18, 2021 15:43:55
Сообщений: 430
Рейтинг сообщения: 0
shonty, получилось?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 20:37:35 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
а еще, кстати, то же самое по USART.

Разве? В AVR, насколько я помню, приёмный буфер USART содержит два байта, а так же ещё есть сдвиговый регистр, который принимает следующий символ. Приёмный буфер организован по типу FIFO - первый пришёл, первый вышел. При чтении регистра UDR считывается первый принятый байт. После чего данные в буфере сдвигаются и регистр UDR указывает уже на второй принятый байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 21:11:08 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
shonty, получилось?

shonty писал(а):
Однажды была у меня задумка,
Задумка так и осталась задумкой.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TWI - как взаимодействует с процессорным временем?
СообщениеДобавлено: Вт фев 20, 2024 22:03:08 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
OKF писал(а):
Разве? В AVR, насколько я помню, приёмный буфер USART содержит два байта, а так же ещё есть сдвиговый регистр, который принимает следующий символ.
во-первых, речь изначально шла про передачу, о приеме разговора не было.
во-вторых, если нужно передать несколько байт, то в буфер USART ты их не запихнешь.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

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


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

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


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

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


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