|
|
|
|
Не смог разобраться, кто кого цитирует в предпоследнем сообщении Vladikas-а Vladikas, это скорее всего дублирующиеся файлы. Просто в сгенерированном другие имена. Лучше какой-нибудь из них выкинуть. Я бы выкинул сгенерированный, но не знаю, отличаются ли по периферии процы 16F873 и 16F873А. Если не отличаются, то точно бы оставил 16F873.h. Насчёт #device ADC=10 - надо его ставить как можно ближе к началу. Похоже по мере чтения инклюдов компилятор что-то в себе настраивает, и уже не может переключиться. Хотя это конечно не дело. |
|
|
Сергей К: "не вся переферия моделируется, например АЦП" А вот такая штука Data Monitor Control Interface. Движки и типа аналоговый сигнал. Не могу понять как это работает. Ещё поковыряю сам. Но может кто уже расковырял?.. ----------------- AHTOXA: Не смог разобраться, кто кого цитирует в предпоследнем сообщении Vladikas-а Да мы тут динамически обновляем свои посты Возможно уже окончательный вариант там Хидеры все три разные. В одном байты, в другом биты, в третьем дефайны (и пара байтов, надо бы их оттуда удалить). ------------------- См. пост ниже Сергей К: Я на семинаре видел Завидую... Почему всё интересное так далеко от нашего захолустья?.. |
|
|
Vladikas: Движки и типа аналоговый сигнал Я на семинаре видел их применение. Там использовали внутрисхемную отладку и этими ползунками в реальном времени меняли значение заданного регистра в работающем кристале. Сергей К: Error 71 "F:\Electronic\Display\PCLCD.c" Line 597(0,1): Out of ROM, A segment or the program is too large MAIN отчасти решил проблему, расставив директиву #separate перед всеми функциями, кроме main. Надолго ли? |
|
|
Сергей К: упоминание директивы #separate А я так понял, что эта директива только стек позволяет не забивать... И ничего она больше не умеет. |
|
|
С движками в MPLAB разобрался. Так что вопрос отпал. |
|
|
Vladikas: А я так понял, что эта директива только стек позволяет не забивать я так и не понял, что она делает (их справки), но мне помогло - пока компилятор подругому разбивает код и не пытается сделать большой кусок, который не влазит в один сегмент (из онлайн-справки я понял, что она разрешает размещать тело функции в нескольких сегментах памяти*). ____ *. У PIC16F877A из за 14-битной шины нет возможности адрессовать больше 2кбайт памяти программ, поэтому доступные 8к памяти разбивается на 4 сегмента. |
|
|
Vladikas: Vladikas ◊ 25 июля, 22:58 Сергей К: упоминание директивы #separate А я так понял, что эта директива только стек позволяет не забивать... И ничего она больше не умеет. С точностью до наоборот. Экономит ROM ,насилуя стек. Запрещает компилятору делать функцию inline(встраиваемой). |
|
|
главное, что мне помогло У меня размер кода уже вырос до 50% от общего объема памяти, но на нехватку памяти в сегменте перетал ругаться. До этого делал другой проект, так много времени уходило на игры с разбиением функций, чтобы все поместилось. |
|
|
А я угробил мплаб и си компилятор... Фиг знает что случилось, но ничего не работает. Дурацкий линукс........ |
|
|
Vladikas: А я угробил мплаб и си компилятор... Фиг знает что случилось, но ничего не работает. Дурацкий линукс........ Ты часом не в wine ставил?
|
|
|
|
|