Попробовал скомпилировать код по этой ссылке http://my-avr.at.ua/publ/1-1-0-24
И после компиляции часы не работают, т.к. переменные времени DS1307 не меняются и часы показывают всегда нули, почему?
использую CRAVR 2.04, может нужен какое-нить условия при компиляции, которое я не указываю? Ведь уже скомпилированный код в примере уже работает (там есть hex в архиве) а если пробую перекомпилировать сам, то не работает... помогите разобраться!
Последний раз редактировалось m210 Сб ноя 13, 2010 23:56:38, всего редактировалось 2 раза.
Почему не соответствует? Тема про AVR, тема пропрограммирование, I2C это настройка порта МК и DS1307 подключается к этому I2C, чего у и не могу сделать. В общем СПАМОМ или Флудом тему не считаю!
http://radiokot.ru/forum/viewtopic.php?f=20&t=860
назови тему правильно и те кто в курсе как решить проблему, посмотрев на ПРАВИЛЬНОЕ название темы зайдут, прочтут и помогут, иначе просто не обратят внимания.
а по теме: используешь контроллер тот же что в статье или другой? код для твоего компилятора?
Я ессно и написал "AVR проблемы с I2C" и написали - тема как бы не в тему...если это не в тему, то не знаю как тогда написать точнее...
И в тему - МК у меня Atmega8535, микруха - часы реального времени DS1307,. но до этого еще дойти надо! т.к. в протеусе созданный в примере проект и написанный под него не работает после самостоятельной компиляции, я и добиваюсь ответа, почему у них компилится и работает нормально, а у меня нет
Пожалуйста
Файл весил 700кб, поэтому пришлось удалить PDF и HTM файлы из архива, хотя они наверно и не нужны.
Попробуйте так же как и я сделать, открыть проект протеуса, запустить имеющуюся там прошивку и убедится, что часы работают...а потом самому откомпилировать этот исходник и убедится что ничего не работает
А если скомпилится нормально, скажите, плиз чем откомпилили и версию проги.
А не забыл ли ты по нулевому адресу ноль записать в эти часики?
В даташите про это написано. Если 1307 новая или без батарейки работает, то при включении нолик надо туда загнать.
Можно еще так проверить - инициализируешь 1307 с условием вывода секундных тиков на ножку (забыл как, SQW чтоли) и вешаешь туда светодиод. Если мыргает - то всё в порядке.
А в шпротеусе и так работает. Не стоит на него так надеяться, на шпрот этот.
Я еще не дошел до железа, в протеусе перестает работать рабочая схема, после перекомпиляции, поэтому не вижу смысла собирать данное устройство, пока не узнаю причину
Причем, тот же протеус показывает что миркухи начинают общаться, но почему то даже самая первая в коде программа (установка времени на DS1307 в 23-59-59) не работает, что уже говорит о том, что команда видимо на микруху не поступает, а вот почему не знаю
ну и само собой, микруха новая, с этой проблемой тоже могу столкнуться, но чуть позже
С частотой I2C все нормально? Даташыт говорит нам "The DS1307 operates in the regular mode (100kHz) only." В твоём коде написано "// Bit Rate: 400,000 kHz"
Хотя черт его знает. Часы у тебя на софтовом И2Ц висят, зачем там еще хардварный TWI инициализируется?
Собсно в инициализацию можешь вставить проверочный код, если с 0 ячейки DS1307 считываешь число которое больше 59 (незабывая сначало перевести значение снятое с ячейки из BCD в удобочитаемый вид), то инициируешь запись 0 в 0 ячейку, тогда часы пойдут. Новые DS1307 нужно обязательно инициализировать. И незабывай, если батарейка не установлена 3х вольтовая, ты хоть учитайся, из микрухи ты ничего не выудишь
plutonium писал(а):И незабывай, если батарейка не установлена 3х вольтовая, ты хоть учитайся, из микрухи ты ничего не выудишь
Забавно, учту на след раз, но до этого пока не дошел, схему в железе не собирал еще, т.к. 100% уверен что работать не будет, ошибка в коде какая то....
А на счет самого кода, я в нем не особо разбираюсь, I2C вообще ниразу не трогал, не говоря о том что программировать начал совсем недавно и о самом программировании очень мало знаю)
Из моих достижений - рабочий вольтметр и термометр...часы делал, но как в примере на 8Mhz, на 32000Hz перевести часы не удалось
Одновременнно с часами пробую прогать ШИМ, чтото получилось, но при минимальном уровне яркости светодиод все равно светится, хотя не должен...ну вобщем это другая проблема, буду задавать ее в другой теме
Я думаю у меня сейчас большие проблемы с настройкой таймера...тут видимо чтото похожее, 100kHz, 400 000kHz, что это и как исправить, не знаю
кстати в протеусе можно удалить батарейку и кварц на DS1307 все будет работать.
P.S.
Poteus 7.6 SP4
CVAVR 2.04.4a
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"