Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVRStudio 414 или я что то не дочитал?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
gte
Проблема с симуляцией ATMega88.
Часть пинов порта С на ввод. Включена подтяжка, наложена маска.
DDRC = 0x07;
PORTC = 0x38;
PCMSK1 = 0x28;
Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли.
Выставляю 1 на PC3. Зацикливается на прерывании.
Пробую на порту B при тех же условиях - все нормально.
Кто встречался с такой проблемой?
Nick_Shl
Цитата(gte @ May 17 2008, 22:58) *
Выставляю 1 на PC3. Зацикливается на прерывании.
Может в прерывании надо PC3 в 0 ставить?
gte
Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять.
Nick_Shl
Цитата(gte @ May 17 2008, 23:58) *
Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять.
А разве не правильное поведение? Есть 1 - идем в прерывание. Или вам по изменению прерываться надо? Или вобще не надо?
gte
Мне надо, что бы работало как должно.
У Меги88P CINT2,PCINT1,PCINT0 - Pin Change Interrupt Request 1. Порты B и D ведут себя в симуляторе адекватно. Изменил состояние прошло прерывание до следующего изменения. А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PINС, а PIND это описка.
ILYAUL
Цитата(gte @ May 18 2008, 01:45) *
А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PIND.

Не очень понятно . PORTC И PIND разные порты
Maik-vs
Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их...
ILYAUL
Цитата(Maik-vs @ May 19 2008, 15:15) *
Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их...

я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .
gte
Цитата(ILYAUL @ May 19 2008, 23:03) *
а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .

Я смотрел на 580 и 589. Можете подсказать какая у Вас версия и для какого процессора смотрели?
ILYAUL
Цитата(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
gte
Я же писал, что с портом B все нормально, проблемы с портом С.
Да и Мега не та.

Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили.
ILYAUL
Цитата(gte @ May 19 2008, 23:56) *
Я же писал, что с портом B все нормально, проблемы с портом С.
Да и Мега не та.

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


1. Где Вы видите портB
2 Я так понял, что у вас мега88
Плиз пины которые Вы испопользуете для прерываний , счас поправлю код под Вас и посмотрю
3. Вы можете создать новый проект указав , что будите работать с Mega 164P и исправив INCLUDE погонять этот код
ILYAUL
Цитата(gte @ May 19 2008, 23:56) *
Я же писал, что с портом B все нормально, проблемы с портом С.
Да и Мега не та.

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

Проверил на твоей
Да друже , интересненько. PC3 флаг не сбрасывает , если pin в 1 , но реагирует , если возвращаешь в ноль т.е прерывание выполняется один раз , а не бесконечно , как при единице. Завтра отошлю код в ATMEL , пусть копают
Maik-vs
Цитата(ILYAUL @ May 19 2008, 23:03) *
я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам .

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



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

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

Я так думаю , что глюк уберут , только в новом релиз
ILYAUL
Цитата(ILYAUL @ May 22 2008, 14:43) *
Ответ из Европейского центра ATmel в кратце звучит так :

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

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


Но , я прогнал тот же тест для этого проца в AVR SIMULATOR 2 - там этого глюка нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.