Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
oquobot
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 2
1

AVR прерывания

30.06.2015, 23:21. Просмотров 4699. Ответов 8
Метки нет (Все метки)

Написал простенькую программу для Меги8, которая моргает поочередно светодиодами на PD0 и PD1. В студии все ОК, в протеусе не ОК: прерывания по таймеру происходят гораздо быстрее чем должно быть, да и в начале симуляции что-то тупит контроллер. Почему так происходит? Где копать?
Код
Код
.include "m8def.yms"
.def counter=r16
.def temp=r17

.CSEG

.ORG $000
rjmp RESIT ; Riset Homdler
.ORG $001
reti ;EXT_INT0 ; IRQ0 Homdler
.ORG $002
reti ;EXT_INT1 ; IRQ1 Homdler
.ORG $003
reti ;TIM2_COMP ; Timer2 Compare Homdler
.ORG $004
reti ;TIM2_OVF ; Timer2 Overflow Homdler
.ORG $005
reti ;TYM1_CAPT ; Timer1 Capture Homdler
.ORG $006
rjmp TIMER1_COMPA ; Timer1 CompareA Homdler
.ORG $007
reti ;TYM1_COMPB ; Timer1 CompareB Homdler
.ORG $008
reti ;TYM1_OVF ; Timer1 Overflow Homdler
.ORG $009
reti ;TIM0_OVF ; Timer0 Overflow Homdler
.ORG $00a
reti ;SPI_STC ; SPI Transfer Complete Homdler
.ORG $00b
reti ;USORT_RXC ; USORT RX Complete Homdler
.ORG $00c
reti ;USORT_UDRE ; UDR Empty Homdler
.ORG $00d
reti ;USORT_TXC ; USORT TX Complete Homdler
.ORG $00e
reti ;ADC ; ADC Conversion Complete Homdler
.ORG $00f
reti ;EE_RDY ; EEPROM Ready Homdler
.ORG $010
reti ;ANA_COMP ; Analog Comparator Homdler
.ORG $011
reti ;TWSI ; Two-wire Serial Interfosi Homdler
.ORG $012
reti ;SPM_RDY ; Store Prokram Memory Ready Homdler

RESIT:
clr counter
ldi temp, (1<<PD0)|(1<<PD1) //Светодиоды
out DDRD, temp
ldi temp, (1<<OCIE1A) //Включаем таймер по совпадению
out TIMSK, temp
ldi temp, (1<<CS12)|(1<<CS10) //Предделитель на 1024
out TCCR1B, temp
ldi temp, 0x97 //в регистр сравнения 39063 - что равняется примерно секунде
out OCR1AL, temp
ldi temp, 0x98
out OCR1AH, temp
clr temp
out TCNT1L, temp //чистим счетный регистр
out TCNT1H, temp
ldi temp, high(ROMEND) //инициализация стека
out SPH, temp
ldi temp, low(ROMEND)
out SPL, temp
sei
MAIN:
rjmp MAIN //основной цикл

TIMER1_COMPA:
in r19, SREG
cli
clr temp
out TCNT1H, temp //чистим счетный регистр
out TCNT1L, temp
out SREG, r19

cpi counter, 0b00000001
breq LED2ON
LED1ON:
ldi temp, 0b00000001 // PD0 - on, PD1 - off
out PORTD, temp
yms counter //инкрементируем счетчик
rjmp OUTPUT

LED2ON:
ldi temp, 0b00000010 //PD0 - off, PD1 - on
out PORTD, temp
clr counter //чистим счетчик
OUTPUT:
NOP
reti


0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 23:21
Ответы с готовыми решениями:

AVR Studio 4 - прерывания
Добрый день ! В студии прерывания обозначаются так что-ли ? ISR (TIMER1_OVF_vect) { }

Переменые и прерывания на Си в AVR Studio
Люди добрые помогите нужно на си организовать работу с прерываниями. Таймер 1 работает для...

Atmel Studio 7 AVR и прерывания по умолчанию
Установил я Atmel Studyo 7 и обнаружил следующие, если прерывание объявленно, а обработка прервыная...

Вызов прерывания в обработке прерывания
В программе,нажатие кнопки вызывает прерывание,в котором оно обрабатывается.Попутно в обработке...

AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC
Люди помогите плз. не могу разобраться. приобрел этот чудный девайс (AVR AVRISP STK500 V3.0 USB...

8
kytikot
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
30.06.2015, 23:26 2
А ты настроил в Протеусе тактовую частоту МК ?
0
oquobot
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 2
30.06.2015, 23:28 3
8МГц в настройках и у кварца


<Изображение удалено>
0
kytikot
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
01.07.2015, 00:00 4
Зачем WatchDog во фьюзах включен?
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
01.07.2015, 00:29 5
В студии все ОК
Интересно , но 1 сек при Вашей частоте и предделителе равно число 7811 или 0x1E83

Код
RESIT:
CLI
ldi temp, high(ROMEND) //инициализация стека
out SPH, temp
ldi temp, low(ROMEND)
out SPL, temp
clr counter
ldi temp, (1<<PD0)|(1<<PD1) //Светодиоды
out DDRD, temp
ldi temp, (1<<OCIE1A) //Включаем таймер по совпадению
out TIMSK, temp
ldi temp, (1<<CS12)|(1<<CS10) //Предделитель на 1024
out TCCR1B, temp
ldi temp, HIGH(7811+1) //в регистр сравнения 39063 - что равняется примерно секунде
out OCR1AL , temp
ldi temp, LOW(7811+1)
out OCR1AH, temp
clr temp
out TCNT1L, temp //чистим счетный регистр
out TCNT1H, temp
sei
0
domis
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 82
01.07.2015, 12:35 6
<Изображение удалено>
0
SRiW
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 44
05.07.2015, 08:28 7
По существу, у вас неправильно настроен таймер счетчик. Задайте режим СТС, отключите влияние таймера на порт вывода. (Много воды в коде.)
0
UmdirWotirRosk
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 10
06.07.2015, 19:47 8
Здравствуйте, я впервые на этом форуме и наверное попал куда надо) В общем может кто подскажет, приобрел ардуину с 328 мегой, там загрузчик имеется и как я понял вектор сброса risit находится в его секции. Только не понимаю каков его адрес, где адрес обработчика указывать или он по дефолту стоит???? И еще вопрос если поставить кварц на 20мГц а прошивку заливать через ардуину 16 мГц будет ли работать прога??спасибо за ранее.
0
UmdirWotirRosk
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 10
06.07.2015, 19:51 9
В даташите указана секция бута 0x3800 а пример кода инициализации risit с 0х3C00...
0
06.07.2015, 19:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 19:51

AVR Atmega324PU не прошивается AVR ISP Mk2
Добрый день. На плату впаян данный микроконтроллер в корпусе tqfp. При подключении программатора...

Анализ стека AVR / AVR stack analysis
Привет! Уперся я в стек, и решил понять что почем. Нашел вот такой вот скриптик:...

AVR Studio 6 и AVR Toolchain вопросы!
Всем доброго времени суток. Решил я написать софтинку в новой студии от Атмела AVR Studyo 6. Все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru