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

 
 
> Помогите новичку с таймером на Меге16, в чем моя ошибка?
DimaSPB
сообщение Dec 1 2007, 18:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 22-08-07
Пользователь №: 29 972



Я - любитель и только начал разбираться с Мегой16. Глядя в книжки и даташит написал учебную программу, сигнализирующую переполнение таймера 1 в нормальном режиме хотя бы один раз. Ниже прилагаю код. Увы, эффекта нет((( Ломаю голову уже 16 часов, сил больше нет...
Прошу помощи! В чем ошибка???

; АТМега16
; Учебная программа работы с таймером 1 в нормальном режиме
; Первое прерывание по любому событию таймера 1 зажигает светодиод

.include "m16def.inc" ; Присоединение файла описаний
.list ; Включение листинга

.def temp = r16 ; Определение главного рабочего регистра

;------------------------- Вектора прерывания
rjmp RESET
reti ;rjmp Прерывание 1
reti ;rjmp Прерывание 2
reti ;rjmp Прерывание 3
reti ;rjmp Прерывание 4
rjmp TIM1 ;Прерывание 5 Захват таймера-счетчика 1
rjmp TIM1 ;Прерывание 6 Совпадение А таймера-счетчика 1
rjmp TIM1 ;Прерывание 7 Совпадение В таймера-счетчика 1
rjmp TIM1 ;Прерывание 8 Переполнение таймера-счетчика 1
reti ;rjmp Прерывание 9
reti ;rjmp Прерывание 10
reti ;rjmp Прерывание 11
reti ;rjmp Прерывание 12
reti ;rjmp Прерывание 13
reti ;rjmp Прерывание 14
reti ;rjmp Прерывание 15
reti ;rjmp Прерывание 16
reti ;rjmp Прерывание 17
reti ;rjmp Прерывание 18
reti ;rjmp Прерывание 19
reti ;rjmp Прерывание 20

RESET:
cli ; общий запрет прерываний

ldi temp, 0x80 ;Выключение компаратора
out ACSR, temp

;-------------------------- Инициализация стека

ldi temp, 0x7F ; Выбор адреса вершины стека
out SPL, temp ; Запись его в регистр стека


;-------------------------- Инициализация портов ВВ
ldi temp, 0xFF ; Запись числа $FF в регистр temp
out DDRB, temp ; Запись этого числа в DDRB (порт PB на вывод)
out PORTB, temp ; Запись то же числа в PORTB (потушить светодиод)

;--------------------------- Инициализация таймера-счетчика 1
out TIMSK, temp ;Разрешение прерываний по любому событию таймеров

ldi temp,0b00000000
out TCCR1A, temp ;Нормальный режим Таймера 1

ldi temp,0b00000011 ;Нормальный режим Таймера 1, Предделитель 1/64
out TCCR1B, temp
;---------------------------

sei ; общее разрешение прерываний

;-------------------------- Основной пустой цикл
main:
nop
rjmp main ; К началу цикла

;-------------------------- Прерывания по таймеру 1
; Если хотя бы раз происходит прерывание, загорается светодиод
TIM1:
ldi temp, 0x00 ; Записываем число $00 в регистр temp
out PORTB, temp ; Записываем число 0x00 в PORTB (включить светодиод)
reti
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Leen
сообщение Dec 2 2007, 01:14
Сообщение #2


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

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Проверял в симуляторе... Прога-то работает нормально... И прерывание происходит... Вот только одного не понял, почему вдруг у меги 16 TIM1_OVF уехал на адрес 8???? Выспитесь, потом откройте ман на сабж на стр. 45. И все будет путемsmile.gif
P.S. и пара маленьких замечаний: 1) никогда (тем более при отладке) не разрешайте ВСЕХ прерываний - программа улетит куда-нибудь, потом не найдете; 2) если таймер работает в режиме нормала, странно от него ожидать генерации прерываний по захвату и сравнению...
Успехов.
Go to the top of the page
 
+Quote Post
DASM
сообщение Dec 2 2007, 01:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Leen @ Dec 2 2007, 04:14) *
не понял, почему вдруг у меги 16 TIM1_OVF уехал на адрес 8???? Выспитесь, потом откройте ман на сабж на стр. 45. И все будет путемsmile.gif

правильно у него все, только в даташите от 1 нумерация, а у товарища от нуля. SPH он еще забыл записать, но это не причина
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 00:25
Рейтинг@Mail.ru


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