Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

TINY2313-T1

Общая болтовня...

TINY2313-T1

Сообщение _Ruslan_ » 05 июн 2009 13:58

Очень нужна помощь на счет программы под Attiny2313.
Проблема заключается в том, что в подпрограмме обработки прерывания, одной процедурой запускается таймер, а второй останавливается и после одного запуска и остановки, таймер больше не запускается (теми же процедурами). Разрешений на обработку прерываний по таймеру в программе нет. Пробовал на двух контролерах - ситуация та же...

код запуска:

STARTTIME:
LDI Bufer,0b00000001
OUT Tccr1b,bufer
RET

код остановки:
(BUFER - промежуточный регистр)
STOPTIME:
CLR BUFER
OUT Tccr1b,bufer
OUT Tcnt1h,bufer
OUT Tcnt1l,bufer
OUT Tifr,bufer
RET

после выполнения такого кода таймер не запускается:

RCALL STARTTIME
RCALL STOPTIME
RCALL STARTTIME

Фрагмент программы в которой замечен баг:
( LDI BUFER,0b110010
OUT OCR1BH,BUFER
LDI BUFER,0b11001000 \ЗАПИСАЛИ В РЕГИСТР КОМПАРАТОРА
OUT OCR1BL,BUFER
)
RCALL STOPTIME
RCALL STARTTIME
WT: IN BUFER,TIFR
SBRS BUFER,5 //Досчитал ли таймер до 13000? (тестируется бит прерывания OCF1B)
RJMP WT
RCALL STOPTIME

После ее выполнения на момент вызова "STOPTIME" счетчик досчитывает до 7, хотя в регистре компаратора Ocr1b записано число 13000.
Знаю, как впадляк разбираться в чужом коде, да еще и на словах, но если кому-то не очень трудно...

-----------------
Кажется нашел... Регистр TIFR не принимает значения. После записи в него данных он не изменяет состояние своих битов. В чем причина?

Добавлено спустя 10 часов 58 минут 57 секунд:
Баг, заключался в том, что для сброса (обнуление) регистра флагов прерываний TIFR нужно в него записывать "1", а не "0". А AVR Studio 4.16 "не знает" этого и потому когда в TIFR, записываете нули и отлаживаете програму, то TIFR обнулюеться, а в реальном контролере этого не будет.

Правильно:
SER R26
OUT TIFR,R26

Не правильно:
CLR R26
OUT TIFR,R26
_Ruslan_
Пробегал мимо
 
Сообщения: 9
Зарегистрирован: 23 апр 2009 20:20

Re: TINY2313-T1

Сообщение hardlock » 06 июн 2009 15:09

_Ruslan_, ну вот видите, сами разобрались. А в АСМе я вообще не силён.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3362
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua


Вернуться в Курилка (для некурящих)))



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1