Я много и часто делал в жизни, что не встречал у других


Я много и часто делал в жизни, что не встречал у других
ДаAntos79 писал(а): 08 апр 2025, 18:12 На релейной схеме, защитные диоды ULN справляться? Дополнительные не надо ставить?
там как минимум ошибка в делителеdstrufanov писал(а): 13 мар 2025, 10:32Rovki писал(а): 11 мар 2025, 22:40 Буду признателен и благодарен если сделаете, а то ждать манны небесной слишком долго.
Переделал под тини10: на PB0 прерывание от целевого контроллера, PB3 - сброс 100мс целевого контроллера через 10с, если от него нет прерыванияКод: Выделить всё
.device ATtiny10 .nolist .include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn10def.inc" .list ;================================================================================================================= ; частота внутреннего генератора 8МГц с делителем на 8 (по умолчанию) ;================================================================================================================= .def temp =r16 ;определение аккумулятора ;================================================================================================================= rjmp init ;таблица прерываний reti rjmp PCINT reti reti rjmp T0_compA rjmp T0_compB ;================================================================================================================= init: ldi temp,low(RAMEND) ;определяем указатель стека out $3D,temp ldi temp,high(RAMEND) out $3E,temp clr temp out TCNT0H,temp ;сброс счетчика таймера T0 out TCNT0L,temp ldi temp,0b00000000 ;включаем Т0 в режим normal out TCCR0A,temp ldi temp,0b00000100 ;предделитель таймера Т0 на 1024 (период 1024мкс) out TCCR0B,temp ldi temp,0b00000000 out TCCR0C,temp ldi temp,0b00100110 ;совпадение по истечении 10с (9766) out OCR0AH,temp ldi temp,0b00100110 out OCR0AL,temp ldi temp,0b00000000 ;совпадение по истечении 100мс (98) out OCR0BH,temp ldi temp,0b01100010 out OCR0BL,temp ldi temp,0b00001000 ;определяем PB3 как выход, а остальные как входы out DDRB,temp ldi temp,0b00001000 ;подтяжек нет, единица на выходе out PortB,temp ldi temp,0b00000010 ;разрешаем прерывания от Т0 по совпадению канала A out TIMSK0,temp ldi temp,0b00000001 ;разрешаем прерывания по изменению состояния входов out PCICR,temp ldi temp,0b00000001 ;разрешаем прерывания по изменению на входе PB0 out PCMSK,temp sei ;общее разрешение прерываний ;================================================================================================================= cicle: wdr ;сброс аппаратного вотчдога rjmp cicle ;цикл ;================================================================================================================= T0_compA: cbi PortB,3 ;установка нуля на выводе PB3 для сброса целевого МК clr temp out TCNT0H,temp ;сброс счетчика таймера T0 out TCNT0L,temp ldi temp,0b00000100 ;разрешаем прерывания от T0 по совпадению канала B out TIMSK0,temp reti ;и выходим из прерывания ;================================================================================================================= T0_compB: sbi PortB,3 ;установка единицы на выводе PB3 для запуска целевого МК clr temp out TCNT0H,temp ;сброс счетчика таймера T0 out TCNT0L,temp ldi temp,0b00000010 ;разрешаем прерывания от T0 по совпадению канала A out TIMSK0,temp reti ;и выходим из прерывания ;================================================================================================================= PCINT: clr temp out TCNT0H,temp ;сброс счетчика таймера T0 out TCNT0L,temp reti ;и выходим из прерывания
ПС: но я согласен с nick1215, что если уж ставить внешний вотчдог, то лучше аппаратный, по крайней мере его программировать не надо
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость