Понадобилось мне подключить часы реального времени (DS1307) к МК mega8. Почитал в разных местах про шину I2C и написал программку, которая использует аппаратный TWI контроллёра. Для проверки работоспособности программы, нарисовал схему в Proteus, где она успешно функционировала. Дальше собрал железную копию, тут то проблемы и начались. По задумке, контролёр получает от часов 7 байт с данными и сразу выводит их на ЖКИ, всякую обработку реализовывать не стал, чтоб не усложнять программу. После подачи питания, контроллёр успешно завершает процедуру чтения данных и выводит на ЖКИ какой-то мусор, который начинается с 4 (0b00110100 – адрес часов), потом пробел и 5 символов с хаотично расположенными пикселями. Тройная проверка монтажа, ошибок не выявила, всё, кроме часов, работает нормально, замена часов не помогла. Отчаявшись разобраться с проблемой самостоятельно, обращаюсь за помощью к мудрым котам и буду признателен за любую подсказку.
Сразу предупрежу, что пишу только на ассемблере, и мне хочется использовать именно аппаратную возможность контроллёра.
В приложенном архиве схема подключения и программа на ассемблере.
- Вложения
-
- DS1307.rar
- Схема подключения и исходный текст на ассемблере
- (8.6 КБ) 489 скачиваний

