Меряю напряжение в обведенных местах, получаю +0.7V, меряю осцилографом на развертке по времени 0.1uS, ровная линия на 0.7V... Как так может получится???
Если от МК идёт 0, то напряжение должно быть 0В, если +5В, то напряжение +5 V, если убрать МК , то напряжение +5V от подтягивающих регистров, если бы с МК шел ШИМ, то я бы наверное увидел на такой развёртке его (если уменьшаю развёртку (увеличиваю время) сигна всё равно ровный).
Может ли это означать, что 28 и 27 ножки в высокоимпедансном состоянии HI-Z ???
Или может быть что-то другое???
Перенёс сюда. Пользуйтесь поиском. ploop
_________________ Кот заболел Ринотрахиитом (тот что на фото)
Спасибо. Просто не был уверен что вопрос именно по DS1307, так как без неё в панельке, всё тоже самое а она рабочая точно, так как доставал её, делал на Arduino часы , и всё работало.... МК тоже вроде живой..... но конкретно живучесть этих ног в связи с DS -кой, утверждать не могу, так как нет опыта чтобы сделать часы на AVR atmega 88 именно на этих пинах на макетке
Самое интересное, что в Протеусе всё работает.....
_________________ Кот заболел Ринотрахиитом (тот что на фото)
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Нет, у вас именно ноги МК давят линию в ноль. Проверяйте программу.
А можете объяснить как это?
Просто я проверял так : 1.Вытащил МК и DS 2.Подаю общее питание на подтягивающе резисторы 3.Даю сначала + 5 В там где должна быть ножка мк, меряю, там где должна быть ножка DS, получаю +5 В. 4.Даю 0 там где должна быть ножка мк, получаю на ножке DS 0 5. Не даю на мк нечего, на ds получаю +5В.
1.Так как же мк давит на 0,7В ??? (Если бы это был, ШИМ, то на оссцилографе я должен же видеть сигнал не в виде прямой на развёртке по времени 0.1us . Частота МК от внутренего генератора 8Мгц.)
2.И почему тогда в протеусе работает? (такое может быть?)
3*.Сунул МК в плату, убрал DS, "-" (щуп) бросаю на +5В(питание DS) "+"(щуп) на ножки мк, и получаю прямую на -5В.... О чем это говорит?
4*. Если на макетке включаю без подтяга, то на ножке 28 получаю вот такое (щупы подключены аналогично пункту 3*):
P.S. (Проблема в коде может быть, так как код изначально написан для Atmega 8, но я его перепелил под 88 ) Вот тут всё расписывал, как пилял, может гдето что-то не правильно ... (я новичек)) Буду очень благодарен за помощь, а то уже скоро волосы буду рвать на голове
_________________ Кот заболел Ринотрахиитом (тот что на фото)
Да ёжкин кот, Вы серьезно, или прикалываетесь? 0.7 в - нормальный уровень нуля, читайте даташит. Если этого не хватит - изучайте характеристики МОП-транзистора, и принципы построения КМОП логики.
wixa, во-первых, I²C - шина с монтажным "И", то есть на неё категорически нельзя подавать логическую единицу. Единица устанавливается на ней отпусканием шины (перевода ноги контроллера на вход) за счет подтягивающих резисторов, а вот ноль - как раз прижиманием шины к земле (перевод ноги контроллера на выход и подачей нуля на него). Иначе, скорее всего, вы спалили DS-ку или порт контроллера.
Во-вторых 0.7В нормальный логический уровень нуля.
wixa, во-первых, I²C - шина с монтажным "И", то есть на неё категорически нельзя подавать логическую единицу. Единица устанавливается на ней отпусканием шины (перевода ноги контроллера на вход) за счет подтягивающих резисторов, а вот ноль - как раз прижиманием шины к земле (перевод ноги контроллера на выход и подачей нуля на него). Иначе, скорее всего, вы спалили DS-ку или порт контроллера.
Во-вторых 0.7В нормальный логический уровень нуля.
Понял. Спасибо.... Причина выяснена. Перепутал GND и AVCC при разводке. Получилось что на AVCC подавался 0, а на GND - +5В через резистор 110 Ом...Поэтому вся правая сторона МК вела себя непонятным образом.
_________________ Кот заболел Ринотрахиитом (тот что на фото)
Я думаю, контроллер после такого не жилец. Или всё же работает?
Вы знаете, он вроде как заработал, выполнение кода дошло до отражение заставки на LCD... но на этом и зависла.... Лостал МК, хотел прочитать EEPROM чтобы понять на каком этапе она зависла, но вот тут уже МК отказался нормально читаться.... ошибка сигнатуры, считался бред как по фьюзам так и по флеш и EEPROM , и главное с каждым новым считыванием, показания меняются.....
Самое интересное, что пока я обнаруживал эту проблему, МК считывался и писался на УРА, а вот после исправление проблемы, умер.... Как то странно....
_________________ Кот заболел Ринотрахиитом (тот что на фото)
От переполюсовки питания (даже AVCC) открываются pn-переходы (фактически паразитные диоды в микросхеме), которые в нормальном режиме всегда закрыты. То есть, нехилую часть периферии Вы вероятнее всего сожгли, а ядро осталось живым.
Попробуйте оторвать AVCC и оставить в воздухе (там скорее всего пробило всё нафиг), возможно что-то еще будет работать.
Здравствуйте подскажите как всетаки вычисляется этот день недели... Спойлер
Danko писал(а):
Нет это обычный счетчик от 1 до 7. То что выставишь то и будет считать.
Я в своих часах его вообще не использую, а вычисляю.
Формула есть на Википедии.
Кусок кода из моих часов (Си CVAVR):
Код:
// в данной версии данные хранятся не в двоичной, а в двоично-десятичной системе unsigned char myhour, mymin, mysec, // текушее время mydate, mymonth, myyear, // текущий календарь myday; // день недели
// ---------- вычислить день недели по дате ---------- void date2day(void) { unsigned int y, m;
y = bcd2bin(myyear); m = bcd2bin(mymonth);
if (m > 2) { m -= 2; } else { m += 10; y--; }
myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
if (myday == 0) myday = 7; }//----------
У меня компилятор ругается на undefined symbol 'bcd2bin' , как нужно его правильно прописать? Мой код Спойлер
Danko Ты не поверишь, но по твоей вине, до вчерашнего дня, считал что в 1307 нет "дня недели".
а чем хуже формула которую раньше применял? // формула для вычисления дня недели по дате (ru.wikipedia.org) // a = (14 - месяц) / 12 // y = год - a // m = месяц + 12 * a - 2 //ДеньНедели = (7000 + (день + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) ОСТАТОК 7
Вот еще одна формула вычисления дня недели. dayOfWeek = (year+(int)(year4)+ mounth + day) % 7;
где - dayOfWeek - число от нуля до 7, соответсвует дню недели (0 - вс,1-пн, ...) year - год
Простите, что никрофилю. Как вообще может такое быть от 0 до 7 это 8 дней. Число 7 какому дню недели соответствует? Просто у меня практический вопрос. Набросал часики на 1307, но зараза, после 7 дня недели у меня идет 0. Правда это в Протеусе. В железе пока не сделал. Кто в курсе это глюк пртеуса, в дате на 1307 день недели 1-7
Добавлено after 8 hours 22 minutes 44 seconds: Вобщем это глюк протеуса, в железе все ок.
Вот мой кусок на баскоме. Может кому пригодится...
Getden: ' возвращает название дня недели в переменной text. год может быть нулевым Gosub Ds1307 Chislo = Makedec(chislo) Mes = Makedec(mes) Year = Makedec(year) 'вычисление дня недели по году дате и месяцу If Mes <= 2 Then : Year = Year - 1 : Chislo = Chislo + 3 : End If
M1 = Chislo + Year M2 = Year / 4 M1 = M1 + M2 M2 = Year / 100 M1 = M1 - M2 M2 = Year / 400 M1 = M1 + M2 M2 = 31 * Mes M2 = M2 + 10 M2 = M2 / 12 M1 = M1 + M2 M2 = M1 Mod 7 Denned = M2 ' Text = Lookupstr(denned , Tabl1) 'номер дня недели Return
DS1307+CVAVR3.22+Proteus8 чтобы не заморачиваться кодом решил использовать день недели из самой 1307 (естественно записав в нее правильные время, дату и день недели. При переходе на новые сутки счетчик автоматом прибавляет к week_day единицу и при опросе таймера показания выводятся на экранчик. если установить "6" (суббота) то следующее значение будет "7" т.е. воскресенье... а потом следующее "0" ...задумался ))) это у кого глюки? ps пробовал считать и вскр = 1, результат тот же - после 7-го дня начинается с ноля
По документации у ВСЕХ разновидностей стоит 1-7... Однако на практике... бывают ошибки при считывании/обработке - в суть не вникал - но вероятнее всего дефект программы обработки данных в МК.
может и дефект принудительно записывал в week_day и 10 и 15, при переходе на новый день добросовестно увеличивает протеус на единичку. и только если было 7 то сбрасывается до 0
У меня иногда "кульбиты с датой" выскакивают... Причем при повторном включении уже нормальные показания - где-то недочет в программе, а смотреть влом - поздно заметил (прожка под ассемблером да поднавороченная).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения