Зарегистрирован: Пт мар 25, 2011 10:14:07 Сообщений: 6
Рейтинг сообщения:0
Здравствуйте! Подскажите пожалуйста как решить задачу. Написал программу по устранению дребезга кнопки, в отладчике работает и если ее вставить в основной цикл программы тоже работает, а вот в обработке прерываний не работает. Как сделать так, чтобы программа работала в обработке прерываний от T1 не только в отладчике, но и в реальности? переполнениеи T1 происходит каждые 100 Гц.
rx0 значение которое было в предыдущий раз rx1 значение сейчас rx2 значение, которое говорит в основном цикле программы о нажатии кнопки
ldi Temp4,1 out TIMSK,Temp4 ; разрешение прерывания от таймера ТС0
ldi Temp4 , 0x05 out TCCR0,Temp4 ; установка предделителя ; с этого момента таймер запущен
;================ Инициализация таймера ТС1
out TIMSK,Temp4 ; разрешение прерывания от таймера ТС1
ldi temp4, 0x01
out TCCR1A,Temp4 ; установка предделителя ; с этого момента таймер запущен
;========== Программа
MAIN_PROGRAM:
;******************************************** Выполнение двоично-десятичного преобразования
mov bufer,counter_sec ;запись содержания регистра counter_sec в bufer
;========== Счетчик сотен
sotnya:
mov temp, bufer ;запись содержания регистра bufer в temp cpi temp,sotni ;вычитание сотни из temp brcs M1 ;if флаг n=1(число отрицательное) then переход на метку М
subi bufer, sotni ;вычитание сотни из bufer inc counter_sotn ;counter_sotn+1
rjmp sotnya
M1:
ldi Temp,0x3E out PortA,Temp ;разрешение вывода(0) сотен out portC,counter_sotn ;вывод сотен в portC ldi Temp,0 mov counter_sotn,Temp ; отчистка счетчика сотен
;========== Счетчик десятков
desyatok:
mov temp, bufer ;запись содержания регистра bufer в temp
subi temp,desyatki ;вычитание десятка из temp brmi M2 ;if флаг n=1(число отрицательное) then переход на метку М2
ldi Temp,0x3B out PortA,Temp ;разрешение вывода(0) единиц
out portC,counter_sotn ;вывод единиц в portC
ldi Temp,0 mov counter_sotn,Temp ;отчистка счетчика единиц
;====== Обработка кнопок
in rx1,PIND mov rx,rx1 com rx1 andi rx1,0x40 ;здесь этот кусок работает (когда кнопка не нажата PIND,bit6=1 ; когда кнопка нажата PIND,bit6=0 ; если случается такое что rx1=1-[состояние PIND,bit6 сейчас] ; а rx0=0-[состояние PIND,bit6 в предыдущий раз], то в rx2,bit6 ; записывается 1 )
and rx1,rx0 mov rx2,rx1 mov rx0,rx
sbrs rx2,6 ; если rx2,bit6=1 то счетчик сбрасывается rjmp exit1 ldi counter_sec, 0x00 ldi temp, 0x00 ldi bufer, 0x00
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Зарегистрирован: Пт мар 25, 2011 10:14:07 Сообщений: 6
Рейтинг сообщения:0
md5sum писал(а):
kostyali писал(а):
Для начала, при входе в прерывание сохраните флаги и все, что может быть подпорчено, при выходе - восстановите.
а что может быть подпорчено еще кроме флагов? вот так восстанавливать?[красным цветом] а сохранять в смысле посмотреть и запомнить по отладчику? в обработке прерываний от T0 так же флаги лучше восстанавливать?
;---------- Обработка прерываний от Т1 ----------
TM1_OVF:
ldi Temp3 , 0xec out TCNT1H,Temp3 out TCNT1L,Temp3
in rx1,PIND mov rx,rx1 com rx1 andi rx1,0x40 ; здесь этот кусок не работает, не могу понять почему and rx1,rx0 mov rx2,rx1 mov rx0,rx
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения