| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Как в PIC 16f877 переключать страницы памяти?
13.06.2012, 20:39
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
miwutka,
Скомпилируйте хотя бы кусок вашего бреда для начала .
Может до вас дойдет ...
|
Код:
|
#include ‹pic.h›
#include ‹htc.h› // Required to interface with delay routines
#include "delay.h"
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 8000000
#endif
__CONFIG(0x03FFA);
void main(void)
{
T0IE=0;
T0IF=0;
GIE=0;
T0CS=0;
PSA=0;
PS2=0;PS1=0;PS0=0;
INTE=0;
INTEDG=0;
INTF=0;
CMCON=0;
TRISA=0;
PORTA=0;
TRISB=0b00000001;
PORTB=0;
TRISC=0;
PORTC=0;
TRISD=0;
PORTD=0;
TRISE=0;
PORTE=0;
while(1==1)
{
PORTB=255;
DelayMs(100);
PORTA=122;
PORTC=23;
PORTD=233;
PORTE=111;
PORTB=255;
PORTA=122;
PORTC=23;
PORTD=233;
PORTE=111;
};
} |
__________________
Осторожно , злой кот
|
|
|
|
13.06.2012, 21:19
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Popeye
|
|
Много яснее если разделить процесс на мелкие части. Примерно для скана кнопок, скана дисплея, снятия показаний АЦП и так далее.
|
Кажеться Вы правы, программы не должны быть больше одного сегмента, тут надо действовать по принципу, разделяй и властвуй, вот выдержка из help-a
|
Цитата:
|
Out of ROM, A segment or the program is too large
A function and all of the INLINE functions it calls must fit into one segment (a hardware code page). For example, on the PIC16 chip a code page is 512 instructions. If a program has only one function and that function is 600 instructions long, you will get this error even though the chip has plenty of ROM left. The function needs to be split into at least two smaller functions. Even after this is done, this error may occur since the new function may be only called once and the linker might automatically INLINE it. This is easily determined by reviewing the call tree. If this error is caused by too many functions being automatically INLINED by the linker, simply add a #SEPARATE before a function to force the function to be SEPARATE. Separate functions can be allocated on any page that has room. The best way to understand the cause of this error is to review the call tree.
|
|
|
|
|
13.06.2012, 21:42
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от miwutka
|
|
ВОТ КОПИРНУЛ ПАРУ СТОРОК ЧТОБ БОЛЬШЕ 2048 БЫЛО И ВЫДАЛО ВСЁ ТОЖЕ... чТО МОЖЕТ БЫТЬ?
|
Читайте...
|
Цитата:
|
Psects containing code can be reduced by using all the compiler’s optimizations, or restructuring
the program. If a code psect must be split into two or more small psects, this requires splitting a
function into two or more smaller functions (which may call each other). These functions may need
to be placed in new modules.
Psects containing data may be reduced when invoking the compiler optimizations, but the effect
is less dramatic. The program may need to be rewritten so that it needs less variables.
|
Но никак... ручками не переключать...
Последний раз редактировалось st__1; 13.06.2012 в 21:45.
|
|
|
|
13.06.2012, 21:44
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,606 раз(а) в 3,594 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от miwutka
|
|
Значит если делей 10 мс то внесен delay.c таинственным образом?? (так как происходит норм компиля), а если 100 - то он тайно исчезает?
|
Попробуй не так резко увеличивать параметр, с 10 не сразу до 100, а попробовать промежуточные значения. Например, 20, 30, 40.... 90. Чтобы определить, где граница возможного. Может это даст полезную инфу для разгадки.
|
|
|
|
13.06.2012, 22:00
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Popeye
|
Я разумеется грешник, пишу на МикроЕ Бейсике. Заметил, там процедура-подпрограмма-функция для ПИК до среднего семейства (тобишь ПИК16) если более страницы ФЛАШ (2 кслов) не компилируется. Сообщение : не хватает программной памяти. Даже если остальные 3 страницы, тоесть 6 кслов свободны. Недостаток компилятора однозначно. Да и тык в нос. Много яснее если разделить процесс на мелкие части. Примерно для скана кнопок, скана дисплея, снятия показаний АЦП и так далее.
Делал процедуру select case глубиной 32 элемента, но там вызывались подпрограммы. Прошло както.
|
третий день програмлю пики. Вообще АВРки юзаю. Там как хочешь пишешь и всё замечательно. Лижбы логика программы была нормальной  а тут капец...
|
|
|
|
13.06.2012, 22:04
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от dosikus
|
Скомпилируйте хотя бы кусок вашего бреда для начала .
Может до вас дойдет ...
|
Вы посты выше почитайте для начала, чтобы в тему нашу войти...
|
|
|
|
13.06.2012, 22:08
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Alex9797
|
|
не так резко увеличивать параметр, с 10 не сразу до 100
|
Да нет там никаких проблем...
|
|
|
|
13.06.2012, 22:09
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
один вывод я сделал...: атмеги на много удобнее чем ПИКи...
Я наверно пытаюсь в ПИКах использовать атмеговскую архитектуру.....((((( надо поработать с ПИКами чуть больше(если сил хватит, а то отвернуло чуток...) чтобы их свойства программирования изучить и логику работы и устройства.
Из всех постов вытекает у меня след вопрос...: мне надо мигать всей кучей светодиодов независимо с разным временем свечения... Если это всё что я делаю не логично и не проходит то как лучше это всё делать? И нужно сделать штук 20 програм разных где они все по разному работают...
|
|
|
|
13.06.2012, 22:11
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
что ж блин у меня ниче не идет...? Что за версия МПЛАБ у вас? У меня 8.20 и хайтес про 9.70. явно мне с пиками пока противопоказано ... ))
|
|
|
|
13.06.2012, 22:11
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от miwutka
|
|
Вы посты выше почитайте для начала, чтобы в тему нашу войти...
|
Не только прочитано но и скомпилировано ...
Если вы так и под avr программы пишете , это точно
.
Вам уже и цитаты из хелпа приводят с решением вашей высосанной из пальца проблемы .
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:12.
|
|