ATTiny13 работа с таймером

Обсуждаем контроллеры компании Atmel.
alsav22
Открыл глаза
Сообщения: 50
Зарегистрирован: Ср янв 20, 2021 05:39:28

Re: ATTiny13 работа с таймером

Сообщение alsav22 »

BOB51, в коде всё правильно?

Добавлено after 5 minutes 5 seconds:
И дело не только в симуляторе. Я на железе проверяю. Нет захода в обработчик.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15542
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: ATTiny13 работа с таймером

Сообщение BOB51 »

Я код особо не смотрел. Просто по опыту работ - не все аппаратные модули и их режимы симуляторы могут корректно поддерживать.
Конечная проверка всегда только за макетом.
Была бы единая макетная платка и единый подход задаче проекта - тогда можно чего то корректировать с конкретной проверкой.
(Вариант "дистанционных уроков").
:sleep:
Для начала хоть словесное описание задачи составить надо, а уж под него по даташиту подставлять нужные значения и затем команды соответствующие подобрать для загрузки значений и управления аппаратным модулем (счетчиком или чем другим).
Для проверок "на железе" тем более надо разумно контрольные тесты проектировать.
8)
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1614
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: ATTiny13 работа с таймером

Сообщение VNS »

[uquote="alsav22",url="/forum/viewtopic.php?p=4771041#p4771041"]Что не так в коде?
;предделитель тактовой частоты CLK/2 (старт таймера)
ldi temp, 0b00000010;
out TCCR0B, temp;[/uquote]
При установке тактовой частоты счётчика не нужно забывать и о регистре TCCR0A. Установите необходимые значения (0х02) в регистр TCCR0A перед установкой значений в TCCR0B и тогда должно заработать.
alsav22
Открыл глаза
Сообщения: 50
Зарегистрирован: Ср янв 20, 2021 05:39:28

Re: ATTiny13 работа с таймером

Сообщение alsav22 »

В коде это есть. Сразу после Srart.
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1614
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: ATTiny13 работа с таймером

Сообщение VNS »

Теперь увидел... Возможно я и ошибаюсь, но по логике… при настройке работы таймера, необходимо вначале настроить регистры TCCR0A и TCCR0B, далее настроить регистр TIMSK0, а уже затем разрешить глобальные прерывания. И далее к этим настройкам не возвращаться.

ЗЫ. И как сие творение должно работать?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: ATTiny13 работа с таймером

Сообщение akl »

Установите адрес входа в прерывание типа как ниже

Код: Выделить всё

.ORG	0x06
; обаработчик прерывания при сравнении
TIM0_COMPA:
   nop
   reti 

Start:
alsav22
Открыл глаза
Сообщения: 50
Зарегистрирован: Ср янв 20, 2021 05:39:28

Re: ATTiny13 работа с таймером

Сообщение alsav22 »

Сделал по-другому, но ваше сообщение подтолкнуло к размышлениям в нужном направлении. Спасибо. Теперь код работает правильно.
Спойлер

Код: Выделить всё

.include "tn13def.inc";

.def temp = r16   

.cseg            
.org 0 
    rjmp Start      ; Переход на начало программы
    reti
    reti
    reti                 
    reti              
    reti                                
    rjmp TIM0_COMPA ; Прерывание по совпадению
    reti                               
    reti                                
    reti                            
          

; обаработчик прерывания при совпадении
TIM0_COMPA:
	nop
	reti           

/*; обаработчик прерывания при переполнении счётчика
TIM0_OVF:
    nop;
    reti;*/

Start:
	; инциализация стека
	ldi temp, low(RAMEND);
	out SPL, temp ; Set Stack Pointer to top of RAM
	
	clr temp
	; режим сравнения (CTC)
	ldi temp, 0b00000010; 
	out TCCR0A, temp

	clr temp;
	out TCNT0, temp; начальное значение счётчика

	;устанавливаем биты разрешения прерывания 0-ого счетчика
	ldi temp, 0b00000100; прерывание при совпадении с OCR0A
	out TIMSK0, temp; 

	;значение для сравнения
	clr temp;
	ldi temp, 0x1E; 
	out OCR0A, temp;

	;разрешить глобальные прерывания
	sei;
	;предделитель тактовой частоты (старт таймера)
	ldi temp, 0b00000010;
	out TCCR0B, temp;

Cicle: 
	nop
	nop
	nop
	rjmp Cicle
Последний раз редактировалось alsav22 Ср дек 10, 2025 17:47:48, всего редактировалось 2 раза.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15542
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: ATTiny13 работа с таймером

Сообщение BOB51 »

Больно смотреть на "муки творчества" котейки без минимальных базовых знаний....
(Хотя иной раз о троллинге мысля заползает)...
:cry:
Ну какое ж тут

;предделитель тактовой частоты CLK/2 (старт таймера)

Код: Выделить всё

 ldi temp, 0b00000010;
 out TCCR0B, temp;
Если в даташите CS01 = 1 означено как clkio/8 (from prescaler) ....
Да еще учитывать на какой частоте системный генератор работает и что в CLKPR по умолчанию установлено.
:facepalm:
Ответить

Вернуться в «AVR»