| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Страницы памяти
07.11.2005, 15:40
|
|
|
Прописка
Регистрация: 13.02.2005
Сообщений: 248
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Страницы памяти
Корче стался такой глюк,.... написал я прогу на асме для ПИК16Ф84, но вот такой нюанс, у меня ГОТО прыгает по всей програме, програма большая, и если очень далеко то соскакивает в бездну .... я гдето читал но немогу опять найти где, на сколько адресов туда-сюда можно прыгать..... подскажыте.....
__________________
Що згорить - то не зігниє!
(c)ChiP
|
|
|
|
07.11.2005, 17:16
|
|
|
Muksblat
Гость
|
Бери PIC18 и не е#и вола.
|
|
|
|
|
07.11.2005, 18:12
|
|
|
Прописка
Регистрация: 13.02.2005
Сообщений: 248
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Дороговато однако
__________________
Що згорить - то не зігниє!
(c)ChiP
|
|
|
|
07.11.2005, 21:29
|
|
|
Прописка
Регистрация: 23.06.2005
Сообщений: 160
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Re: Страницы памяти
|
Сообщение от chipic128
|
|
Корче стался такой глюк,.... написал я прогу на асме для ПИК16Ф84, но вот такой нюанс, у меня ГОТО прыгает по всей програме, програма большая, и если очень далеко то соскакивает в бездну .... я гдето читал но немогу опять найти где, на сколько адресов туда-сюда можно прыгать..... подскажыте.....
|
А ты банки перед и после goto переключаешь ?
ИМХО гото старатся как можно меньше использовать.
__________________
Главный парадокс: Оптимист верит в то, что живет в лутшем из миров - пессемист боится, что так оно и есть....
|
|
|
|
08.11.2005, 03:47
|
|
|
Временная регистрация
Регистрация: 02.05.2005
Адрес: Украина, Шостка
Сообщений: 63
Сказал спасибо: 35
Сказали Спасибо 1 раз в 1 сообщении
|
Интересно, если гото старатся как можно меньше использовать то тогда как сделать переходы?
|
|
|
|
08.11.2005, 09:32
|
|
|
Прописка
Регистрация: 16.04.2004
Сообщений: 198
Сказал спасибо: 339
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Причем тут goto и банки памяти? Как говорится мухи отдельно котлеты отдельно. Goto прыгает по памяти программ (FLASH), а банки - это уже RAM. В бездну может срываться если ты используешь PCLATH и PCL регистры для переходов. Goto идет на метку без всяких там банков, как есть. Еще бывает глючит при переполнении стека, когда используешь вложенные друг в друга связки call - return. Их вложенность не должна превышать 8 (глубина аппаратного стека) Так что копай в этом направлении.
|
|
|
|
09.11.2005, 02:34
|
|
|
Временная регистрация
Регистрация: 02.05.2005
Адрес: Украина, Шостка
Сообщений: 63
Сказал спасибо: 35
Сказали Спасибо 1 раз в 1 сообщении
|
По идее инструкции переходов CALL и GOTO имеют 11 разрядный адрес и могут адресовать соответственно 2048 слов памяти. В pic16f84 команду GOTO можно наверно применять без ограничений так как он имеет только 1024 слов памяти.
|
|
|
|
09.11.2005, 16:34
|
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 226
Сказал спасибо: 50
Сказали Спасибо 33 раз(а) в 24 сообщении(ях)
|
Уважаемый chipic128, никаких банков програмной памяти ни в 84-м ни в 628-м контроллере не существует, памяти маловато  . Проблемы с ГОТО были только, как уже правильно заметили, при переполнении стека. Все ретурны на месте? Подпрограммами сильно увлекаетесь? Не стоит ленится, просто примерно посмотреть максимально вложенную подпрограмму, поставить брэйкпоинт, запустить симулятор предварительно вывев в отдельное окошко "просмотр стека". Если нет, все же попробовать запустить программу пошагово (можно и просто через некоторое время после запуска ее остановить, но не для всех программ, понимаешь), короче веду к тому, что надо выяснить, сколько стека используется. Других причин не знаю... Удачи!
__________________
Невежество всегда на что-нибудь испражняется.
|
|
|
|
11.11.2005, 21:27
|
|
|
Прописка
Регистрация: 13.02.2005
Сообщений: 248
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Большое спассибо я понял но вот правильно лы я догнал что вложеность ето вроде скобок: z(x(y(...8())))))) ?????
и почему я должен не любить подпрограмм - ведь так программа стает читабельнее
__________________
Що згорить - то не зігниє!
(c)ChiP
|
|
|
|
12.11.2005, 13:42
|
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 226
Сказал спасибо: 50
Сказали Спасибо 33 раз(а) в 24 сообщении(ях)
|
Коллега, я абсолютно не имею в виду, что не надо любить подпрограмм, наоборот, они делают нашу программу намного понятней, да и программировать так удобнее. Но, как говорится, все хорошо в меру. КОгда ты пишешь call xxx то адрес точки возврата заносится в стек. Когда в ххх ты опять же пишешь call yyy то в стек заносится еще один адрес очередной точки возврата. И так возможно делать, если не используются прерывания, 8 раз, именно такая емкость стека в твоем камне. Кроме того, если в обработке прерывания используются подпрограммы, это тоже надо учитывать ибо будет вариант, когда прерывание сработает именно когда в стеке уже почти нет места... Надеюсь, ясно изложил? Удачи!
__________________
Невежество всегда на что-нибудь испражняется.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:23.
|
|