реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Таймеры atmega32a
akl
сообщение Dec 22 2014, 09:43
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Цитата(RabidRabbit @ Dec 22 2014, 12:35) *
Будет частота 0,999993283, разве плохо?
По мне, Плохо. И не частота, а период.
Цитата(RabidRabbit @ Dec 22 2014, 12:35) *
...поди надо кварц специально отобранный...
Частота взята для примера. Вот так студия отрабатывает такую частоту. Ничего не мешает в строке задания частоты установить требуемую и получить такой же результат.
Прикрепленное изображение

Go to the top of the page
 
+Quote Post
ishpanec
сообщение Dec 22 2014, 12:43
Сообщение #17





Группа: Новичок
Сообщений: 6
Регистрация: 19-12-14
Пользователь №: 84 192



Цитата(alexeyv @ Dec 22 2014, 05:39) *
Не проще использовать 16-ти разрядный в режиме CTC ?


в моем не проще, все равно счет нужен. мне нужно не только считать по 1с. но минимум 25 раз в секунду изменять состояние каждого табло, проще сделать два счетчика, в первом меняем инфу на табло, во втором считаем

Цитата(akl @ Dec 22 2014, 05:18) *
Ваш код дает интервал 1 секунды, за счёт сравнений в обработчике, на 39мс больше.


чем обусловлена эта задержка?
Go to the top of the page
 
+Quote Post
akl
сообщение Dec 22 2014, 14:03
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Каждое прерывание Т0, в котором дополнительно чистится TCNT0, наращиваются и сравниваются с уставками счетчики приводит к тому, что обработка идёт не через 256 тактов, а через 266. Вот отсюда и погрешность формирования интервала.
Go to the top of the page
 
+Quote Post
ishpanec
сообщение Dec 22 2014, 14:47
Сообщение #19





Группа: Новичок
Сообщений: 6
Регистрация: 19-12-14
Пользователь №: 84 192



Цитата(akl @ Dec 22 2014, 15:03) *
в котором дополнительно чистится TCNT0


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

без этого какова погрешность будет?
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Dec 22 2014, 21:53
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(ishpanec @ Dec 21 2014, 19:54) *
с Си не дружу) после того как gcc танцы с бубном устраивать заставлял)))))

Значит попробуйте поработать в IAR. Я с ним сразу подружился.
Пример на асме:
CODE

//========================================================================
.equ ST_TCNT = TCNT0
.equ ST_TIMSK = TIMSK
.equ ST_OCIE = OCIE0
.equ ST_OCR = OCR0
.equ ST_TCCR = TCCR0
.equ CS0 = CS00
.equ CS1 = CS01
.equ CS2 = CS02
//========================================================================

.cseg

//========================================================================
.macro Init_System_Timer
clr r16
out ST_TCNT, r16
in r16, ST_TIMSK
sbr r16, 1<<ST_OCIE
out ST_TIMSK, r16
outi ST_OCR, (XTAL/64/1000)
in r16, ST_TCCR
sbr r16, 1<<CS0 | 1<<CS1
out ST_TCCR, r16
.endmacro

.macro ReRun_Sys_Timer
in r16,ST_OCR
subi r16,-(XTAL/64/1000)
out ST_OCR,r16
.endmacro
//========================================================================

//========================================================================
Sys_Timer_Comp:
push r16
in r16,SREG
push r16

ReRun_Sys_Timer

sbr FLAGS,1<<SYS_TICK_FLG

pop r16
out SREG,r16
pop r16
reti
//========================================================================
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Dec 23 2014, 08:47
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(akl @ Dec 22 2014, 12:43) *
По мне, Плохо. И не частота, а период.

А по-моему, очень даже неплохо. Чай не для сервера ntp sm.gif И кстати, батенька, вовсе не период, а именно частота: 7890123 / 256 / 30821
Вы то вообще нерабочий код выложили в посте от Dec 20 2014, 09:56 sm.gif А человек Вам поверит и будет удивляться, почему не фурычит...
Go to the top of the page
 
+Quote Post
akl
сообщение Dec 24 2014, 03:17
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Да, действительно, период будет 256*30821=7890176/7890123=1,000006717259 секунды. Виноват, извините.
Ниже показана работа кода из указанного поста.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Dec 24 2014, 11:17
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Я одного не понимаю, после первого переполнения в обработчике Ваш ret не поставит на место флаг I в регистре SREG, следовательно, все последующие переполнения не будут вызывать выполнение обработчика... Ааааа, теперь я прошу прощения, хитровыраженная запись brne pc-2 несколько сбивает с толку, особенно глядя на расставленные метки...
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st September 2025 - 11:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016