sigrok софтина много разных железок поддерживает для захвата данных в ПК с электрических шин, может, что-то у вас есть в наличии. лог. анализатором i2c отлаживать существенно быстрее и приятнее.
sigrok софтина много разных железок поддерживает для захвата данных в ПК с электрических шин, может, что-то у вас есть в наличии. лог. анализатором i2c отлаживать существенно быстрее и приятнее.
Я сделал i2c программно, на тех же выводах, скорость сделал примерно бит в секунду, оказалось 10килоом для 3вольт много, передача останавливается, сделал 4,7 передача битов идёт идёт дальше, у меня возник вопрос слейв прижимает sda к земле не только когда выполняет ack, а после каждого бита, так должно быть?
Поджимать шину данных - способ согласования скорости передачи со стороны более медленного устройства. Но при одном бите в секунду?! Подозрительно.
Слишком большой номинал может быть критичен при большой скорости обмена (емкость валит фронты), а если проблемы на малой скорости - там что-то другое. Надо бы скопом посмотреть (учесть, правда, что это еще типично 15 pF даст).
Нет, это подозрительно смахивает на "соплю" между сигналами. И вообще внимательно посмотрите монтаж SI5351, шаг мелкий, там насопливить ничего не стоит...
Да, так и оказалось, выводы микросхемы были замкнуты, теперь сканирую адрес, не находит, с библиотеками тоже все плохо, студия не компилирует, приходится редактировать, а это тоже ненадёжно, придется, чувствую тамошний алгоритм расшифровывать и свою программу писать
Да, пока include i2c.h не убираю, а содержимое файла в код не вставляю, никак, ну ничего, зато в i2c хорошо разберусь, на fm модуле bk1080 если что потренируюсь
Если Вы переделали исходник под свой процессор, т.е. вместо Atmega328 хотите использовать 64, то надо разбираться не с I2C, а с названиями регистров. В 328 и в 64 названия регистров различаются. Также могут быть отличия в названиях битов регистров. Поэтому, смотрите какие регистры используются, в даташите определяйте, что это за регистр. Ищите такой же регистр в даташите 64-ой и меняете название.
Вот например несколько строк инициализации I2c:
void i2cInit()
{
TWBR = 92;
TWSR = 0;
TWDR = 0xFF;
PRR = 0;
}
Но в 64 PRR нет. И тут будет ошибка. Компилятор внизу выдает, где обнаружена ошибка в синтаксисе. Читайте внизу сообщения компилятора после компиляции. Разберитесь, что такое PRR (я уже не помню, а рыться по даташитам пока нет времени), возможно строку можно просто закомментировать, то бишь игнорировать.
Ну и пожелание. Если хотите чтобы Вам помогли, описывайте проблему подробнее. Тут же не экстрасенсы.
Да, PRR как раз первая ошибка, про которую писал компилятор, я понял что дело в разных контроллерах, но я решил лучше сделать "свой" интерфейс, который хотя бы можно светодиодами проверить, компилятор ещё ругался на переменную z, которая два раза обьЯвлена то как 8 бит то 32
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)