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

Асинхронный режим Timer2 на ATmega8 от кварцевого резонатора 32768Гц RTC


CUBE

Рекомендуемые сообщения

Не могу запустить асинхронный режим. 

Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц).  После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. 

Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. 

Компилятор Atmel Studio 7

Шью через Sind Prog 2.1.1 + USBasp 2.0

Вот код: 

.macro outi 
 ldi r16, @1 
 out @0, r16 
.endm 
.org $000 
rjmp reset 
.org $001 
reti 
.org $002 
reti 
.org $003 
reti 
.org $004 
rjmp timer2_ovf 
.org $005 
reti 
.org $006 
reti 
.org $007 
reti 
.org $008 
reti 
.org $009 
reti 
.org $00A 
reti 
.org $00B 
reti 
.org $00C 
reti 
.org $00D 
reti 
.org $00E 
reti 
.org $00F 
reti 
.org $011 
reti 
.org $012 
reti 
.ORG INT_VECTORS_SIZE 
 
reset: 
.equ portout=portd 
.equ ddrout=ddrd 
.def led=r17 
.def mask=r18 
.def counter=r19 
 outi spl,low(ramend) 
 outi sph,high(ramend) 
 
 outi ddrout, 0xff 
 
 outi tccr2, 0b00000111 
 outi timsk, 1«toie2 
 
  
 
  
 ldi led,1«5 
 ldi mask,1«5 
 sei 
cycle: 
cpi counter, 10 
breq offtim 
 rjmp cycle 
 
timer2_ovf: 
inc counter 
 out portout, led 
 eor led, mask 
reti 
  
offtim: 
outi timsk, 0«toie2 
rjmp asinxron 
 
asinxron: 
 outi assr, 0b00001000 
back: 
 in r16, assr 
 cpi r16, 0b00001000 
 brne back 
 
  outi tccr2, 0b00000101 
  outi tcnt2, 0 
  outi ocr2, 0 
  outi timsk, 1«toie2 
 
 
m1: 
rjmp m1

DSC_0073.thumb.JPG.030623a7fd4921c758295f752b815068.JPG

DSC_0072.thumb.JPG.dc17cd2be78d3acd941dc10a24aa4900.JPG

Верх меги на фото слева. 

Изменено пользователем CUBE
Ссылка на комментарий
Поделиться на другие сайты

http://easyelectronics.ru/avr-uchebnyj-kurs-asinxronnyj-rezhim-tajmera.html

В этой статье читал что при подключении для асинхронного режима к TOSC1 и 2 они не нужны.

P.s. Завтра на всякий случай куплю и с ними попробую. И кварц другой возьму 

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

13 часа назад, CUBE сказал:

После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц

я бы сначала убедился что процессор "видит" эти асинхронные такты на заданной ноге! То есть надо включить порт на input и куда то вывести значение ноги без всяких таймеров и убедится что процессор видит нули и единицы (меандр) на этой ноге.

Когда работа железа проверена таким образом можно смело разбираться с настройками более сложной (чем порт ввода вывода) периферии процессора.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

7 часов назад, ruhi сказал:

я бы сначала убедился что процессор "видит" эти асинхронные такты на заданной ноге! То есть надо включить порт на input и куда то вывести значение ноги без всяких таймеров и убедится что процессор видит нули и единицы (меандр) на этой ноге.

Так я делаю ещё проще. Не в порт завожу и отслеживаю, а смотрю саму ногу светодиодом. Ножка в асинхронном не тикает, в любом другом за мило дело.

7 часов назад, Геннадий сказал:

При переключении в асинхронный режим линии порта PB6, PB7 отключаются от системы ввода/вывода.

Тааак. Знаю про это. Они мне и не нужны.Вывод на PD5 делаю.

Сегодня выполнил следующие потуги:

  • Попробовал другой резонатор
  • Добавил конденсаторы на 22 pF (хоть они там и не нужны)
  • Пробовал использовать режим по сравнению с ocr2, а не по переполнению
  • Добавил запрет глобальных прерываний, при инициализации асинхронного режима и последующее включение непосредственно перед

Пока результата нет. И с сожалению идей как ещё попробовать тоже

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

4 часа назад, CUBE сказал:

Добавил конденсаторы на 22 pF (хоть они там и не нужны)

а при чем здесь конденсаторы тогда? если входной сигнал на ноге есть надо с настройками таймера разбираться - почему он на этот сигнал не реагирует!

нога то правильно выбрана для таймера - он там вроде только с одной определенной асинхронные такты может принимать? и выдавать тоже на определенную но другую.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

1. конденсаторы нужны т.к. замечено что не на всех МК запускался генератор

