Страница 1 из 1

тупняк на tiny2313

Добавлено: Чт ноя 04, 2010 13:21:05
yokimbe
всем доброго дня... уж не знал в какую тему это запихать, поэтому набрался наглости создать новую. суть проблемы вот в чем: собрал для рабочих целей хитрый таймер на tiny2313. имеются три кнопки: одна включает таймер (принцип работы: 20 минут стоим, затем включаем нагрузку, еще 20 минут , отключаем нагрузку и все) вторая включает нагрузку без таймера, ну и третья RESET для сброса. а проблема наступает когда проходит один полный цикл (2x20 min) RESET-ом сбрасываю, нажимаю на кнопку включения нагрузки а она не включается..... вот такой тупняк..... спасает только долговременное отключение питания. может есть у кого какие мысли? исходник прилагаю

Re: тупняк на tiny2313

Добавлено: Чт ноя 04, 2010 14:24:15
IM1
Вы бы схему приложили и хоть какие-то комментарии к программе сделали. А так телепатов надо искать.

Re: тупняк на tiny2313

Добавлено: Чт ноя 04, 2010 15:20:23
Rimsky
Сильно не вникал, но первое, что бросается в глаза, ты не сохраняешь регистр SREG и используемые РОН в прерывании, а это конкретный косяк:

push r16
in r16, SREG
push r16

.... обработчик

pop r16
out SREG, r16
pop r16

И не зачем при входе в обработчик прерываний запрещать прерывания командой cli, флаг разрешения прерываний аппаратно сбрасывается, а чтобы его установить достаточно одной команды reti