[an error occurred while processing this directive]
Можно продолжить напрасную трату времени :)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено AD 01 сентября 2006 г. 20:35
В ответ на: Повтор 2GM: ухитрился вытащить Ваш код с полуживой Сахары, и что я увидел - это не шанхайские барсы, это мексиканский тушкан :(( отправлено =AVR= 31 августа 2006 г. 21:09

Сразу скажу, что для авра последний раз писал что-то года три назад, детали подзабылись.

Используем список изменений состояний.


inc pwm
breq cycle_start

cp pwm, r0
sbrc sreg, z
out porta, r1
cp pwm, r2
sbrc sreg, z
out portb, r3
cp pwm, r4
sbrc sreg, z
out portc, r5

cp pwm, r0
brne m0
ld r0, x+
ld r1, x+
m0:
cp pwm, r2
brne m1
ld r2, x+
ld r3, x+
m1:
cp pwm, r4
brne m2
ld r4, x+
ld r5, x+
m2:
; return from interrupt

cycle_start:
mov xl, table
ld r0, x+
out porta, r0
ld r0, x+
out portb, r0
ld r0, x+
out portc, r0

ld r0, x+
ld r1, x+
ld r2, x+
ld r3, x+
ld r4, x+
ld r5, x+
; return from interrupt



По времени занимает 20-29 тактов без учета входа/выхода и сохранения (не помню, сколько это на авр)
Отнимает 6 регистров на состояния, 1 на начало таблицы и 2 на указатель.
ОЗУ отнимает (3 + 24*2 + 3*2) = 57 байт на таблицу (можно и меньше, но не для
всех значений счетчиков), нужна двойная буферизация - итого 114.

За период шима можно спокойно построить новую таблицу и заменить указатель.
Потребуется еще 24*2 байт ОЗУ для поддержки упорядоченного списка счетчиков.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

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


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание