P.S. я вообще-аномалия в этой Вселенной и довольно специфическая индивидуальность.....по сему и не удивительно,что все что пытаюсь творить-само по себе уже специфично....
Видимо гуманитарий, и уже умудрились собрать все возможные грабли . Надеюсь pickit приобретен, или собираетесь исполнять ритуальные танцы с экстрапуком и ждм?
Снова я со своими PIC-ами....в общем делал таймер для компрессора....смысл такой,одну минуту компрессор работает(на выводе GP1-лог. единица,которая через ключик на полевике включает реле,а уже то,в свою очередь-сам компрессор),затем идет пауза в 10 минут. Вместе с этим на выводе(синхронно....ну почти ) GP0 мигает светодиод с периодичностью раз в 2 секунды с длительностью свечения 0,1 сек.
Я не знаю,как правильно реализуется подобный алгоритм,по сему написал как смог....1,9сек пауза+0,1сек свечения-составляют "полный цикл",далее эти циклы "суммируются" (30 шт)и формируют "малое время"(1 минута),далее "суммируются" эти самые "малые циклы"(10 шт) и формируют один "большой цикл"(10 мин.)....ну и зацикливание....в АСМ-е код без комментариев....но он,вроде как не сложный,если что-могу добавить комментарии....только он затем(комментарии)-"ломаются" и из русских букв получаются "кракозябры"...как лечится(и лечится-ли вообще)-не знаю
все работает(и программно и в "железе") за исключением одной маленькой вещи....а именно-точность......ну вообще не какая.....я уже и "просчитывал" время в МП-лабе через СТОП-воч с точностью до микросекунд....но время все равно "плывет" и с двух часовых выдержек "натикивает по 40 сек"....питание МК-пока-что от литиевого АКК(причем,при питании от 3,6 до 3,85-особых изменений не замеченно).....можно-ли к этому МК "прикрутить" часовой кварц на 32.768 Гц?...а то в даташите так и не нашел(что-то упоминалось про внешнее тактирование...но ХЗ. ,согласен на внешний генератор на одном транзюке "шпарящий от кварца"....если внутренний не обладает нужной стабильностью.
Для данной разработки точность временных интервалов-не особо важна(но хотелось-бы!),но все-же если кто знает где "свинья порылась"-прошу показать. Или может я просто не верно сам алгоритм составил?....не учел длительность всех "переходов" при циклической прокрутке и разность натикивает от туда?
В общем,если не сложно-просьба объяснить все "на пальцах",что-б стало понятно.....ну и такой еще вопрос...может как-то можно "причесать" код? P.S.Reg_4 это резерв для больших выдержек(раньше были большей длительности,но затем "переписал")...так-что не обращайте внимания.
Обязательно на асме? Лично я уже давно от него отказался - пишу на си. Я сделал бы так: запустил таймер и в прерывании отсчитывал бы 1сек, устанавливая флаг, что прошла 1сек, а в основном цикле проверял бы этот флаг и далее по алгоритму... Точности хватило бы и от внутреннего тактирования, хотя можно и копеечный кварц...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Vovka,да...ассемблер....изучаю именно его,так-что без альтернативы....учу для себя,с полным пониманием,что-бы затем применять в практике. я пока-что не "добрался" до прерываний.....интересует,почему именно написанный алгоритм дает такую погрешность....что такое флаги-конечно имею представление,но на этом познания(на данный момент) и заканчиваются. Альберт....ага,т.е. получается что внешний кварц не прикрутить.....?...так? а что на счет внешнего сигнала тактирования(например генератор?)...нужен меандр или можно и синус "скормить"?
что значит "в нормальный вид? код открывается в "блокноте" или "ворд пад"...схема-могу в протеусе скинуть проект...или как нужно? вы напишите,я-подкорректирую....а то не понял смысла вопроса.....в "железе"-разведена печатка в "лауте",а собрано пока-что на панельке парочка диодиков для отсчета временных интервалов....и просто припаяны два проводка на АКК...кондера(блокировочного) по ногам питания-нет....может из-за этого косяк быть с частотой внутреннего гена?
и еще,была "потерта" внутренняя константа,вернул с второго МК(все-одной партии)....но пробовал и другой(новый) МК с заводской константой...то-же нет точности.
_________________ Ом намо Бха га ва-тэ,Васу дэва -йа.
т.е. получается что внешний кварц не прикрутить.....?...так?
Можно "прикрутить" генератор такого типа (смотрите на напряжение питания) к GP2/T0CKI (вход с логическими уровнями). Схему можно выложить через экспорт в jpg или pdf. В крайнем случае - как "копия экрана". Текст программы - здесь, под спойлер, с тегом Code.
Извиняюсь за глупый вопрос, но не просвятите, а как работать с таймером в МК не имеющем прерываний? Хотя бы в общих чертах. С прерываниями все понятно, завели будильник, забыли про него пока не прозвенит, прозвенел прерыванием - обрабатываем то что пора обработать. А без них как?
Именно так. Таймер лишь позволяет освободить время между контрольными точками. То есть между переполнениями. Поскольку таймер куцый, придется делать программный со счетом переполнений.
Неужели так сложно поставить словесную метку? Зачем, при наличии аппаратного таймера, делать программные задержки?
конечно понимаю! программу-же ведь я сам составлял...переход на 6 строк вверх и дикрементируем 1 из регистра X(которое(это значение) было вписано туда 3 строками ранее. Блиин...ну я-же спросил,написать комментарии по каждой строкой кода или нет?....ответа-не последовало....я-же не могу читать ваши мысли ....счас "перерисую".
да не знаю я как "вщемить" аппаратный таймер....я-же писал....что только начинаю изучать контроллеры,то что в интернете нарыл(в свободном доступе и с объяснениями на уровне новичка)-то и применил в своем устройстве.
никто не желает объяснить простые(с их точки зрения) истины новичками...вот и получается....12 сообщений(ответов) в теме,а по сути-не одного с ценной информацией нет....вот и верь после этого в людей.
Код:
LIST p=10F200 __CONFIG 0xFEB STATUS equ 03h GPIO equ 06h OSCCAL equ 05h Reg_1 equ 10h Reg_2 equ 11h Reg_3 equ 12h Reg_4 equ 13h RegX equ 14h RegY equ 15h org 0 bcf OSCCAL,0 MOVLW b'00001000' MOVWF GPIO TRIS GPIO MOVLW b'00010000' OPTION metkaX MOVLW .30 ;заносим 30 в аккумулятор MOVWF RegX ;заносим 30 в регистр X MOVLW .10 ;заносим 10 в аккумулятор MOVWF RegY ;заносим 10 в регистр Y BSF GPIO,1 ;включаем вывод GP1 BSF GPIO,0 ;включаем вывод GP0 call delay100mS ;переходим на задержку 100 мСек BCF GPIO,0 ;выключаем вывод GP0 call delay1900mS ;переходим на задержку 1,9 сек decfsz RegX,F ;Вычитаем 1 из значения регистра X,значение не равно 0? goto $-5 ;...переходим на 5 строк вверх BCF GPIO,1 ;выключаем вывод GP1 MOVLW .30 ;заносим 30 в аккумулятор MOVWF RegX ;заносим 30 в регистр X decfsz RegY,F ;вычитаем 1 из значения регистра Y,значение не равно 0? goto $-6 ;....переходим на 6 строк вверх goto metkaX ;...значение равно 0?-> переход на метку X delay100mS movlw .220 ;............... movwf Reg_1 movlw .130 movwf Reg_2 decfsz Reg_1,F ;задержка на 100 миллисекунд goto $-1 decfsz Reg_2,F goto $-3 nop return ;.....возврат к основному циклу программы на строку ниже delay1900mS movlw .123 ;............... movwf Reg_1 movlw .164 movwf Reg_2 movlw .10 movwf Reg_3 decfsz Reg_1,F ;задержка на 1900 миллисекунд(1.9 секунды) goto $-1 decfsz Reg_2,F goto $-3 decfsz Reg_3,F goto $-5 return ;.....возврат к основному циклу программы на строку ниже end
_________________ Ом намо Бха га ва-тэ,Васу дэва -йа.
Последний раз редактировалось Serj66610 Пн сен 24, 2018 19:18:54, всего редактировалось 1 раз.
Serj66610 , весьма прикольно, неужели вы не смогли найти рациональное зерно ни в моем сообщении ни в сообщение КРАМ? Причем я дал вам ссылку на уже готовое, а КРАМ вполне внятно подсказал в каком направлениии искать. Чего даже для начинающего кодописателя должно было хватить...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения