|
AVRStudio 414 или я что то не дочитал?, Непонятная работа с прерываниями |
|
|
|
May 17 2008, 20:47
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 17-04-08
Пользователь №: 36 850

|
Цитата(gte @ May 17 2008, 22:58)  Выставляю 1 на PC3. Зацикливается на прерывании. Может в прерывании надо PC3 в 0 ставить?
|
|
|
|
|
May 17 2008, 21:03
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 17-04-08
Пользователь №: 36 850

|
Цитата(gte @ May 17 2008, 23:58)  Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять. А разве не правильное поведение? Есть 1 - идем в прерывание. Или вам по изменению прерываться надо? Или вобще не надо?
|
|
|
|
|
May 19 2008, 19:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(Maik-vs @ May 19 2008, 15:15)  Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их... я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
May 19 2008, 19:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(gte @ May 19 2008, 23:26)  Я смотрел на 580 и 589. Можете подсказать какая у Вас версия и для какого процессора смотрели? Вот Вам code для проверки. Свеже написанный для Studio 4.14 -589 Код include "D:\AVR\AVR Tools\AvrAssembler2\Appnotes\m164pdef.inc"
.def temp= R16
.org 0 .cseg
rjmp RESET; Reset .org INT0addr rjmp INT0set; IRQ0 .org INT1addr rjmp INT1set; IRQ1 ;.org INT2addr ; jmp INT2set; IRQ2 .org PCI0addr rjmp PCINTset; PCINT0 RESET: ldi temp,high(RAMEND) out SPH,temp ldi temp,low(RAMEND) out SPL,temp
cli
;************************************************* ;* * ;* Initialization внешних прерываний * ;* * ;* * ;************************************************* ldi temp,(1<<ISC01)|(1<<ISC11)|(1<<ISC21) sts EICRA,temp ldi temp,(1<<INT0); Прерывания от кнопок SET,(+) и (-) out EIMSK,temp sts PCICR,temp ldi temp,(1<<PCINT0)|(1<<PCINT1) sts PCMSK0,temp ; Прерывание от внешнего компаратора ; и DS sei MAIN: rjmp MAIN
INT0set: ; call DELAYTset sei rjmp MAIN
INT1set: SEI jmp MAIN
PCINTset:
SEI rjmp MAIN Ой , Sorry забыл INT0 и INT1 - pin PD2-PD3 portD PCINT0- PCINT1 pin PA0 и PA1 PORTA
Сообщение отредактировал ILYAUL - May 19 2008, 19:54
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
May 19 2008, 20:05
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(gte @ May 19 2008, 23:56)  Я же писал, что с портом B все нормально, проблемы с портом С. Да и Мега не та.
Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили. 1. Где Вы видите портB 2 Я так понял, что у вас мега88 Плиз пины которые Вы испопользуете для прерываний , счас поправлю код под Вас и посмотрю 3. Вы можете создать новый проект указав , что будите работать с Mega 164P и исправив INCLUDE погонять этот код
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
May 19 2008, 21:34
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(gte @ May 19 2008, 23:56)  Я же писал, что с портом B все нормально, проблемы с портом С. Да и Мега не та.
Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили. Проверил на твоей Да друже , интересненько. PC3 флаг не сбрасывает , если pin в 1 , но реагирует , если возвращаешь в ноль т.е прерывание выполняется один раз , а не бесконечно , как при единице. Завтра отошлю код в ATMEL , пусть копают
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
May 20 2008, 09:24
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(ILYAUL @ May 19 2008, 23:03)  я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам . Основная мысль была - что при симуляции можно пользоваться флагом. (Цель - отладить программу, а не ткнуть носом atmel в их баги?) Возможно, в последних версиях студии всё уже исправлено. Хотя вот не всё, судя по Вашему последнему посту.
|
|
|
|
|
May 22 2008, 10:43
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(gte @ May 17 2008, 23:58)  Проблема с симуляцией ATMega88. Часть пинов порта С на ввод. Включена подтяжка, наложена маска. DDRC = 0x07; PORTC = 0x38; PCMSK1 = 0x28; Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли. Выставляю 1 на PC3. Зацикливается на прерывании. Пробую на порту B при тех же условиях - все нормально. Кто встречался с такой проблемой? Ответ из Европейского центра ATmel в кратце звучит так : К сожелению они признают, что после проверки test кода ( я им отсылал) данная проблема существует и соглашаются , что глючит STUDIO . Благодарят нас за наше сообщение и в данный момент нам не могут помочь, но переслали всё куда-то штаб квартиру. Я так думаю , что глюк уберут , только в новом релиз
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|