Обсуждаем контроллеры компании Atmel.
Ответить

Re: Attiny15L таймер не считает или ошибся в программе?

Вс янв 19, 2020 17:40:40

Поэтому снимать напряжение питания с контроллера нельзя, аккумулятор ставить не хочется, а конденсатор 1000мк должен несколько секунд продержать питание.

Я понял что управление девайсом происходит от выключателя… предполагаю что МК не потребляет много энергии, а значит за счёт ёмкости конденсатора МК будет хватать питания на тот период когда производятся короткие выключения. А диод перед стабилитроном не даст конденсатору быстро разрядится в момент кратковременного отключения питания. :) А то что реле обесточатся в момент клацанья, думаю ничего страшного нет.

Re: Attiny15L таймер не считает или ошибся в программе?

Вс янв 19, 2020 18:52:56

Абсолютно точно. Такова и была задумка.

Re: Attiny15L таймер не считает или ошибся в программе?

Вс янв 19, 2020 18:58:47

Как я понял - "примитив, вариант 1" из моих блок-схем.
Но с "реактивным балластом" такая схема, имеющая конденсатор-"батарейку", может работать неустойчиво именно в моменты подачи "щелчка-команды" с общего выключателя (особое внимание следует уделить работе аппаратной части схемы BOD). Другое дело - трансформаторный источник питания.
АВРки старых моделей - не PIC среднемладший. При том, что работа светодиодов оптронов может достаточно быстро высадить конденсатор емкостью до 1000uF.
В принципе для такого решения аппаратные таймеры особо не требуются - достаточно программных и одного как генератора относительно точных временных интервалов.
8)
Сменить/кардинально модернизировать прожку таки придется - НО... необходимость такового решения должна быть осознана на собственном ... опыте.
:wink:

ПЫ.СЫ...
Облазил микрощип - в текущем перечне all product (относительно АВРок) даташитки на тиньку 15-ю НЕТУ...
Разве что где в дебрях старых архивов атмела завалялась - но туда влазить...
:facepalm:

Re: Attiny15L таймер не считает или ошибся в программе?

Вс янв 19, 2020 19:59:37

Абсолютно точно.

Хорошо. Если я правильно понял алгоритм, то вот пробный вариант…
Проверить необходимо в железе (на макетке)… питание нужно подать от БП без гасящего кондея… нагрузка – светики… на вывод РВ2 подсоединяем кнопку без фиксации. Она будет замыкать вывод РВ2 на GND, имитируя клацанья выключателем. Данный вывод подтянут через внутренний резистор к плюсу питания.
Временные интервалы для тестов в секундах (в замен минут), то есть свет будет гореть 60 секунд… а вентилятор 22 секунды, с последующем включением через 22 секунды на одну секунду.
tiny15.hex

Да чуть не забыл… РВ3 – свет; РВ4 – вентилятор.

ЗЫ. Для тини15 никогда не писал программы… так что если где накосячил особо тапками не закидываем… :)) если я правильно понял, то МК тактируется на частоте 1,6 МГц. От этой частоты и отталкивался настраивая таймер-счётчик0.

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 17:46:50

Наверное, я все-же зря не обозначил на схеме выключатель.... Публикую исправленную схему.
1.JPG
(99.41 KiB) Скачиваний: 215


Также публикую текст исправленной и доработанной программы:
TSU_exp.asm
(5.89 KiB) Скачиваний: 169


Теперь ситуация следующая. Включаю устройство(схему проверки, не готовое), т.е подаю +5 В от отдельного питальника. Нагрузка кратковременно включается и отключается. Если подать сетевое напряжение на оптопару нагрузка включается и наконец-то через некоторое время отключается. Режимы переключаются, все в порядке. Но вопрос остался следующий. Почему при включении устройства идет кратковременное включение нагрузки? Нагрузка включается на время, определенное параметрами задержки в программе. Значит происходит прерывание по INT0 или по переполнению TMR0? Код подразумевает неподключение нагрузки, пока не придет хотя-бы один импульс сети на РВ2. Может такое быть, что каким-либо образом поднимаются флаги прерывания при насройке чего либо, как в случае настройки прерывания по INT0?

Соответственно, если сначала подключить сеть, а потом подать питание (так оно и будет в реальном устройстве) нагрузка включается, но не выключается, как будто таймер или не считает или происходит перескок переменной delay через 0 и выдержка уже получается большой.

Самсусамыч, спасибо за hex, но меня не интересует готовое устройство, я хочу разобраться.

Поскольку я запутался, прошу помощи с ИСХОДНИКОМ, может появятся какие-то мысли, почему так происходит?

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 17:57:45

Самсусамыч, спасибо за hex, но меня не интересует готовое устройство, я хочу разобраться.

Так ты её проверь как работает… и если устроит, то я тебе на словах попробую объяснить как у меня сделано, а там уж своё будешь смотреть. Но если нет, так нет… Я не пишу на ассемблере, потому я не помощник с исходником. :dont_know:

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 18:50:59

