Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Еще один способ выравнивания тактов на основе предложенных ранее(+)

Отправлено Quasy 02 марта 2009 г. 13:06


Отличается тем, что переходы осуществляются не по SKIP, что дает определенную свободу. Данный прокрустиан заточен на устранение джиттера от разных времен входа в прерывание (или поллинга флага прерывания при других применениях) до 8 тактов. Легко меняется. Просто хозяйке на заметку. Мертвое время для 3-х опрашиваемых бит, когда они равны "111" - 6 тактов.

//
RSEG CODE
// Миниморум тактов до точки "End_Min_Delay"
#define MIN_DELAY ( 11 )
//=========================
TIMER1_COMPA_vect: // 6 min: CALL_vect(4) + JMP_handler(2)
push r16 // 7,8 min
in r16, SREG // 9 min
push r16 // 10,11 min
//==========
End_Min_Delay:
in r16, TCNT1L //for debug: ldi r16, (от 4 до 11)
subi r16, MIN_DELAY
andi r16, 0x07
out SREG, r16
//----------
brbs 2, dig2
lpm r16, Z // kill-3
rjmp dig2 // kill-2
dig2: brbs 1, dig1
lpm r16, Z // kill-3
dig1: brbs 0,dig0
rjmp dig0 // kill-2
dig0: //--- Tут выровнялись и пошли работать.
nop
//................
pop r16
out SREG, r16
pop r16
reti
//====


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 4 пополам:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru