тупняк на tiny2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 16
Зарегистрирован: Вт сен 07, 2010 02:23:03

Сообщение yokimbe »

всем доброго дня... уж не знал в какую тему это запихать, поэтому набрался наглости создать новую. суть проблемы вот в чем: собрал для рабочих целей хитрый таймер на tiny2313. имеются три кнопки: одна включает таймер (принцип работы: 20 минут стоим, затем включаем нагрузку, еще 20 минут , отключаем нагрузку и все) вторая включает нагрузку без таймера, ну и третья RESET для сброса. а проблема наступает когда проходит один полный цикл (2x20 min) RESET-ом сбрасываю, нажимаю на кнопку включения нагрузки а она не включается..... вот такой тупняк..... спасает только долговременное отключение питания. может есть у кого какие мысли? исходник прилагаю
Вложения
timer.asm
(4.44 КБ) 275 скачиваний
Реклама
IM1
Грызет канифоль
Аватара пользователя
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Сообщение IM1 »

Вы бы схему приложили и хоть какие-то комментарии к программе сделали. А так телепатов надо искать.
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск

Сообщение Rimsky »

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

push r16
in r16, SREG
push r16

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

pop r16
out SREG, r16
pop r16

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

Вернуться в «Микроконтроллеры и ПЛИС»