2. Зачем ассемблер, думаете это  круто, нет - это глупость, не щнаете как толком работать с железлм и лезите в программирование с этого входа.

Самая большая проблема, ограничиваете себя в примерах

3. если уж так хотите ASM, напишите код инициализации на СИ и посмотрите как скомпрометируется код ASM

4. RTC генератор можно проверить простым шарканьем по входам пальцем, счетчик при этом должен щелкать, правда если не обладаете высоким статичным зарядом

5. Чтобы проверить саму настройку счетчика достаточно просто переключить источник тактирования

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

...
  outi tccr2, 0b00000101 
  outi tcnt2, 0 
  outi ocr2, 0 
  outi timsk, 1«toie2 
  outi tifr, 0
...

А так? И глобальный запрет прерываний необходим перед изменением assr, с последующим разрешением.

Изменено пользователем Berg
Ссылка на комментарий
Поделиться на другие сайты

11 час назад, hasl сказал:

2. Зачем ассемблер, думаете это  круто, нет - это глупость

Это лаба в моем институте.

 

11 час назад, hasl сказал:

3. если уж так хотите ASM, напишите код инициализации на СИ и посмотрите как скомпрометируется код ASM

Это глупость. Кто пишет на си инициализацию делают в asm

 

11 час назад, hasl сказал:

5. Чтобы проверить саму настройку счетчика достаточно просто переключить источник тактирования

Не 1 раз писал, что делал так. Настройка самого таймера работает. Не работает асинхронный режим.

12 часа назад, ruhi сказал:

и выдавать тоже на определенную но другую.

Ничего про этой найти не смог. Можно поподробнее?

Изменено пользователем CUBE
Ссылка на комментарий
Поделиться на другие сайты

Вот так у меня работает:

		cli
;====настроим Т2 на асинхронный режим и кварц 32кГц===
		clr	r16            		;
		out	TCCR2,r16      		;
		out	OCR2,r16       		;
		ldi	r16,0b00001000 		;
		out	ASSR,r16       		;
		ldi	r16,0b00001010		;
		out	TCCR2,r16      		;
wait_tccr2:
		in	r16,ASSR        ;
		sbrc	r16,0         	;
		rjmp	wait_tccr2     	;
		ldi	r16,0b01100101 		;
		out	OCR2,r16       		;
wait_ocr2:
		in	r16,ASSR        ;
		sbrc	r16,1         	;
		rjmp	wait_ocr2      	;
		ldi	r16,0b00001010		;
		out	TCCR2,r16      		;
		clr	r16                 ;
		out	TCNT2,r16           ;
wait_tcnt2:
		in	r16,ASSR        ;
		sbrc	r16,2         	;
		rjmp	wait_tcnt2     	;
		sei

Не помню, почему делал отдельно каждый регистр, но работает.

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

1 час назад, CUBE сказал:

Ничего про этой найти не смог. Можно поподробнее?

Извиняюсь, начать надо было с вопроса о типе процессора, это Атмега??? или кто??? Какой номер таймера используете.

На каждую атмегу есть пдф-ка и там есть раздел про таймеры типа такого:

16-bit Timer/Counter
(Timer/Counter1 and
Timer/Counter3)
The 16-bit Timer/Counter unit allows accurate program execution timing (event management),
wave generation, and signal timing measurement. The main features are:
• True 16-bit Design (i.e.,Allows 16-bit PWM)
• Three Independent Output Compare Units
• Double Buffered Output Compare Registers

...

Там все расписано, в принципе в интернете, достаточно просто, можно найти полный русский перевод.

И, совет, вы бы хоть подписали инструкции в вашем коде, что они по вашему делают, а то вообще говоря не понятно что мы обсуждаем, потому что:

 

1 час назад, CUBE сказал:

Настройка самого таймера работает. Не работает асинхронный режим.

режим или настройка не могут работать или НЕ работать, не работает всегда таймер пусть в каком то определенном режиме, с определенными настройками.

Я бы попросил все таки уточнить, что вы имеете ввиду под "асинхронный режим", я боюсь мы исходим из разных определений.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

@Геннадий Не могу понять как работает ваш код. Точнее почему он работает. Ведь вы ничего не писали в TIMSK то есть нет разрешения прерываний не по переполнению не по совпадению, выбран лишь решим по совпадению (бит WGM21 в TCCR2).

У меня не работает.

 

Изменено пользователем CUBE
Ссылка на комментарий
Поделиться на другие сайты

54 минуты назад, ruhi сказал:

это Атмега???

Да. В название темы указано. Пробовал и на 16А.

 

56 минут назад, ruhi сказал:

Какой номер таймера используете.

