akl 0 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба Будет частота 0,999993283, разве плохо? По мне, Плохо. И не частота, а период. ...поди надо кварц специально отобранный... Частота взята для примера. Вот так студия отрабатывает такую частоту. Ничего не мешает в строке задания частоты установить требуемую и получить такой же результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ishpanec 0 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба Не проще использовать 16-ти разрядный в режиме CTC ? в моем не проще, все равно счет нужен. мне нужно не только считать по 1с. но минимум 25 раз в секунду изменять состояние каждого табло, проще сделать два счетчика, в первом меняем инфу на табло, во втором считаем Ваш код дает интервал 1 секунды, за счёт сравнений в обработчике, на 39мс больше. чем обусловлена эта задержка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akl 0 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба Каждое прерывание Т0, в котором дополнительно чистится TCNT0, наращиваются и сравниваются с уставками счетчики приводит к тому, что обработка идёт не через 256 тактов, а через 266. Вот отсюда и погрешность формирования интервала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ishpanec 0 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба в котором дополнительно чистится TCNT0 я выкинул это из кода, оно мне не нужно было, это я ставил по типу вдруг что изменится...)) без этого какова погрешность будет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg1978 1 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба с Си не дружу) после того как gcc танцы с бубном устраивать заставлял))))) Значит попробуйте поработать в IAR. Я с ним сразу подружился. Пример на асме: //======================================================================== .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 //======================================================================== Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 23 декабря, 2014 Опубликовано 23 декабря, 2014 · Жалоба По мне, Плохо. И не частота, а период. А по-моему, очень даже неплохо. Чай не для сервера ntp :) И кстати, батенька, вовсе не период, а именно частота: 7890123 / 256 / 30821 Вы то вообще нерабочий код выложили в посте от Dec 20 2014, 09:56 :) А человек Вам поверит и будет удивляться, почему не фурычит... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akl 0 24 декабря, 2014 Опубликовано 24 декабря, 2014 · Жалоба Да, действительно, период будет 256*30821=7890176/7890123=1,000006717259 секунды. Виноват, извините. Ниже показана работа кода из указанного поста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 24 декабря, 2014 Опубликовано 24 декабря, 2014 · Жалоба Я одного не понимаю, после первого переполнения в обработчике Ваш ret не поставит на место флаг I в регистре SREG, следовательно, все последующие переполнения не будут вызывать выполнение обработчика... Ааааа, теперь я прошу прощения, хитровыраженная запись brne pc-2 несколько сбивает с толку, особенно глядя на расставленные метки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться