Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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

 
Опции темы
Непрочитано 15.09.2009, 11:04  
s-4ern
Прохожий
 
Регистрация: 27.07.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
s-4ern на пути к лучшему
По умолчанию MPLAB IDE и HI-TECH 18

Здравствуйте. Начал писать для P18F25K20 на С. Установлены следующие программы.
MPLAB IDE v8.36 + HI-TECH C PRO for the PIC18 MCU Family V9.63PL3
при компиляции проекта вылазит окошко со следующим содержимым:

The Extended CPU Mode configuration bit is enable? but the program that was loaded was not built using extended CPU instructions. Therefore, your code may not work properly.

Когда писал на асме нашел где включить данную опцию, а сейчас варианты настроек изменились и ну никак. Пожалуйста подскажите где и как это сделать.
Заранее всем ответивсшим огромное спасибо.
Реклама:
s-4ern вне форума  
Непрочитано 15.09.2009, 14:50  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Смотри в самом коде config или в MPLAB IDE там есть ручные настройки.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 15.09.2009, 22:55  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

HI-TECH C PRO ? кошмар. рекомендую забыть . или забить ? (не важно) . Советую использовать родные микрочиповские компиляторы.
urry вне форума  
Непрочитано 15.09.2009, 23:50  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Я тоже это советую - вот быстрый старт и настройка микрочиповского компилятора lдля PIC в картинках - http://mcc18.narod.ru - первый проект.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 16.09.2009, 03:05  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

HI!
Подскажте плиз... по Hitech PICC16 9,60 ПЛ3

В разных частях одной функции есть несколько повторяющихся команд в конце нескольких веток. Типа так.

Код:
if (Cunter==0){траляля; Cunter++;Return;}
if (Cunter==1){траляля; Cunter++;Return;}
if (Cunter==2){траляля; Cunter++;Return;}
if (Cunter==3){траляля; Cunter++;Return;}
if (Cunter==4){траляля; Cunter++;Return;}
Предвосхищая вопросы почему IF? Я попробовал оператор Switch, но код получается длиннее, посему делаю через IF.

В асме я бы просто сделал переход из разных мест, а в Си вроде бы GOTO некрасиво, (кстати так написал, с переходами.. скомпилировалось правильно!!! так, как я бы и сделал в асме)

Код:
if (Cunter==0){траляля; goto exit_add_cuner;}
if (Cunter==1){траляля; goto exit_add_cuner;}
if (Cunter==2){траляля; goto exit_add_cuner;}
if (Cunter==3){траляля; goto exit_add_cuner;}
if (Cunter==4){траляля;
goto exit_add_cuner:
Cunter++;Return;}
А почему то компилятор не хочет их выделять одинаковые куски кода в отдельную подпрограмку с вызовом её из каждого места... Как заставить?..

В свойствах проекта, вкладка Компилер. выставлял в разных комбинациях.

(Птичка) Глобал (выбирал от 1 до 9)
(Птичка) Ассемблер
(Птичка) Спид
Program space = 552 байта и не зависит установленого уровня оптимизации..

(Птичка) Глобал от (выбирал от 1 до 9)
(без птички) Ассемблер
(Птичка) Спид
Program space = 792 байта и не зависит установленого уровня оптимизации..

(Птичка) Глобал (выбирал от 1 до 9)
(Птичка) Ассемблер
(без птички) Спид
Program space = 552 байта и не зависит установленого уровня оптимизации..

(Птичка) Глобал (выбирал от 1 до 9)
(без птички) Ассемблер
(без птички) Спид
Program space = 792 байта и не зависит установленого уровня оптимизации..

(без птички) Глобал
(без птички) Ассемблер
(без птички) Спид
Program space = 552 байта

(без птички) Глобал
(Птичка) Ассемблер
(без птички) Спид
Program space = 612 байт

(без птички) Глобал
(без птички) Ассемблер
(Птичка) Спид
Program space = 916 байт

(без птички) Глобал
(Птичка) Ассемблер
(Птичка) Спид
Program space = 612 байт


Размер кода меняется в основном от птички на АССЕМБЛЕР, уровень оптимизации от 1 до 9 никак не влияет на размер кода.

Но при самом маленьком размере НЕ ХОЧЕТ ТАКИ выделять в подпрограмки одинаковые куски кода!!! А в IAR AVR тот же код, отлично работает, выделяются подпрограммы...

Может кто то пояснить??. может у меня компилятор не правильно вылечен? должен ли он так себя вести?...

HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3
Copyright (C) 1984-2009 HI-TECH SOFTWARE
Serial number: HCPIC-36668
this licence will expire on Wed, 12 Dec 2029

Memory Summary:
Program space used 228h ( 552) of 3FFh words ( 54.0%)
Data space used 1Fh ( 31) of 40h bytes ( 48.4%)
EEPROM space used 40h ( 64) of 80h bytes ( 50.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)

заранее сенк...
picavr вне форума  
Непрочитано 16.09.2009, 08:25  
Vlad2204
Временная регистрация
 
Регистрация: 06.02.2008
Сообщений: 50
Сказал спасибо: 11
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Vlad2204 на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Я сам недавно изучаю С для PIC.
Если просто по учебнику то
подпрограммы пишутся программистом (честно говоря про такой умный компилятор, который сам объеденяет куски кода я еще не слыхал!!!) и конструкция обычно такая:
//Начало программы
...
void My_Function( void)//Обьявляете вашу подпрограмму или функцию
{
Ваш код;
}

main()
{
...
...

...
//вызвать вашу подпрограмму в любом месте кода
My_Function();
...
...

...
}//end main

Может в этом случае компилятор поймет что надо делать!?
Vlad2204 вне форума  
Непрочитано 16.09.2009, 09:36  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Сообщение от Vlad2204 Посмотреть сообщение
подпрограммы пишутся программистом (честно говоря про такой умный компилятор, который сам объеденяет куски кода я еще не слыхал!!!)
Слушайте ! CVAVR ! и наверняка IAR
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 16.09.2009, 11:59  
v_padalka
Временная регистрация
 
Регистрация: 17.08.2005
Сообщений: 53
Сказал спасибо: 6
Сказали Спасибо 33 раз(а) в 17 сообщении(ях)
v_padalka на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Сообщение от picavr Посмотреть сообщение
Но при самом маленьком размере НЕ ХОЧЕТ ТАКИ выделять в подпрограмки одинаковые куски кода!!!
Компилятор не подпрограммки пишет, а просто если в конце каждой Вашей конструкции if () {...} (именно в конце!) есть одинаковые куски текста, то он из всех фрагментов делает goto на самый последний фрагмент, где есть такой же текст. Если он этого не делает, значит Ваши фрагменты чем-то отличаются.
v_padalka вне форума  
Непрочитано 16.09.2009, 12:06  
v_padalka
Временная регистрация
 
Регистрация: 17.08.2005
Сообщений: 53
Сказал спасибо: 6
Сказали Спасибо 33 раз(а) в 17 сообщении(ях)
v_padalka на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Сообщение от urry Посмотреть сообщение
HI-TECH C PRO ? кошмар.
Согласен. Там много ошибок. Но на шару и уксус сладкий-пользуюсь леченым HI-TECH C PRO, обходя разбосанные там и сям грабли (кстати, списком найденных граблей и методами их обхода могу поделиться, кому интересно). А Майкрочиповские компиляторы вроде как стоят доляров 900. Или есть дешевле? Подскажите, кто знает!
v_padalka вне форума  
Непрочитано 16.09.2009, 12:53  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: MPLAB IDE и HI-TECH 18

Сообщение от avr123-nm-ru Посмотреть сообщение
Слушайте ! CVAVR ! и наверняка IAR
IAR AVR очень хорошо оптимизирует, претензий вообще нет.
иногда бывают только вопросы как ему правильно обьяснить, ЧТО Я ХОЧУ ))))

Сообщение от v_padalka Посмотреть сообщение
Компилятор не подпрограммки пишет.
Я не написал ПИШЕТ... я написал ВЫДЕЛЯЕТ в подпрограмки участки кода...

Сообщение от v_padalka Посмотреть сообщение
если в конце каждой Вашей конструкции if () {...} (именно в конце!) есть одинаковые куски текста, то он из всех фрагментов делает goto на самый последний фрагмент, где есть такой же текст. Если он этого не делает, значит Ваши фрагменты чем-то отличаются.
Если бы фрагменты отличались, я бы и не спрашивал... В том то и дело что НЕ ДЕЛАЕТ GOTO!

Вот что пишем и что получаем.
Код:
	if(ds1990_cunter==10){	ds1990_temp=owire_data;
		owire_stat=err_owcheksym;owire_crc=0;
		OWire_ini_AddCRC(ds1990_family);
	ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==11){	OWire_ini_AddCRC(ds1990_data[0]);
		ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==12){OWire_ini_AddCRC(ds1990_data[1]);
		ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==13){OWire_ini_AddCRC(ds1990_data[2]);
		ds1990_cunter++;return;}

	if(ds1990_cunter==14){OWire_ini_AddCRC(ds1990_data[3]);
		ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==15){OWire_ini_AddCRC(ds1990_data[4]);
		ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==16){OWire_ini_AddCRC(ds1990_data[5]);
		ds1990_cunter++;return;}	//повторяющийся код

	if(ds1990_cunter==17){OWire_ini_AddCRC(ds1990_temp  );
		ds1990_cunter++;return;}	//повторяющийся код
скомпилировано вот во что:, здесь сначала идёт КОД СИ а ниже, в то что скомпилировано.

Код:
131:
             	if(ds1990_cunter==10){
   0A6    0823     MOVF 0x23, W
   0A7    3A0A     XORLW 0xa
   0A8    1D03     BTFSS 0x3, 0x2
   0A9    28B4     GOTO 0xb4
132:               		ds1990_temp=owire_data;	owire_stat=err_owcheksym;owire_crc=0;
   0AA    0826     MOVF 0x26, W
   0AB    00AE     MOVWF 0x2e
   0AC    01AF     CLRF 0x2f
   0AD    3005     MOVLW 0x5
   0AE    00A7     MOVWF 0x27
   0AF    01A4     CLRF 0x24
133:               		OWire_ini_AddCRC(ds1990_family);
   0B0    3001     MOVLW 0x1
   0B1    21C2     CALL 0x1c2
134:               		ds1990_cunter++;return;}
   0B2    0AA3     INCF 0x23, F	//повторяющийся код
   0B3    0008     RETURN
136:               	if(ds1990_cunter==11){
   0B4    0823     MOVF 0x23, W
   0B5    3A0B     XORLW 0xb
   0B6    1D03     BTFSS 0x3, 0x2
   0B7    28BC     GOTO 0xbc
137:               		OWire_ini_AddCRC(ds1990_data[0]);
   0B8    0830     MOVF 0x30, W
   0B9    21C2     CALL 0x1c2
138:               		ds1990_cunter++;return;}
   0BA    0AA3     INCF 0x23, F	//повторяющийся код
   0BB    0008     RETURN
140:               	if(ds1990_cunter==12){
   0BC    0823     MOVF 0x23, W
   0BD    3A0C     XORLW 0xc
   0BE    1D03     BTFSS 0x3, 0x2
   0BF    28C4     GOTO 0xc4
141:               		OWire_ini_AddCRC(ds1990_data[1]);
   0C0    0831     MOVF 0x31, W
   0C1    21C2     CALL 0x1c2
142:               		ds1990_cunter++;return;}
   0C2    0AA3     INCF 0x23, F	//повторяющийся код
   0C3    0008     RETURN
144:               	if(ds1990_cunter==13){
   0C4    0823     MOVF 0x23, W
   0C5    3A0D     XORLW 0xd
   0C6    1D03     BTFSS 0x3, 0x2
   0C7    28CC     GOTO 0xcc
145:               		OWire_ini_AddCRC(ds1990_data[2]);
   0C8    0832     MOVF 0x32, W
   0C9    21C2     CALL 0x1c2
146:               		ds1990_cunter++;return;}
   0CA    0AA3     INCF 0x23, F	//повторяющийся код
   0CB    0008     RETURN
148:               	if(ds1990_cunter==14){
   0CC    0823     MOVF 0x23, W
   0CD    3A0E     XORLW 0xe
   0CE    1D03     BTFSS 0x3, 0x2
   0CF    28D4     GOTO 0xd4
149:               		OWire_ini_AddCRC(ds1990_data[3]);
   0D0    0833     MOVF 0x33, W
   0D1    21C2     CALL 0x1c2
150:               		ds1990_cunter++;return;}
   0D2    0AA3     INCF 0x23, F	//повторяющийся код
   0D3    0008     RETURN
когда написал вот так, то всё стало как нужно, в конце каждой веточки вставлено GOTO на нужный код в конце.
Код:
	if(ds1990_cunter==10){	ds1990_temp=owire_data;			owire_stat=err_owcheksym;owire_crc=0;
		OWire_ini_AddCRC(ds1990_family);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==11){	OWire_ini_AddCRC(ds1990_data[0]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==12){OWire_ini_AddCRC(ds1990_data[1]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==13){OWire_ini_AddCRC(ds1990_data[2]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==14){OWire_ini_AddCRC(ds1990_data[3]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==15){OWire_ini_AddCRC(ds1990_data[4]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==16){OWire_ini_AddCRC(ds1990_data[5]);
	goto	exi_rutin_ds1990_tmr;}	//вместо повторяющегося кода

	if(ds1990_cunter==17){OWire_ini_AddCRC(ds1990_temp  );
exi_rutin_ds1990_tmr:	
		ds1990_cunter++;return;}	//повторяющийся код
Кто пользует HiTech PICC16 и может что то сказать по существу вопроса. Может я чего то в оптимизаторе не настроил?

Или плюнуть на это и написать на СИ с GOTO?
picavr вне форума  
 

Закладки

Метки
hi-tech 18, ide, mplab, p18f25k20, настройка
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MPLAB и Hi-Tech 3ann Микроконтроллеры, АЦП, память и т.д 0 14.07.2009 15:17
PIC18F.., HI-TECH PICC-18 и MPLAB avartemiy Микроконтроллеры, АЦП, память и т.д 11 20.08.2007 02:35
Mplab IDE - помогите... Mozart Микроконтроллеры, АЦП, память и т.д 2 06.04.2005 12:45
MPLAB IDE 6.30 chiet Микроконтроллеры, АЦП, память и т.д 0 04.11.2004 23:58
[Решено] MPLAB-IDE TVIP Поиск схем. Делимся схемами 1 13.03.2004 10:44


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot