Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: ivan_fd  
Проблемка с прерыванием...
retas Дата: Вт, 10.01.2012, 16:51  |                                                                                                                Сообщение # 31
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

доцент2,
у вас в прерывах есть неприятности в виде пауз и gosub, но действительно ли здесь проблема,
узнаете проследив стек на переполнение в Протеусе.

Сообщение отредактировал retas - Вт, 10.01.2012, 18:19
ЯНДЕКС Дата: 10.01.2012
доцент2 Дата: Ср, 11.01.2012, 09:03  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 293
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

спасибо. проблема была в том, что я воспользовался не совсем правильным переводом даташита на pic.
переводчик перепутал название двух таблиц ADCON1 и ANSEL. поэтому возникла путаница с аналоговыми и цыфровыми каналами.
А что касается стека я пока еще не очень в этом понимаю.
retas Дата: Ср, 11.01.2012, 16:22  |                                                                                                                Сообщение # 33
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Стек держит в памяти адреса возвратов когда вы даёте команду пойти на какую то метку с которой
будет необходимо вернутся и продoлжать основную прогру. Так вот стек может запомнить определённое
число адресов и неболее, иначе возникнет бардак. Ну и не делайте пауз в прерывах - с них надо стараться
выйти как можно быстрее, чтоб основная програ их как бы и не почувствовала.
Где и как можно посмотреть на стек в протеусе: Debug / PIC CPU / Stack .
доцент2 Дата: Чт, 12.01.2012, 00:11  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 293
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

пока для меня это филькина грамота. а пожете пояснить где сдесь что?
Прикрепления: 9886556.jpg (9.4 Kb)
retas Дата: Чт, 12.01.2012, 00:40  |                                                                                                                Сообщение # 35
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

В показанном вами стеке 8 мест, стелка показывает что с теперешнего места прогры она соскочит на адрес выше после отработки ПП, но если
в теперешнем месте прогры опять появится указание типа call, gosub... (т.е. находясь в какой то ПП указано пойти на другую ПП), то стрелка опустится. Если представить, что стрелка стоит на 8-мом адресе а по вашей прогре сработал прерыв, в котором сидит gosub, то стеку негде будет запомнить куда воротится. Словом, если програ зашла по метке на какую то ПП, то после, она мах может зайти без возвратов ещё на 7 ПП, и потом должна вернутся в началную позицию через запусанные адреса.
доцент2 Дата: Чт, 12.01.2012, 09:01  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 293
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

спасибо. надо конечно переварить это все, но пока возникли вопросы:
1. размер стека определяется моделью контроллера?
2. если перед тем как выполнить ПП (са переходом по Gosub) надо запомнить адрес возврата, следовательно в программе для данного МК количество различных ПП (Gosub) не должно превышать количество адресов в стеке (или количество адресов минус один)?
3. это относиться только к ПП (Gosub) или Goto тоже?
прокоментируйте если можно.
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: