gte 6 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба Проблема с симуляцией ATMega88. Часть пинов порта С на ввод. Включена подтяжка, наложена маска. DDRC = 0x07; PORTC = 0x38; PCMSK1 = 0x28; Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли. Выставляю 1 на PC3. Зацикливается на прерывании. Пробую на порту B при тех же условиях - все нормально. Кто встречался с такой проблемой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_Shl 0 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба Выставляю 1 на PC3. Зацикливается на прерывании.Может в прерывании надо PC3 в 0 ставить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_Shl 0 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба Я выставляю 1 в симуляторе установив соответствующую галочку. Если ее снять, естественно, прерывание снимется. Слил другую версию 4.14, буду проверять.А разве не правильное поведение? Есть 1 - идем в прерывание. Или вам по изменению прерываться надо? Или вобще не надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба Мне надо, что бы работало как должно. У Меги88P CINT2,PCINT1,PCINT0 - Pin Change Interrupt Request 1. Порты B и D ведут себя в симуляторе адекватно. Изменил состояние прошло прерывание до следующего изменения. А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PINС, а PIND это описка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 17 мая, 2008 Опубликовано 17 мая, 2008 · Жалоба А порт С при установке ему "1" не хочет вылезать из прерывания, пока не сниму галочку на PIND. Не очень понятно . PORTC И PIND разные порты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maik-vs 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Студия глюковаста... Я для имитации прерывания ставлю галку в бите флага, для симуляции достаточно. Именно потому, что изменения на входах портов часто не отслеживаются, ну их... я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам . Я смотрел на 580 и 589. Можете подсказать какая у Вас версия и для какого процессора смотрели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 19 мая, 2008 Опубликовано 19 мая, 2008 (изменено) · Жалоба Я смотрел на 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 Изменено 19 мая, 2008 пользователем ILYAUL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Я же писал, что с портом B все нормально, проблемы с портом С. Да и Мега не та. Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Я же писал, что с портом B все нормально, проблемы с портом С. Да и Мега не та. Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили. 1. Где Вы видите портB 2 Я так понял, что у вас мега88 Плиз пины которые Вы испопользуете для прерываний , счас поправлю код под Вас и посмотрю 3. Вы можете создать новый проект указав , что будите работать с Mega 164P и исправив INCLUDE погонять этот код Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 19 мая, 2008 Опубликовано 19 мая, 2008 · Жалоба Я же писал, что с портом B все нормально, проблемы с портом С. Да и Мега не та. Кстати, в версии 4.13 для Меги 88 были доступны не все частоты при симуляции, в 4.14 исправили. Проверил на твоей Да друже , интересненько. PC3 флаг не сбрасывает , если pin в 1 , но реагирует , если возвращаешь в ноль т.е прерывание выполняется один раз , а не бесконечно , как при единице. Завтра отошлю код в ATMEL , пусть копают Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maik-vs 0 20 мая, 2008 Опубликовано 20 мая, 2008 · Жалоба я только , что 2-3 дня, писал подпрограмы для прерываний по INT0 INT1 INTNT2 по спаду и уровню 0, а также PCINT0-3 и иммулировал всё на последней студии - работает и определяются прекрасно и по флагу и по портам . Основная мысль была - что при симуляции можно пользоваться флагом. (Цель - отладить программу, а не ткнуть носом atmel в их баги?) Возможно, в последних версиях студии всё уже исправлено. Хотя вот не всё, судя по Вашему последнему посту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 22 мая, 2008 Опубликовано 22 мая, 2008 · Жалоба Проблема с симуляцией ATMega88. Часть пинов порта С на ввод. Включена подтяжка, наложена маска. DDRC = 0x07; PORTC = 0x38; PCMSK1 = 0x28; Ставлю брекпоинт на программу обработки прерываний. В ней пусто или нет, не играет роли. Выставляю 1 на PC3. Зацикливается на прерывании. Пробую на порту B при тех же условиях - все нормально. Кто встречался с такой проблемой? Ответ из Европейского центра ATmel в кратце звучит так : К сожелению они признают, что после проверки test кода ( я им отсылал) данная проблема существует и соглашаются , что глючит STUDIO . Благодарят нас за наше сообщение и в данный момент нам не могут помочь, но переслали всё куда-то штаб квартиру. Я так думаю , что глюк уберут , только в новом релиз Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться