Гость химик Опубликовано 11 Ноября, 2011 в 16:26 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 16:26 (изменено) :smile: :smile: :smile: :smile: Добрый, уже вечер. Вот сижу уже четыре часа, ломаю голову. В некоторых разработках использую шину i2c, програмную, полученую от штатного Генератора кода. Оказалось что на линии SCL идет корявый строб. Попытался перейти на аппаратный TWI через тот же CodeWizard, после пробывал левые библиотеки и програмного, и аппаратного i2c, во всех случаях одна и та же картина. Кто знает в чем загвоздка? Подскажите пожалуйста. RTC.rar Изменено 16 Ноября, 2011 в 16:54 пользователем химик Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость dust112 Опубликовано 11 Ноября, 2011 в 16:50 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 16:50 Программа на ассемблере? Если да, то у меня есть код для аппаратного TWI. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 11 Ноября, 2011 в 17:01 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 17:01 Программа на ассемблере? Если да, то у меня есть код для аппаратного TWI. Нет прога на Си. Просто ошибка выскакивает не при компиляции, а при построении проекта. Сначала появляется вот это а после то что в первом посту. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость dust112 Опубликовано 11 Ноября, 2011 в 17:08 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 17:08 В Си не силен, может ошибка в переменных? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 11 Ноября, 2011 в 17:43 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 17:43 В Си не силен, может ошибка в переменных? Нет. Написано что неопределенный символ. Но помоему быть такого не может. Убедите в противоположном. Ссылка на комментарий Поделиться на другие сайты Поделиться
Datagor Опубликовано 11 Ноября, 2011 в 18:45 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 18:45 Серег, внизу есть вкладка Errors. Дай картинку или скопируй текстом, чего там прога тебе пишет при ошибках. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mczarin Опубликовано 11 Ноября, 2011 в 19:02 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 19:02 А где происходит объявление символа __i2c_port? Ассемблер по какой-то причине не находит его, поэтому не может провести объявление __scl_bit и __sda_bit и выдает ошибки по всем 3-м символам. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 11 Ноября, 2011 в 21:20 Жалоба Поделиться Опубликовано 11 Ноября, 2011 в 21:20 Серег, внизу есть вкладка Errors.Дай картинку или скопируй текстом, чего там прога тебе пишет при ошибках. Игорь, в первом посту на картинке в окне Code Navigatore , видно все ошибки. Тоже самое и в Errors отображается. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 12 Ноября, 2011 в 01:00 Жалоба Поделиться Опубликовано 12 Ноября, 2011 в 01:00 А где происходит объявление символа __i2c_port? Ассемблер по какой-то причине не находит его, поэтому не может провести объявление __scl_bit и __sda_bit и выдает ошибки по всем 3-м символам. Я не силен в асемблере, но мне кажется что этих символов вообще не должно быть. В аппаратном вроде бы должны быть сплошные адреса регистров, не так ли? А как видно на первой картинке, там помимо бит _SDA, _SCL есть еще и delay. Помоему этот кусок, на который ругается Код Вижен, программная реализация. И почему то при построении проекта она не хочет ликвидироваться. И как я уже писал выше, при компиляции не каких проблем не возникает, только при построении. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mczarin Опубликовано 12 Ноября, 2011 в 11:36 Жалоба Поделиться Опубликовано 12 Ноября, 2011 в 11:36 Я не силен в асемблере, но мне кажется что этих символов вообще не должно быть. В аппаратном вроде бы должны быть сплошные адреса регистров, не так ли? Нет, ассемблеры допускают использование символов, для этого как раз предназначена директива .equ (в чем-то аналог сишного #define). А как видно на первой картинке, там помимо бит _SDA, _SCL есть еще и delay. Ты про __i2c_delay1 и т.д.? Это метки - они обозначают участки программы (адреса команд) и служат для организации условных переходов, циклов и т.д. На них компиллятор не ругается, т.к. они все видимо определены верно. И как я уже писал выше, при компиляции не каких проблем не возникает, только при построении. Просто в сишной части прошивки всё написано корректно, а когда ассемблер начинает обрабатывать код в файлах .asm - вылезают непонятные ему символы. Кстати, я вижу, у тебя определены символы __i2c_dir, __i2c_pin, и на них ассемблер не ругается. Поищи, где они определены, и определи аналогично port. Тогда все формальные ошибки должны исчезнуть. Вопрос только в том, а действительно ли тебе нужен этот участок кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 12 Ноября, 2011 в 13:18 Жалоба Поделиться Опубликовано 12 Ноября, 2011 в 13:18 Так, начну попорядку. Сделал новый проект только с включением аппаратного TVI. Скомпилил обрал, все ок. Далее копирую все с предидущего проекта ( с файла в первом посту). Все повторяется по новой. И еще в Code Navigator я заметил i2c.h . Для чего он там? После я взял и закоментировал файл ds1307.h и все что с ним связано. Проблема исчезла. Получается что библиотека реальных часов работает с програмным i2c. Можно как-то поправить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость mczarin Опубликовано 12 Ноября, 2011 в 20:46 Жалоба Поделиться Опубликовано 12 Ноября, 2011 в 20:46 Я так понимаю, на I2C в твоей реализации сидят 2 слейва - RTC и еще что-то? Конечно, их обоих можно дергать по аппаратной реализации TWI, повесив параллельно на аппаратные выводы SDA и SCL. Надо выбрать частоту шины, поддерживаемую обоими девайсами, и убедиться, что у них разные адреса на шине. Управление аппаратной реализацией очень подробно описано в даташитах на МК. Добавлено после раздумий: Посмотрел исходники из первого поста - там нет i2c.h. Судя по скриншоту из последнего поста, это программная реализация I2C, и её надо удалить из проекта. Из первого поста: My_I2C.h - тоже программная реализация. twi.h - аппаратная реализация, лучше использовать её. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти