Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как в PIC 16f877 переключать страницы памяти?

Непрочитано 13.06.2012, 20:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию 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;
 
	};	
}
Реклама:
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 13.06.2012, 21:19  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию 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.
nonamedov вне форума  
Непрочитано 13.06.2012, 21:42  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию 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.
st__1 вне форума  
Непрочитано 13.06.2012, 21:44  
Alex9797
Почётный гражданин KAZUS.RUN
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,548
Сказал спасибо: 5,035
Сказали Спасибо 10,606 раз(а) в 3,594 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от miwutka Посмотреть сообщение
Значит если делей 10 мс то внесен delay.c таинственным образом?? (так как происходит норм компиля), а если 100 - то он тайно исчезает?
Попробуй не так резко увеличивать параметр, с 10 не сразу до 100, а попробовать промежуточные значения. Например, 20, 30, 40.... 90. Чтобы определить, где граница возможного. Может это даст полезную инфу для разгадки.
Alex9797 вне форума  
Непрочитано 13.06.2012, 22:00  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от Popeye Посмотреть сообщение
Я разумеется грешник, пишу на МикроЕ Бейсике. Заметил, там процедура-подпрограмма-функция для ПИК до среднего семейства (тобишь ПИК16) если более страницы ФЛАШ (2 кслов) не компилируется. Сообщение : не хватает программной памяти. Даже если остальные 3 страницы, тоесть 6 кслов свободны. Недостаток компилятора однозначно. Да и тык в нос. Много яснее если разделить процесс на мелкие части. Примерно для скана кнопок, скана дисплея, снятия показаний АЦП и так далее.
Делал процедуру select case глубиной 32 элемента, но там вызывались подпрограммы. Прошло както.
третий день програмлю пики. Вообще АВРки юзаю. Там как хочешь пишешь и всё замечательно. Лижбы логика программы была нормальной а тут капец...
miwutka вне форума  
Непрочитано 13.06.2012, 22:04  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от dosikus Посмотреть сообщение
Скомпилируйте хотя бы кусок вашего бреда для начала .
Может до вас дойдет ...
Вы посты выше почитайте для начала, чтобы в тему нашу войти...
miwutka вне форума  
Непрочитано 13.06.2012, 22:08  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от Alex9797 Посмотреть сообщение
не так резко увеличивать параметр, с 10 не сразу до 100
Да нет там никаких проблем...
Нажмите на изображение для увеличения
Название: PIC16F877_PROBE.PNG
Просмотров: 99
Размер:	17.5 Кб
ID:	35811
st__1 вне форума  
Непрочитано 13.06.2012, 22:09  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

один вывод я сделал...: атмеги на много удобнее чем ПИКи...
Я наверно пытаюсь в ПИКах использовать атмеговскую архитектуру.....((((( надо поработать с ПИКами чуть больше(если сил хватит, а то отвернуло чуток...) чтобы их свойства программирования изучить и логику работы и устройства.
Из всех постов вытекает у меня след вопрос...: мне надо мигать всей кучей светодиодов независимо с разным временем свечения... Если это всё что я делаю не логично и не проходит то как лучше это всё делать? И нужно сделать штук 20 програм разных где они все по разному работают...
miwutka вне форума  
Непрочитано 13.06.2012, 22:11  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от st__1 Посмотреть сообщение
Да нет там никаких проблем...
Вложение 35811
что ж блин у меня ниче не идет...? Что за версия МПЛАБ у вас? У меня 8.20 и хайтес про 9.70. явно мне с пиками пока противопоказано ... ))
miwutka вне форума  
Непрочитано 13.06.2012, 22:11  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от miwutka Посмотреть сообщение
Вы посты выше почитайте для начала, чтобы в тему нашу войти...
Не только прочитано но и скомпилировано ...
Если вы так и под avr программы пишете , это точно
Цитата:
капец
.
Вам уже и цитаты из хелпа приводят с решением вашей высосанной из пальца проблемы .
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC 16F877/Лампочка с ключом vip7070 Proteus 26 08.04.2010 13:23
PIC 16F877 АЦП подлючение терморезистора. ataripc Микроконтроллеры, АЦП, память и т.д 0 13.11.2007 14:01
PIC 16F877 - встроенный генератор aks_ Микроконтроллеры, АЦП, память и т.д 1 18.02.2007 18:19
Программатор для PIC 16F877 Mouserx Микроконтроллеры, АЦП, память и т.д 2 12.12.2006 14:04
Страницы памяти chipic128 Микроконтроллеры, АЦП, память и т.д 12 12.11.2005 16:11


Часовой пояс GMT +4, время: 14:12.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.