Обсуждаем контроллеры компании Atmel.
Вс сен 25, 2016 08:11:47
akl писал(а):Не нравится отсутствие синхронности между отсчетом 1 секунды и выводом на индикатор. В часах должно быть всё синхронно.
Если для управления адронным коллайдером или запуском геостационарных спутников - таки да.
А так ли это важно в обычных бытовых часах ? Конечно, 6 разрядов удобнее, чем 4 с выводом секунд по кнопке. Зато дешевше.
Вс сен 25, 2016 21:02:51
я собирался сделать как замену стандартным часам в ваз 2107. как сделаю так напишу статью )
Пн сен 26, 2016 21:13:48
mixon46 писал(а):помогите а то совсем не показывает как надо
Здравствуйте. Есть рабочий проэкт часов на AT90S2313/ATTiny2313 динамика, CodeVision (работают около 5 лет дома, точность приемлемая). Интересует?
Пн сен 26, 2016 21:31:08
не) предпочитаю свои проекты)
Пт окт 21, 2016 13:09:52
Здрасьте.
Никак не доходит, как на ATTiny2313 настроить таймер TC0 в режиме СТС и прерывание по OCR.
Читаю даташит, книги разных умных людей.
Выписал себе на листок нужные (как мне кажется) регистры, биты, флаги, но в голове никак не хочет складываться воедино общая картина.
Кому не в западло, плиз, черканите эти заветные несколько строчек инициализации TC0 желательно (но не обязательно) на ассемблере.
Пт окт 21, 2016 13:30:33
Загружаете регистр OCR. Счетчик будет до него считать и обнуляться
Разрешаете прерывание по совпадению с регистром OCR
Задаете источник тактирования для таймера.
И все. Если прерывания разрешены глобально, он будет возникать при совпадении с регистром OCR.
Пт окт 21, 2016 13:48:03
Спойлер
- Код:
.include "tn2313def.inc"
.org 0
RJMP START
.org 0x0D
T0_COMPA:
RETI
;************************************
START:
LDI XL,LOW(RAMEND)
OUT SPL,XL
LDI R16,1<<SE
OUT MCUCR,R16
LDI R16,100-1
OUT OCR0A,R16
LDI R16,1<<WGM01
OUT TCCR0A,R16
LDI R16,1<<WGM01
OUT TCCR0A,R16
LDI R16,1<<CS00
OUT TCCR0B,R16
OUT TCCR1B,R16
LDI R16,1<<OCIE0A
OUT TIMSK,R16
OUT TIFR,R16
SEI
WAIT:
SLEEP
NOP
RJMP WAIT
.EXIT
Как то так.
Пт окт 21, 2016 13:53:07
А, похоже стало доходить:
1) Записать требуемое значение в регистр сравнения OCR0A
2) TCCR0A <-- 0b00000010 - режим СТС
3) TCCR0B <-- битами CS02, CS01 и CS00 выбираем предделитель.
КАКОЙ ПРЕДДЕЛИТЕЛЬ ЛУЧШЕ ВЫБРАТЬ ДЛЯ binary angle modulation?
4) TIMSK <-- 0b00000001 - разрешение прерываний от TC0
5) sei - глобально разрешаем прерывания.
Как-то так?
Пт окт 21, 2016 14:06:05
BlYur писал(а): binary angle modulation?
Тыц
Сб окт 29, 2016 10:30:02
подскажите как на AVR сделать процедуру задержки
(100 +N*cycle ) // N - int_16 ; cycle =1/Sysclk
при увеличеннии входящего аргумета на 1 задержка увеличивается на 1 клок (50 нсек при 20 Мгц)
Желательно переносимое на CvAVR
Сб окт 29, 2016 12:20:28
За один "клок" в AVR, в лучшем случае, выполнится одна команда, без 8-битного аргумента. Соответственно никак.
Сб окт 29, 2016 13:49:40
Vov123 писал(а):без 8-битного аргумента
Лично я не понял, что Вы имеет ввиду.
12val12 запускаете таймер -100 тактов переполнения. Затем запускает на нужное чиссло. Таймер 16 битный. Отрицательное число не знаю как, может если минус то без задержки.
Сб окт 29, 2016 14:07:56
Ну настроит он таймер по совпадению, сработает прерывание, сколько "клоков" на это уйдёт до реагирования на событие, вероятно не один, а товарищ хочет именно один. К тому-же проц его до прерывания будет, вероятно, чем-то занят, переход сколько клоков займёт?
Сб окт 29, 2016 16:21:50
12val12 писал(а):подскажите как на AVR сделать процедуру задержки
(100 +N*cycle ) // N - int_16 ; cycle =1/Sysclk
при увеличеннии входящего аргумета на 1 задержка увеличивается на 1 клок (50 нсек при 20 Мгц)
Желательно переносимое на CvAVR
Fo=20000000 cycle=50*Fo/1000000000. Точнее (100 +N*cycle)-1-Δ, где Δ-дополнительная задержка вызванная прерыванием.
Сб окт 29, 2016 18:28:56
Специалист akl я Вас не понял.
задержа нужна не фиксированная а переменная ..вообще планируется что величина задержки будет приходить по uart
цель с шагом 50 нСек исследовать входной посторяющийся сигнал отдаленный от известного импульса синхронизации на время более 5мксек
например нужно глянуть что через 100.05 мксек после ИЗ
подали величину задержки 100.05 мксек . контроллер отсчитал это время от ИЗ включил на 50 нсек УВХ
защелнул уровень на конденсаторе 20 пф ацп меги измерил уровень и передал обратнопо uart пару задержка100.05- уровень
потом подали величину задержки 100.10 мксек . контроллер отсчитал это время от ИЗ включил на 50 нсек УВХ
защелнул уровеньна конденсаторе 20 пф ацп меги измерил уровень и передал по uart пару задержка100.10- уровень
через некоторое количество посылок (пока что до 65000) будет готовая осцилограмма с разрешающей способностью 50 нсек
спасибо сделал без таймера .
задержка (5 +0.05*int_16)
Вс окт 30, 2016 05:10:45
Понятно. Вы не видите разницу между микросекундой и тактом таймера/контроллера; в выражении задержки явно не хватает коэффициента пропорциональности. Удачи.
Вс окт 30, 2016 09:08:05
вот тест
с каждым нефиксированным нажатием на кнопку время задежки увеличивается на 50 нс (1 клок при 20МГц)
начальная задежка 4600нсек
аргумент целоцисленный . таким образом моджно менять задержку от 4600нсек до 3280000 нсек с шагом 50 нСек
при тактовой 20Мгц
актуальная часть программы
DDRD.7=1; DDRD.6=1; //
Cycle =0;
while (1)
{
if ( PIND.5 )
{
Cycle=Cycle+1; while (PIND.5) {}
}
for (k=0;k<1 ;k++) { PORTD.6=1 ; } PORTD.6=0 ; //sync
Delay_int_cycle ( Cycle); //процедура задержки
PORTD.7= 1 ; PORTD.7= 0 ;//задержанный импульс
}
}
- Вложения
-
- strobo_mega8.zip
- (31.65 KiB) Скачиваний: 183
Вс окт 30, 2016 09:36:48
Неправильно.
Задержку в 1 тик даёт только команда ассемблера "nop".
Вот здесь калькулятор задержек на асме
http://www.home.unix-ag.org/tjabo/avr/AVRdelayloop.htmlПосмотри сколько команд выполняется на ту или иную задержку, соответственно сколько тиков уходит на её выполнение.
Также обрати внимание на разницу в числе задержки и числа заносимого в регистры.
Последний раз редактировалось
Vov123 Вс окт 30, 2016 09:52:45, всего редактировалось 2 раз(а).
Вс окт 30, 2016 09:42:57
Vov123 писал(а):Задержку в 1 тик даёт только команда ассемблера "nop".
Большая часть команд AVR выполняется за один такт.
Вс окт 30, 2016 10:04:06
Не сочтите за оффтопик.
Спойлер
Кажется, времена изобретения велосипеда закончились - имеем очередное "изобретение" : стробоскопического осциллографа . Жаль, что работать не будет. Но не для работы это делалось - для жизнедеятельности пытливого ума. Только эта пытливость ума не позволяет взять книжку и прочесть, как устроен стробоскопический осциллограф и почему его не сделать на AVR, равно как и почему от батарейки нельзя запитать электровоз.
Учиться, учиться, еще раз учиться ! © Ленин .
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.