Так ты её проверь как работает… и если устроит, то я тебе на словах попробую объяснить как у меня сделано, а там уж своё будешь смотреть. Но если нет, так нет… Я не пишу на ассемблере, потому я не помощник с исходником. :dont_know:


А можно глянуть исходник, очень интересна реализация. А я пока свою домучаю, к тому-же прогресс есть.. :-)

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 19:22:41

А можно глянуть исходник, очень интересна реализация.

1.png

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 19:30:56

Попробовал хекс в железе. Получилась мигалка. При наличии сети она переключает режимы, хаотично, при отсутствии просто горит тот светодиод, который горел последним (или оба). Вот такие пироги.... :-(

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 19:44:49

Попробовал хекс в железе. Получилась мигалка. При наличии сети

:facepalm: Я же писал, что на порт РВ2 необходимо вешать кнопку… нажатия на кнопку – это имитация отключение питания выключателем. У меня другой алгоритм – сетевые импульсы в моём варианте не нужны. Временные интервалы отсчитывает таймер-счётчик0, а клацанье выключателем отслеживает вывод РВ2. :dont_know:

Вот как должна выглядеть проверочная схема.
2.png

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 19:54:06

Я понял. Так реализовать я не могу. Выключатель - в коридоре, освещение в ванной, проводку трогать нет возможности. Мысль такая - вход автомата подсоединяется к проводам от лампы освещения в ванной. Выходы соответственно к вентилятору и самой лампе. Управление лампой и вентилятором одним выключателем, прерывающим подачу сетевого напряжения на короткий промежуток времени. Как реализовано управление люстрой с разными лампами и одним выключателем у китайцев. Клацнул - одна лампа горит, клацнул - две горят, клацнул - 4 горят еще раз клацнул опять одна. Правда там еще и пульт есть. Но, это уже перебор. :-)

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 20:15:31

:shock: А кто предлагает трогать проводку? Почти всё делай так как ты задумал, только на вывод РВ2 необходимо подать сигнал как я рисовал на предыдущей странице. :write: В момент отключения напряжения выключателем, только на выводе РВ2 исчезнет напряжение, а МК будет питаться от кондея. Я думал ты смотрел ту схему… :roll:

А в алгоритме делал как у тебя написано… а написано (как я понял) так:
• Подали напряжение – включился свет и вентилятор. Если не клацать выключателем (у меня кнопка), то свет будет гореть 60 сек. (имитация 1 ч). А вентилятор будет работать 22 сек (имитация 22 мин), затем отключится. Далее будет включатся через 22 сек на 1 сек.
• Затем если клацнуть выключателем (кнопкой), будет работать только свет: свет будет гореть 60 сек. (имитация 1 ч). Затем отключится.
• Если ещё рас клацнуть выключателем (кнопкой), будет работать только вентилятор: вентилятор будет работать 22 сек (имитация 22 мин), затем отключится. Далее будет включатся через 22 сек на 1 сек.
• Если в третий раз клацнуть выключателем (кнопкой), то включится свет и вентилятор – переход в первоначальное состояние (как при подачи питания).
Последний раз редактировалось Самсусамыч Пн янв 20, 2020 20:24:39, всего редактировалось 1 раз.

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 20:21:34

Берем блок питалко-зарядку от мобилки, батарейку на 3 вольта, некоторое количество дополнительных деталюшек и работаем с режимами "глубокого сна" и запоминанием последнего активного состояния - по максимуму (как и говорилось ранее - простой вариант НЕ ПРОЙДЕТ). При использовании батарейки только как источника на время переходных процессов - ее там на год хватить может.
Дополнительно - уделяем внимание этапу "холодного запуска".
Вся "городушка" один разок включается при помощи выключателя "по холодному". Затем возможно также несколько вариантов исполнения. Однако всего в наличии 8-3=5 лапок. Вычтем еще 3 - в итоге для модернизации осталось всего 2...
Не так уж и много.
Собственно первичное включение ВСЕГДА даст или исходную комбинацию включенных нагрузок "по умолчанию" или ранее сохраненную после предыдущего отключения.
А уже после этого первичного состояния кратковременное отключение сетевого выключателя продолжит перебор комбинаций.
Ежли желательно "умолчание" определенное как полностью выключенное состояние - в принципе конечно возможно... - НО... тогда потребуется какой-то индикатор подачи напряжения на устройство, явно отмечаемый оператором, для подачи последующих команд (перещелкивания сетевого выключателя). Иначе определить готовность устройства к приему команд при первичной подаче питания и соответственно момент, когда можно будет кнопкой "пощелкать" будет весьма затруднительно.
8)

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 20:35:11

