Перейти к содержанию
    

AVRStudio 414 или я что то не дочитал?

Проблема с симуляцией ATMega88.

Часть пинов порта С на ввод. Включена подтяжка, наложена маска.

DDRC = 0x07;

PORTC = 0x38;

PCMSK1 = 0x28;

Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли.

Выставляю 1 на PC3. Зацикливается на прерывании.

Пробую на порту B при тех же условиях - все нормально.

Кто встречался с такой проблемой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять.
А разве не правильное поведение? Есть 1 - идем в прерывание. Или вам по изменению прерываться надо? Или вобще не надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне надо, что бы работало как должно.

У Меги88P CINT2,PCINT1,PCINT0 - Pin Change Interrupt Request 1. Порты B и D ведут себя в симуляторе адекватно. Изменил состояние прошло прерывание до следующего изменения. А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PINС, а PIND это описка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PIND.

Не очень понятно . PORTC И PIND разные порты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их...

я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .

Я смотрел на 580 и 589. Можете подсказать какая у Вас версия и для какого процессора смотрели?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я смотрел на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я же писал, что с портом B все нормально, проблемы с портом С.

Да и Мега не та.

 

Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я же писал, что с портом B все нормально, проблемы с портом С.

Да и Мега не та.

 

Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили.

 

1. Где Вы видите портB

2 Я так понял, что у вас мега88

Плиз пины которые Вы испопользуете для прерываний , счас поправлю код под Вас и посмотрю

3. Вы можете создать новый проект указав , что будите работать с Mega 164P и исправив INCLUDE погонять этот код

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я же писал, что с портом B все нормально, проблемы с портом С.

Да и Мега не та.

 

Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили.

Проверил на твоей

Да друже , интересненько. PC3 флаг не сбрасывает , если pin в 1 , но реагирует , если возвращаешь в ноль т.е прерывание выполняется один раз , а не бесконечно , как при единице. Завтра отошлю код в ATMEL , пусть копают

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .

Основная мысль была - что при симуляции можно пользоваться флагом. (Цель - отладить программу, а не ткнуть носом atmel в их баги?) Возможно, в последних версиях студии всё уже исправлено. Хотя вот не всё, судя по Вашему последнему посту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема с симуляцией ATMega88.

Часть пинов порта С на ввод. Включена подтяжка, наложена маска.

DDRC = 0x07;

PORTC = 0x38;

PCMSK1 = 0x28;

Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли.

Выставляю 1 на PC3. Зацикливается на прерывании.

Пробую на порту B при тех же условиях - все нормально.

Кто встречался с такой проблемой?

 

 

Ответ из Европейского центра ATmel в кратце звучит так :

 

К сожелению они признают, что после проверки test кода ( я им отсылал) данная проблема существует и соглашаются , что глючит STUDIO . Благодарят нас за наше сообщение и в данный момент нам не могут помочь, но переслали всё куда-то штаб квартиру.

 

Я так думаю , что глюк уберут , только в новом релиз

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...