Показать сообщение отдельно
Старый 02.02.2017, 18:10   #4
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: MCP4725: максимальный сэмплрейт

В общем, совсем чутка не хватает скорости для отправки 44100 сэмплов в секунду. Пришлось взять Ардуино с 20 МГц резонатором. И приключилась другая странная проблема. После записи в регистр TWBR единицы (максимальная скорость I2C), I2C перестаёт работать. Стартовый бит отправляет, получаю подтверждение, но на последующие операции записи возвращает 0x00, константа и её описание вот:
#define TW_BUS_ERROR   0x00
illegal start or stop condition 
На 16 МГц отлично работало с единицей в TWBR. Так и не удалось разобраться с этой проблемой. Если кто-то работал с TWI (I2C) и разбирается во всех нюансах, ваш опыт был бы полезен. Пришлось увеличить TWBR до значения 2. Судя по моим подсчётам, таким образом частота I2C получилась 1 МГц (при 16 МГц / TWBR = 1 было 0.888 МГц), так что по идее должно как раз хватить для отправки 44100 сэмплов. Нужно ещё экспериментировать.
(Offline)
 
Ответить с цитированием