насчет батарейки не всегда это по фэншую если отключения сети бывают долгие...
лучше ионисторы 0,1-5ф 5.5в
глянул вашу схему "питания" тут https://radiokot.ru/forum/download/file.php?id=342285 :shock: :facepalm: :kill: даже суперэкономные китаюзы так не делают лет 20+ вы хоть изучили б вапрос..
насчет зарядки от мобилки и ваше ваших реле на 5в....оно врядли сможет хоть каки нить стабилно работать так даже при 5000 мелких фарад на питани мк напротиф жирна банка не мене 500мелких фарад инкжна для питания релей а синхру сети если она вам нужна берите мимо мосста
Последний раз редактировалось musor Пн янв 20, 2020 20:55:07, всего редактировалось 1 раз.

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 20:54:29

Ну, схема заработала, так как я и хотел. Я разобрался где в программе я накосячил. Будут варианты, уважаемые знатоки?

И по поводу блока питания. Я изучил вопрос.
http://radiostorage.net/1507-skhemy-bes ... lerov.html
И, уважаемый musor, я знаю а где-то и разделяю ваше отношение к подобным схемам. Я читал форум, в том числе и на этом ресурсе. И, возможно, я возьму именно зарадку от мобилы в качестве питальника, и развяжу все MOCами и использую симисторы.

А уж сколько китайских вещей работает на балластном кондере -не счесть. И через меня в качестве ремонтируемых, много проходило.

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 20:58:10

набалстном С да есть еше старые разработки ,но включени там не такое ка у вас!
между шиной релей на 12или 24в стоит 7805 питающая мк... и банки после моста жирные а на питани мк-не боле 10-47мк!!!!реле на 5в с баластом не применяет НИКТО В ЗДРАВОМ УМЕ

Re: Attiny15L таймер не считает или ошибся в программе?

Пн янв 20, 2020 21:00:31

Угу. Поэтому там будут оптроны.

Re: Attiny15L таймер не считает или ошибся в программе?

Вт янв 21, 2020 06:32:38

... прошу помощи с ИСХОДНИКОМ, может появятся какие-то мысли, почему так происходит?
Может так.
Спойлер
Код:
.
.
.
init:
.def ZERO  = R15; ??????? ??????

   CLR   ZERO

    ldi temp,0b00011011 ;????????? ?????
    out ddrb,temp;PB3,PB4 ?? ?????

   ldi temp, 0x67
    out OSCCAL,temp

   CLR   FLAGS  ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    sbi ACSR,ACD
   
    ldi temp,(1<<PUD|1<<ISC01|1<<ISC00)
    out MCUCR,temp ; ????????? ?????????? INT0 ?? ??????, ?????????? ????????????? ??????????

   ldi temp,(1<<INT0)   ;????????? ??????????
   out gimsk,temp ; ????????? ??????? ?????????? ?? INT0
   OUT   GIFR,R16  ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    ldi temp,( 1<<TOIE1|1<<TOIE0)
    out timsk,temp ; ????????? ?????????? ??? ???????????? ???????? TMR0 ? TMR1
   OUT   TIFR,R16

    ldi mode,3; ?????? ?????? ????? + ??????????

;_____???????? ???????????, ????????? ???????, ???????? ?????? ?????? ________
on:
    ;???????? ??????? ??????????????? ? ??????????? ?? ??????
;   clr temp
    out tcnt1,ZERO; ????????? ????????
   out tcnt0,ZERO

   ldi ms_delay,1 ; 164??
   
;
   ldi delay,255; 5,12 ???*255 = 22???
 
   ldi delay,2; ??? ????????,???????? ????? ?????? 10 ???.
.   
.
.

Re: Attiny15L таймер не считает или ошибся в программе?

Вт янв 21, 2020 17:48:05

... прошу помощи с ИСХОДНИКОМ, может появятся какие-то мысли, почему так происходит?



Может так.

CLR FLAGS ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Да. Именно в этом и было дело. Я проинициализировал 2 переменных flags и delay_H и все пошло. Просто я где-то вычитал, что при включении содержимое регистров является нулевым, так сказать хард-ресет с обнулением регистров. Еще обрадовался - во какие эти АВР, в пиках все ячейки обнулять надо.... Наивный.

Огромное спасибо за участие, всем респект и уважуха, буду допиливать прогу дальше.... Фильтр помех и все прочее. Еще раз спасибо!

Re: Attiny15L таймер не считает или ошибся в программе?

Ср янв 22, 2020 11:18:23

Содержимое РСФ определяется согласно отдельной таблицы в даташите (конкретно для данного кристалла!).
Причем не только для состояния аппаратного сброса по reset, но и для иных источников сброса - каждый раз внимательно его просматриваем.
Аппаратный сброс НЕ ТРОГАЕТ регистровый файл и содержимое ОЗУ.
В отличии от Си компилятор ассемблера не производит самостоятельно "установки по умолчанию" - максимум делается проверка правильности написания команды и, при наличии соответствующих файлов конфигурации, (*.inc штатного комплекта IDE или самодельных) проверка соответствия заданной конфигурации ресурсов.
Остальное - на усмотрение автора программы.
8)
Ответить