Timer/Counter2 8-bit async (TC2)

 

58 минут назад, ruhi сказал:

И, совет, вы бы хоть подписали инструкции в вашем коде

Согласен, у асемблера ужасная читаемость. Сделаю

 

59 минут назад, ruhi сказал:

Я бы попросил все таки уточнить, что вы имеете ввиду под "асинхронный режим", я боюсь мы исходим из разных определений.

Асинхронный режим работы таймера. При которой таймер работает от внешнего кварца, а сама программа выполняется он внутреннего источника тактов. Задается в регистре ASSR битом AS2. При его работе PB6 PB7 перестают быть пинами ввода/вывода и на них вешается кварцевый резонатор, разработчиками как раз предполагается что часовой (32768 кГц). Только при инициализации этого режима таймер отказывается тикать.

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

56 минут назад, CUBE сказал:

@Геннадий Не могу понять как работает ваш код. Точнее почему он работает. Ведь вы ничего не писали в TIMSK то есть нет разрешения прерываний не по переполнению не по совпадению, выбран лишь решим по совпадению (бит WGM21 в TCCR2).

Это не весь код, а последовательность инициализации таймера для асинхронного режима. Все остальное - прерывания, предделители и т.д. остается на Ваше усмотрение.

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

4 часа назад, CUBE сказал:

При его работе PB6 PB7 перестают быть пинами ввода/вывода и на них вешается кварцевый резонатор, разработчиками как раз предполагается что часовой (32768 кГц).

Ага, вот этого я не понял. Я думал он от меандра работает на одной ноге. Тогда надо осциллографом смотреть есть ли колебания на кварце.

Потом вот это CS02:0 установлено???

Depending on the mode of operation used, the counter is cleared, incremented, or decremented
at each timer clock (clkT0). clkT0 can be generated from an external or internal
clock source, selected by the clock select bits (CS02:0). When no clock source is
selected (CS02:0 = 0) the timer is stopped.

А то он останется стопед даже если:

4 часа назад, CUBE сказал:

Задается в регистре ASSR битом AS2.

 

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

Решено. Я 2 раза не всмотрелся что дают мне продавцы. (как позже выяснилось на 32 768 просто не было, и давали какой был с такими же циферками). 

Естественно ничего не работало с кварцами на 32 768 000 т.е. 32,768 МГц. 

Поставил на 32768 Гц (32,768кГц)  все заработало с пол пинка. 

P.s. Всем кто пытался помочь спасибо. Жаль что решение оказалось не достойно широкого обозрения. 

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

  • 1 год спустя...

Доброго дня.

У меня похожая проблема. Завёл отдельную ветку на этом же форуме:

Буду очень рад, если вы зайдёте туда и посмотрите, правильно ли я включаю асинхронный режим и нет ли других проблем.

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

  • 6 месяцев спустя...

Тоже попал на этот режим . У Евстифеева есть описание настроек . Но кто ж читает книжки пока не споткнется. На решение навел пример @Геннадий  .

Опрос и запись счетчика TCNT2 в режиме Nоrmal  на меге8 так работает :

;Инициализация

.def zero             =  r15

.def temp            =  r16

 clr  zero

ldi temp,(1<<AS2) out ASSR,temp                                                                  ; включение  асинхронного режима T2
ldi temp ,(1<<CS22)+(0<<CS21)+(1<<CS20) out TCCR2,temp                  ;clk/128 , Nоrmal 

;В программе формирование  импульсов 0.5 секунды с кварцем 32768 .

wait_05:
in  temp, ASSR sbrc temp,TCN2UB rjmp wait_05                                            ; проверка флагаTCN2UB на ноль
in  temp,TCNT2 cpi temp,128 brsh PC+2 rjmp wait_05  out TCNT2,zero   ; опрос и сброс счетчика TCNT2

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

     Прерывания по совпадению :

ldi temp,(1<<OCIE2) out TIMSK,temp                                                                       ;  прерывания  по совпадению T2
ldi temp,(1<<AS2) out ASSR,temp                                                                             ;  включение асинхронного режима T2
ldi temp ,(1<<WGM21)+(1<<CS22)+(0<<CS21)+(1<<CS20) out TCCR2,temp    ;  clk/128  , CTC
in temp,ASSR sbrc temp,OCR2UB rjmp PC-2                                                           ; проверка флага OCR2UB на ноль перед записью OCR2
ldi temp,16 out OCR2, temp                                                                                        ; 1/16 секунды для 32768

sei      

Bо фьюзах  СКОPT -  V  , но  у меня работает и без галочки . 

Изменено пользователем colorad
Ссылка на комментарий
Поделиться на другие сайты

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...