Господа, подскажите!
написал программу на тини 2313, которая принимает в порт(в5) времяимпульсный сигнал. По результату декодирования зажигает светодиоды, мигает ими...
мигание реализовал через прерывания от таймера 0...
так вот, если во время входа в прерывание, замкнуть вход порта(в5) на 0 или 1, то прерывания прекращают прерываться, вроде как флаг сбрасывается!
но в программе я ничего не сбрасываю...если даю в порт следующую команду(посылку импульсов), она снова декодируется,и все нормально до момента подачи шума в порт.
ставил nop-ы между командами cbi,sbi, да и в случайных местах- что-то меняется...(прерывания глючат через раз ) или виснет основная прог.(декодер импульсов) ,но правильно все равно не работает,в эмуляторе- avr studio, все работает нормально!
Помогите, может кто сталкивался с подобным????
файл, с кодом прилагается....
передатчик включается только на время передачи команды, остальное время он выключен
(то есть в приемнике слышен шум!). А приемник должен отображать последнюю команду,
пока сброс не нажать.. И пищалка при этом прерывисто пищать! а шум ее останавливает.
Даже хватает просто коснуться портом + или -, и все,таймер как будто останавливается, (не мигает)
(это без радиоканала уже, на проводах связь). После подачи следующей команды, все нормально, до
следующего "шума "
мигание это, т.е. пищание , я сделал по прерыванию (переполнению) таймера 0, оно,
(только одно прерывание)
разрешается в начале программы и больше не запрещается. Вложенных прерываний- нет!
стек? по идее не должен переполняться,хотя как это точно проверить?
в обработчике как и в основной программе, есть много
команд условного перехода,проверка состояния портов, может оно мешает прерыванию?
заранее спасибо!
- Вложения
-
- clock.asm
- (11.31 КБ) 367 скачиваний

