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