ATTiny2313 и регистры
Добавлено: Вт дек 08, 2009 14:48:29
Добрый день!
Пишу программу на asm, под AtTiny2313. Устройство общается с ПК по com порту. Обработку получения данных от ПК и собственно обработку данных реализовал на прерывании Rx Complete.
Главный цикл программы выглядит таким образом:
main:
nop
ret
т.е. в неи ничего не делается.
При обработке прерывания использую регистр R25 в качестве "состояния устройства". Т.е. получили байт, изменяем состояние на следующее.
Собственно проблема. Судя по поведению программы получается таким образом, что после выхода из обработчика RXComplete значение R25 сбрасывается в первоначальное значение.
Вопрос 1. я правильно понимаю, что в регистрах данные сохраняются? Естествено до тех пор пока есть питаник МК.
Вопрос 2. возможно ктото сталкивался с аналогичными проблемами. напишите, плз.
PS. проверил несколько раз по коду push/pop для этого регистра не использую. И вообще, изменяю значение этого регистра только в обработчике прерывания.
Пишу программу на asm, под AtTiny2313. Устройство общается с ПК по com порту. Обработку получения данных от ПК и собственно обработку данных реализовал на прерывании Rx Complete.
Главный цикл программы выглядит таким образом:
main:
nop
ret
т.е. в неи ничего не делается.
При обработке прерывания использую регистр R25 в качестве "состояния устройства". Т.е. получили байт, изменяем состояние на следующее.
Собственно проблема. Судя по поведению программы получается таким образом, что после выхода из обработчика RXComplete значение R25 сбрасывается в первоначальное значение.
Вопрос 1. я правильно понимаю, что в регистрах данные сохраняются? Естествено до тех пор пока есть питаник МК.
Вопрос 2. возможно ктото сталкивался с аналогичными проблемами. напишите, плз.
PS. проверил несколько раз по коду push/pop для этого регистра не использую. И вообще, изменяю значение этого регистра только в обработчике прерывания.