AVR: Синхронизация исполнения кода к значению таймера Т1

Обсуждаем контроллеры компании Atmel.
Ответить
orinoko

Сообщение orinoko »

Так и симулировал. Брякпоинт в начале. брякпоинт в конце (NOP только дописал). Остановился на первом, обнулил счётчик тактов, запустил, после останова на втором брякпоинте смотрю количество тактов.
В качестве девайса была выбрана мега16.

И, кстати, вначале программы у вас написано LDI R16, TCNT1L, а правильно наверное IN R16, TCNT1L
Реклама
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Сообщение ВитГо »

orinoko писал(а): И, кстати, вначале программы у вас написано LDI R16, TCNT1L, а правильно наверное IN R16, TCNT1L
Ой.. ну да, конечно ! это я просто отлаживал и поставил LDI.. поправлю !

я в конце поставил sleep

И смотрел счетчик циклов.. а не PC...
гм.. не может быть разницы при исполнении на меге16 и 32..

может быть в разные места смотрим ?

В принципе команд мало, так что даже вручную просчитать легко..
breq - 1 такт если условие не исполняется, и 2 такта если осуществляется переход по условию..
все остальные команды 1 такт..

скоро я этот код проверю в работе.. так что если будут еще правки то я напишу.
Реклама
orinoko

Сообщение orinoko »

не может быть разницы при исполнении на меге16 и 32..
По этому вопросу разницы нет
Вложения
taktctr.png
(28.44 КБ) 351 скачивание
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Сообщение ВитГо »

ну еще такт прибавьте на nop который в последнем брейке и будет 8...
плюс считаем что на 5 тактов задержались при входе
итого 8 + 5 = 13...
Реклама
Эиком - электронные компоненты и радиодетали
orinoko

Сообщение orinoko »

На картинке я показал при R16=5. А при 4 счётчик равен 8, а при 3 - 9. То, что выше первого брейка, меня не интересует. Я проверял только критическую часть. Или вы невнимательно прочли мой пост с табличкой. А на картинке я просто показал, откуда у меня эти результаты
Реклама
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Сообщение ВитГо »

orinoko писал(а):На картинке я показал при R16=5. А при 4 счётчик равен 8, а при 3 - 9.
А на картинке я просто показал, откуда у меня эти результаты
Ну то что вы привели и является ПРАВИЛЬНОЙ работой кода !

еще раз напишу...
если счетчик TCNT1=5 - значит мы уже потеряли 5 тактов на вход в процедуру.. прибавляем сюда полученные вами 7 и получаем 12 тактов ОТ МОМЕНТА ГЕНЕРАЦИИ ЗАПРОСА НА ПРЕРЫВАНИЕ... - именно это число (константа) мне важно..

если счетчик TCNT1=4 - значит мы потеряли 4 такта на вход в процедуру, прибавляем полученные вами 8 - и получаем 12 тактов ОТ того же МОМЕНТА ГЕНЕРАЦИИ ЗАПРОСА НА ПРЕРЫВАНЕ - заметьте - опять 12!! константа !!

и так далее...

Результат мы смотрим одинаково, я тоже на этот счетчик смотрел когда проверял код в симуляции...
Реклама
orinoko

Сообщение orinoko »

А, ну да. Тормознул, сорри.
Мне интересно всё же, как у вас будет работать конечный результат. Всё изделие, так сказать
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Сообщение ВитГо »

Ну разработка устройства уже проведена

здесь можно размещать ссылки на мой же ресурс, но не здесь ?

Модуль генерации TV видео сигнала на atmega16

то что готово Библиотека вывода изображения на телевизор v 1.0

исходники свободные, прокомментированы мною полностью (подтирать не стал).

Ну и пишу статью про генерацию видео (вдруг кто нить придумает что нить еще интересное)

Генерация видеосигнала при помощи контроллеров AVR. Часть 1. Аппаратная подготовка.

Генерация видеосигнала при помощи контроллеров AVR. Часть 2. Синхроимпульсы

эта часть еще пишется:
Генерация видеосигнала при помощи контроллеров AVR. Часть 3. Ассемблер

Недостаток текущей разработки в синхронизации исполнения кода командой sleep - что делает невозможным использование аппаратных прерываний...
поэтому буду внедрять разработанный код синхронизации..

p.s. кстати, а какие требования существуют для статей которые размещаются здесь ? где про это прочитать ?
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

ВитГо писал(а):ладно, вопрос снят, ларчик открылся просто
А если ещё подумать!? :)
Или поискать? :))
Спойлер; !!!! SET TIMER1 TO CTC MODE WITH NO PRESCALE

; EQUALIZE INTERRUPT LATENCY
lds r16,tcnt1l ;2
cpi r16,10 ;1
brlo LATFIX1 ;1/2
LATFIX1:
cpi r16,11 ;1
brlo LATFIX2 ;1/2
LATFIX2:
cpi r16,12 ;1
brlo LATFIX3 ;1/2
LATFIX3:
Естественно, циферки подправить под свои нужды.

Хм... Плохо ищите. Или английского не знаете? avrfreaks.net , форум, 2007 год.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Сообщение ВитГо »

ну в принципе это вариант моего кода, только свернутый и без нопов :-))

спасибо !

p.s. приятно осознавать что не только я озадачился такой синхронизацией, и не только мне она нужна.. значит не фигню придумал :-)
Ответить

Вернуться в «AVR»