Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Ошибка Proteus при отмене прерывания в AVR

Непрочитано 28.05.2010, 12:56  
E97
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.01.2008
Сообщений: 1,140
Сказал спасибо: 379
Сказали Спасибо 429 раз(а) в 273 сообщении(ях)
E97 на пути к лучшему
По умолчанию Ошибка Proteus при отмене прерывания в AVR

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

.device ATtiny13
.INCLUDE "tn13def.inc"
.DEF temp=r16
.DEF temp1=r17
.DEF CBit=r18
.DEF SendByte=r0
.EQU TXD=4
.EQU RXD=0

.CSEG
.ORG 0
rjmp RESET ;Reset
.ORG $02
rjmp ExtIntReq ;External Interrupt Request
.ORG $06
ijmp ;Timer/Counter0 Compare Match A
.ORG INT_VECTORS_SIZE

RESET:
; инициализация стека
ldi temp,ramend
out SPL,temp

;инициализация порта b
ldi temp,0b00000001
out DDRB,temp
sbi portb,TXD

;установка прерывание по изменению PB0
ldi temp,$01
out PCMSK,temp
ldi temp,$20
out GIMSK,temp

.............................

sei

Func:
rjmp Func

...................


ExtIntReq:
sbic PINB,RXD
reti
ldi r30,low(Delay_Resive)
ldi r31,high(Delay_Resive)
clr SendByte
ldi temp1,$06
out TCCR0B,temp1
ldi temp1,$00
out GIMSK,temp1
reti

......................

Resive_Byte:
......

ldi r30,low(TimerCompareA)
ldi r31,high(TimerCompareA)
ldi temp1,$20
out GIMSK,temp1
reti

..........

Вот сам глюк
Миниатюры:
Нажмите на изображение для увеличения
Название: Error.jpg
Просмотров: 86
Размер:	108.5 Кб
ID:	8338  
Реклама:
E97 вне форума  
Непрочитано 28.05.2010, 17:21  
kittec
Гражданин KAZUS.RUN
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

Какой смысл настраивать порт В0 на выход и ждать на нём какихто изменений
kittec вне форума  
Сказали "Спасибо" kittec
E97 (05.06.2010)
Непрочитано 05.06.2010, 01:33  
E97
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.01.2008
Сообщений: 1,140
Сказал спасибо: 379
Сказали Спасибо 429 раз(а) в 273 сообщении(ях)
E97 на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

Сообщение от kittec Посмотреть сообщение
Какой смысл настраивать порт В0 на выход и ждать на нём каких-то изменений
Извиняюсь недосмотрел. В теле RESET перед sei в программе есть
cbi DDRB,RXD .

Зато подсказали мне идею аппаратной реализации. В схеме остается незадействованный вывод порта B. Вот я и подам на него сигнал через разделительный резистор.
А когда не нужно будет выполнять прерывания, сконфигурирую его как выход.
Что позволит обойти программную отмену прерывания, а также сократит код.

Но все-таки как с таким глюком бороться?
E97 вне форума  
Непрочитано 05.06.2010, 02:00  
kittec
Гражданин KAZUS.RUN
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

А какой у Вас Proteus? Если проэкт не секретный выложите его.
kittec вне форума  
Непрочитано 06.06.2010, 17:00  
E97
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.01.2008
Сообщений: 1,140
Сказал спасибо: 379
Сказали Спасибо 429 раз(а) в 273 сообщении(ях)
E97 на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

Proteus release 7.5 SP3.
Проект не закончен, но в том что есть виде на принятый байт "7" контролер должен выдать стоку.

Подобное у меня наблюдалось и при остановке прерываний от таймера Т0 в теле прерывания но я писал программу на AlgorithmBilder и думал что это глюк компиляции АВ.
Вложения:
Тип файла: rar semu.rar (28.9 Кб, 50 просмотров)
E97 вне форума  
Непрочитано 06.06.2010, 18:05  
kittec
Гражданин KAZUS.RUN
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

У меня Ваш проэкт работает. Предупреждения есть, а ошибки нет. Осцилог. показывает сигнал по каналу А, при нажатии кнопки короткий импульс по каналу B.
kittec вне форума  
Непрочитано 08.06.2010, 12:24  
E97
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.01.2008
Сообщений: 1,140
Сказал спасибо: 379
Сказали Спасибо 429 раз(а) в 273 сообщении(ях)
E97 на пути к лучшему
По умолчанию Re: Ошибка Proteus при отмене прерывания в AVR

Ошибка у меня вылетает при передаче символа с терминала на МК. При этом обрабатывается прерывание по смене уровня PB0. В результате протеус отказывается переваривать команду out GIMSK,temp1.
В железе все работает.
E97 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
CRC при чтении ROM-кода от 1-wire устройств в Proteus chapa Proteus 1 11.11.2009 20:26
прерывания usart в avr studio 4.13 zubr_ Микроконтроллеры, АЦП, память и т.д 6 14.10.2009 18:33
Ошибка при компиляции Flowcode 3 проекта alexander70 Микроконтроллеры, АЦП, память и т.д 1 06.10.2009 17:56
[Решено] Proteus внешние прерывания ethers Proteus 7 21.09.2009 20:15


Часовой пояс GMT +4, время: 21:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.