Перейти к содержанию
    

подскажите малопотребляющий AVR

Здавствуйте! кто может конкретно подсказать как автоматически подстараивать внутрений RC генератор с максимальной точностью на основе кварца 32768гц на таймере Т2. Я так понимаю точности часового кварца с головой если учитывать что в худшем случае уход составляет 1сек в день (а в дне 3600х24 секунд). Подскажите как это сделать самым практическим способом.

 

Всем заранее :a14: а я весь вот такой :wassat: даже соображаю туго... работы много ночи не сплю, так что не сильно не бить :smile3009: и хорошо пояснять :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С помощью OSCCAL и допустим Т1, используя прерывания от Т2, методом последовательного приближения.

А какой МК?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Application Note AVR055: Using a 32kHz XTAL for run-time

calibration of the internal RC от Atmel.

а где нибуть на русском имеется?

 

С помощью OSCCAL и допустим Т1, используя прерывания от Т2, методом последовательного приближения.

А какой МК?

мк M8. "С помощью OSCCAL и допустим Т1, используя прерывания от Т2, " это почти продумал... просто у меня Т1 работает по 3 -20 тактов + пропуски на программу ... долго ломал голову как собрать все эти отрывки ) но додумался.

вопрос тогда: методом последовательного приближения. - это как? там ведь ещё надо погрешности посмотреть у меня не точно совпадут например 10000 тактов Т1 с 1 тактом Т2 а будет колебатся 10000 + - 50 например. а мк нагружать сильно не надо он на регистрации собий важных!) посдкажите имено практически может формулами а лучше блолками програм на ICC AVR )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где нибуть на русском имеется?

Есть на понятном каждому программеру языке :) AVR055.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть на понятном каждому программеру языке :) AVR055.zip

ОХО! я тогда сейчас уже лягу высплюсь и за это плотненько возьмусь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здавствуйте! кто может конкретно подсказать как автоматически подстараивать внутрений RC генератор с максимальной точностью на основе кварца 32768гц на таймере Т2. Я так понимаю точности часового кварца с головой если учитывать что в худшем случае уход составляет 1сек в день (а в дне 3600х24 секунд). Подскажите как это сделать самым практическим способом.

 

Всем заранее :a14: а я весь вот такой :wassat: даже соображаю туго... работы много ночи не сплю, так что не сильно не бить :smile3009: и хорошо пояснять :biggrin:

Я когдато на меге 8 делал подстройку RC на 7,3728 мГц нада было UART на 115200 шоб работал, вот код:

 

 

;*************************************************************************

; Юстировка внутреннего RC генератора

;*************************************************************************

 

JUSTOSC:

in r20,TCNT2 ;сохранили показания счетчика T2 в r20

J1:

in r19,TCNT2 ;сохранили показания счетчика T2 в r19

cp r19,r20

breq J1 ;ожидаем переключение счетчика Т2

in r17,TCNT1L ;сохранили показания счетчика T1 в r18

in r18,TCNT1H

J2:

in r20,TCNT2 ;сохранили показания счетчика T2 в r20

cp r19,r20

breq J2 ;ожидаем переключение счетчика Т2

in r16,TCNT1L ;сохранили показания счетчика T1 в r18

in r19,TCNT1H

mov r4,r16

mov r5,r19

clr r21

sub r4,r17 ;получили колво импульсов Т1 за 7812,5 мкс

sbc r5,r18

ldi r17,0xE1 ;константа для 7,3728 мГц

ldi r18,0x00

sub r17,r4

sbc r18,r5

brcc J3

dec r21

rjmp J4

J3:

inc r21

J4:

in r17,OSCCAL

add r17,r21

out OSCCAL,r17

J5:

mov r22,r21

mov r17,r16

mov r18,r19

mov r19,r20

J6:

in r20,TCNT2 ;сохранили показания счетчика T2 в r20

cp r19,r20

breq J6 ;ожидаем переключение счетчика Т2

in r16,TCNT1L ;сохранили показания счетчика T1 в r18

in r19,TCNT1H

mov r4,r16

mov r5,r19

clr r21

sub r4,r17 ;получили колво импульсов Т1 за 7812,5 мкс

sbc r5,r18

ldi r17,0xE1 ;константа для 7,3728 мГц

ldi r18,0x00

sub r17,r4

sbc r18,r5

brcc J7

dec r21

rjmp J8

J7:

inc r21

J8:

in r17,OSCCAL

add r17,r21

out OSCCAL,r17

cp r22,r21

breq J5

ret

 

 

Еще инициализация таймеров:

ldi r16,0x04

out TCCR1B,r16 ;Старт таймера Т1 1ед.L = 34,72 мкс, 1ед.H = 8,89 мс

ldi r16,(1<<AS2)

out ASSR,r16 ;ассинхронный режим Т2 от внешнего резонатора 32768 Гц

ldi r16,(1<<CS21)|(1<<CS22)

out TCCR2,r16 ;Старт таймера Т2 1ед.= 7812,5 мкс, Цикл = 2 с

Изменено пользователем Tolyaha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем ОГРОМНОЕ спасибо! выбрал код как подсказал otrog! так как у меня все таймеры зяняты. лишние коды вставлять не стал и писал как бы сам. выбрал код такого плана.

 

unsigned int i=TCNT1;

TCNT1=0;

if (i<7813)

OSCCAL++; //Увеличиваем тактовую частоту

else

OSCCAL--; //Уменьшаем тактовую частоту

SECOND_PULSE=1;

при его использовании кждую секунду значение меняется 7811 (точность офигенная)/7837 (точность 0.3%) меня это всё устраивает с головой. только не будет ли проблем со стабильностью от такого частого изменения значения OSCCAL? как бы ... генератор... 8Мгц... все время там переключается что то... может какие то такты будут раз в секунду пропадать ? или я просто параноик? :biggrin:

Изменено пользователем Electronic)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему бы частоту не настраивать при входе в программу.

ну так RC генератор) паяльником прикоснулся и он поплыл))))

 

зацените ИДЕЮ!

 

if (T1<=7790){OSCCAL++;}

if (T1>=7830){OSCCAL--;}

 

мне :a14: держит частоту 7810 стабильно а уйдёт за диапазоны снова подстоится в диапазон +/-0,3%, и OSCCAL изменяется в крайнем случае :yeah:

Изменено пользователем Electronic)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если на часовой кварц даже чихнуть - частота поплыла.

Не проще ли поставить кварц, допустим на 7 с копейками мегагерц(или другой),

где процент ошибки =0 при 115кбит/сек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если на часовой кварц даже чихнуть - частота поплыла.

Не проще ли поставить кварц, допустим на 7 с копейками мегагерц(или другой),

где процент ошибки =0 при 115кбит/сек.

В микропотребляющих системах - не проще. Причем иногда бывает, что генератор под кварцевый резонатор только один, а нужно иметь и встроенные RTC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста, микроконтролер AVR уровня M8-M16 (что бы ножек не 100было). с потреблением в рабочем режиме <1мА. и не экзотический!

 

а то на мою любимую М8 конкретный акумулятор надо получается :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста, микроконтролер AVR уровня M8-M16 (что бы ножек не 100было). с потреблением в рабочем режиме <1мА. и не экзотический!

 

а то на мою любимую М8 конкретный акумулятор надо получается :05:

Попробуйте серию picoPower. Там есть ATmega88P и ATmega168P. Спокойно покупается в Digikey.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...