Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 25.05.2018, 10:51   #101
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Iptash
в настройках проекта
xc32 (global options)
вкладка gcc
выбрать пункт optimization и там выставить.
besogon вне форума   Ответить с цитированием
Старый 25.05.2018, 11:30   #102
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 54
Сообщений: 417
Вес репутации: 330/50
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: XC Compilers

Спасибо! Нашел.)
Iptash вне форума   Ответить с цитированием
Старый 27.07.2018, 12:37   #103
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Ошибка в компиляторе xc32 для pic32mx в версии 2.05
применяет divu заместо div, что, как правило, ведет к неправильным результатам.

где проявляется
Код:
s32 tone_fade_gen(s16* restrict dst,
		const u32 siz,
		const u32 phase,
		const u32 freq,
		const u8 start_amp,
		const u8 end_amp)
{
	s32 ph, ph_adj, adj;
	const s32 seamp = ((s32)start_amp) << 16;
	const s32 eeamp = ((s32)end_amp) << 16;
	
	adj = eeamp - seamp;
	debug_adj0 = adj;

	adj = adj/siz; /*erratic divu*/
	debug_adj1 = adj;
строчка с помоеткой erratic divu - мы делим знаковое целое на беззнаковое целое, очевидно, что в данном случае должно применяться div, однако на практике divu
Код:
!	adj = adj/siz;
0x9D01154C: DIVU V0, A1
war для этого - каст делителя к знаковому.
аля adj = adj/(s32)siz; /*erratic divu*/

каждый раз когда я нахожу такое, я задаюсь вопросом.
Вот пишут гавно свое микрочиповское, гормонию, говнокоде конфигуратор - вот это вот все - ну зачем вообще на это тратить время, если такое вот вылазиет?

просто вычеркнутые из жизни несколько часов.
убитые непонятно куда.
besogon вне форума   Ответить с цитированием
Старый 27.07.2018, 12:55   #104
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 54
Сообщений: 417
Вес репутации: 330/50
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: XC Compilers

А v2.10 не пробовали?
Iptash вне форума   Ответить с цитированием
Старый 27.07.2018, 13:00   #105
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Iptash
а толку? в релизе написано, что они чесались?
придет время - гляну.

вообще xc32 это тупик. это крах светлых идей разработки для mips контроллеров. это запачканый, грязный, испорченый куцыми жадными умами microchip.
besogon вне форума   Ответить с цитированием
Старый 27.07.2018, 13:41   #106
Vint
Senior Member
 
Аватар для Vint
 
Регистрация: 08.06.2007
Сообщений: 528
Вес репутации: 838/59
Vint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to behold
По умолчанию Re: XC Compilers

Цитата:
Сообщение от besogon Посмотреть сообщение
Iptash
а толку? в релизе написано, что они чесались?
придет время - гляну.

вообще xc32 это тупик. это крах светлых идей разработки для mips контроллеров. это запачканый, грязный, испорченый куцыми жадными умами microchip.
это точно, "Паниковский нарушил конвенцию..."
Vint вне форума   Ответить с цитированием
Старый 27.07.2018, 18:09   #107
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,585
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC Compilers

дел

Последний раз редактировалось Марк; 27.07.2018 в 18:16.
Марк вне форума   Ответить с цитированием
Старый 29.07.2018, 09:42   #108
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,585
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC Compilers

Цитата:
Сообщение от besogon Посмотреть сообщение
где проявляется
Код:
s32 tone_fade_gen(s16* restrict dst,
		const u32 siz,
		const u32 phase,
		const u32 freq,
		const u8 start_amp,
		const u8 end_amp)
{
	s32 ph, ph_adj, adj;
	const s32 seamp = ((s32)start_amp) << 16;
	const s32 eeamp = ((s32)end_amp) << 16;
...............
Все-таки спрошу. Как понимать присвоение значения "переменной" с квалификатором const (константе)?
Насколько я понял, проблема совсем не в делении, а в интерпретации компилятором аргументов деления. Он воспринял значения этих аргументов как положительные (делимое положительно). То есть результат вычитания априори больше нуля.

Последний раз редактировалось Марк; 29.07.2018 в 09:47.
Марк вне форума   Ответить с цитированием
Старый 29.07.2018, 19:03   #109
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Марк
Как понимать присвоение значения "переменной" с квалификатором const (константе)? - не понял вопроса.

начну издалека.
что такое константы в си? ну это просто числа допустим какие-то. допустим число 100 в си это константа.
const u32 some = 100; это не константа. это переменная значение которой через обращение к ней мы модифицировать не будем.

квалификатором const мы запрещаем изменение значения переменной через обращение к ней.
иначе говоря присвоили значение при инициализации и все.

Насколько я понял, проблема совсем не в делении, а в интерпретации компилятором аргументов деления. - можно дальше проверять, однако почти точно просто баг в делении.

То есть если изменение значения переменной после инициализации логически неверно, мы не будет путать себя, других и компилятор - пишем const.
besogon вне форума   Ответить с цитированием
Старый 29.07.2018, 22:04   #110
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,585
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC Compilers

Цитата:
Сообщение от besogon Посмотреть сообщение
можно дальше проверять, однако почти точно просто баг в делении.
Все слишком просто, чтобы не быть быстро обнаруженным и пофиксеным. Должны быть некие условия возникновения такой ошибки. Можно, например, попробовать убрать const...
Марк вне форума   Ответить с цитированием
Старый 29.07.2018, 22:45   #111
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 54
Сообщений: 417
Вес репутации: 330/50
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: XC Compilers

По идеи signed должно быть. Попробуйте adj = s32(adj/(s32)siz);
Iptash вне форума   Ответить с цитированием
Старый 29.07.2018, 23:12   #112
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Iptash
я уже написал war, который проходит.
дополнительный каст лишний.
Марк
Все слишком просто, чтобы не быть быстро обнаруженным и пофиксеным. - у ребят все время уходит на xclm написание.
besogon вне форума   Ответить с цитированием
Старый 01.08.2018, 10:31   #113
c004ER
Junior Member
 
Аватар для c004ER
 
Регистрация: 13.01.2009
Сообщений: 25
Вес репутации: 54/0
c004ER will become famous soon enough
Lightbulb Re: XC8 Compilers

Коллеги, всем привет. У кого есть купленная PRO версия XC8, скомпилируйте код, хочу сравнить размер HEX'a.
Камень PIC18F1320

Код:
/*
 * File:   main.c
 * Author: shadr
 *
 * Created on July 17, 2018, 8:53 PM
 */

#define _XTAL_FREQ 8000000
#define RS RB1
#define EN RB0
#define D4 RA4
#define D5 RA2
#define D6 RA1
#define D7 RA0

#define Enc_Push RB2
#define Enc_A RA6
#define Enc_B RA7

#define Heater RB3

#define ON 1;
#define OFF 0;

#define Ki 0.5 // ???????????? ??????????? ?????????? ???????????   
#define Kp 0.65 // ???????????????? ??????????? ?????????? ???????????   
#define Kd 0.12 // ???????????????? ??????????? ?????????? ???????????  

#define MAX_POWER 1000   // ???????????? ???????? ???????? ???????????
#define MIN_POWER 0   // ???????????? ???????? ???????? ???????????



// PIC18F1320 Configuration Bit Settings

// 'C' source line config statements
#pragma switch space

// CONFIG1H
#pragma config OSC = INTIO2     // Oscillator Selection bits (Internal RC oscillator, port function on RA6 and port function on RA7)
#pragma config FSCM = OFF       // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = OFF        // Brown-out Reset Enable bit (Brown-out Reset disabled)
// BORV = No Setting

// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config MCLRE = OFF      // MCLR Pin Enable bit (RA5 input pin enabled, MCLR disabled)

// CONFIG4L
#pragma config STVR = ON        // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF        // Low-Voltage ICSP Enable bit (Low-Voltage ICSP disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (00200-000FFFh) not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (001000-001FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (00200-000FFFh) not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (001000-001FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (00200-000FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (001000-001FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from table reads executed in other blocks)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.



#include <xc.h>

//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>


int a[]={100,150,200,250,300,350,400,450,500};
int b[]={217,291,364,437,512,588,664,741,796};
float Temp_Setup=200;
float Temp;
char s[8];
float average[10];

void Lcd_Port(char a)
{
	if(a & 1)
		D4 = 1;
	else
		D4 = 0;

	if(a & 2)
		D5 = 1;
	else
		D5 = 0;

	if(a & 4)
		D6 = 1;
	else
		D6 = 0;

	if(a & 8)
		D7 = 1;
	else
		D7 = 0;
}
void Lcd_Cmd(char a)
{
	RS = 0;             // => RS = 0
	Lcd_Port(a);
	EN  = 1;             // => E = 1
        __delay_ms(4);
        EN  = 0;             // => E = 0
}

Lcd_Clear()
{
	Lcd_Cmd(0);
	Lcd_Cmd(1);
}

void Lcd_Set_Cursor(char a, char b)
{
	char temp,z,y;
	if(a == 1)
	{
	  temp = 0x80 + b - 1;
		z = temp>>4;
		y = temp & 0x0F;
		Lcd_Cmd(z);
		Lcd_Cmd(y);
	}
	else if(a == 2)
	{
		temp = 0xC0 + b - 1;
		z = temp>>4;
		y = temp & 0x0F;
		Lcd_Cmd(z);
		Lcd_Cmd(y);
	}
}

void Lcd_Init()
{
  Lcd_Port(0x00);
   __delay_ms(20);
  Lcd_Cmd(0x03);
	__delay_ms(5);
  Lcd_Cmd(0x03);
	__delay_ms(11);
  Lcd_Cmd(0x03);
  /////////////////////////////////////////////////////
  Lcd_Cmd(0x02);
  Lcd_Cmd(0x02);
  Lcd_Cmd(0x08);
  Lcd_Cmd(0x00);
  Lcd_Cmd(0x0C);
  Lcd_Cmd(0x00);
  Lcd_Cmd(0x06);
}

void Lcd_Write_Char(char a)
{
   char temp,y;
   temp = a&0x0F;
   y = a&0xF0;
   RS = 1;             // => RS = 1
   Lcd_Port(y>>4);             //Data transfer
   EN = 1;
   __delay_us(40);
   EN = 0;
   Lcd_Port(temp);
   EN = 1;
   __delay_us(40);
   EN = 0;
}

void Lcd_Write_String(char *a)
{
	int i;
	for(i=0;a[i]!='\0';i++)
	   Lcd_Write_Char(a[i]);
}

/*void Lcd_Shift_Right()
{
	Lcd_Cmd(0x01);
	Lcd_Cmd(0x0C);
}

void Lcd_Shift_Left()
{
	Lcd_Cmd(0x01);
	Lcd_Cmd(0x08);
}*/



void init(void) {
    OSCCON=0b01110000;
    ADCON0=0b01011001;
    ADCON1=0b00110111;
    //ADCON2=0b10101000;
    ADCON2 = 0b10011101;
    //CCP1CON=0b00001100;
    
    PORTA= 0b00000000;
    TRISA= 0b11101000;
    PORTB= 0b00000000;
    TRISB= 0b00010100;
    
    //Interrupt setup
   // INTCON=0b1
    
    //END Interrupr Setup
    
    
    return;
}

char* FloatToStr(float x)
{
    unsigned int A,B,C,D;
    char R[5];
    R[3]='.';
    if (x>999) {x=999;}
    if (x<0) {x=0;}
    
    A=x/100;
    B=(x/10)-(A*10);
    C=x-((A*100)+(B*10));
    D=(x*10)-(A*1000+B*100+C*10);
    R[0]=A+48;
    R[1]=B+48;
    R[2]=C+48;
    R[4]=D+48;
    
    return R;
}



float ConvertTemp(float X){
    int i;
    int A,B,C,D;
    float R=0;
    
    if (X>=b[0]){
    for(i=0;i<=7;i++)
    {
    if ((X>=b[i])&&(X<b[i+1]))
    {
    A=a[i];B=a[i+1];
    C=b[i];D=b[i+1];
    }
    }
    R=(X-C)/(D-C)*(B-A)+A;
    }
    else
    {
    R=(X-b[0])/(b[1]-b[0])*(a[1]-a[0])+a[0];
    }   
    
    return R;
}


void main(void) {
//    unsigned int a;
    float PIDError;
    float PIDInt;
    float PIDDiff;
    float PIDProp;
    float Temp_Last;
    
    int i;
    unsigned int counter;
    float sum;
    unsigned int setPower;
    float ADVal; //Value used to retrieve data from ADC result register (ADRESH)
    //float ADVal_cnv;// Converted value to Temp
    init();
    
    Lcd_Init();
    Lcd_Clear();
    Lcd_Set_Cursor(1,1);
    Lcd_Write_String("T:+");
    Lcd_Set_Cursor(2,1);
    Lcd_Write_String("S:+");
    char Enc_A_Prev;
    
    while (1) 
    {
    
    Heater=OFF;  
    __delay_ms(1);
    ADCON0bits.ADON = 1;		        //Turn on ADC
	ADCON0bits.GO_DONE = 1;		//Set the GO_DONE bit to 1 to start conversion
    while(ADCON0bits.GO_DONE);	        //Wait for conversion to be done.
	ADCON0bits.ADON = 0;                 //Turn AD off       
    __delay_ms(1);
    //if (Temp<=Temp_Setup) {Heater=1;} else {Heater=0;}
    //Read value from ADC ADRESH register
	ADVal = ((ADRESH<<8)|ADRESL);
    
    ADVal=ConvertTemp(ADVal);
    average[counter]=ADVal;
    counter++;if (counter>9){counter=0;}
    sum=0;
    for (i=0;i<=9;i++){sum+=average[i];}
    Temp=sum/10;
   
       
    Lcd_Set_Cursor(1,4);
    Lcd_Write_String(FloatToStr(Temp));
    
      
    Lcd_Set_Cursor(2,4);
    //Lcd_Write_String(FloatToStr(Temp_Setup));
    Lcd_Write_String(FloatToStr(setPower));
    
    
    if (Enc_A&&!Enc_A_Prev)
    {
        if (Enc_B) {Temp_Setup+=5;}
        else
        {Temp_Setup-=5;}
        
        if (Temp_Setup>500) {Temp_Setup=500;}
        if (Temp_Setup<30) {Temp_Setup=30;}
        
    }
    Enc_A_Prev=Enc_A;
    
     //if (cycle20mcCount == 47) {
    {  
        PIDError=Temp_Setup-Temp;
        PIDInt+=(Ki*PIDError);
        if (PIDInt>MAX_POWER) {PIDInt=MAX_POWER;}
        if (PIDInt<MIN_POWER) {PIDInt=MIN_POWER;}
        PIDDiff=Kd*(Temp-Temp_Last);
        PIDProp=Kp*PIDError;
        setPower=PIDProp+PIDInt-PIDDiff;
        if (setPower>MAX_POWER){setPower=MAX_POWER;}
        if (setPower<MIN_POWER){setPower=MIN_POWER;}
        
        Temp_Last=Temp;

            

        
            
        
    }
    
    for (i=1;i<MAX_POWER;i++)
    {
        if (setPower>i) {Heater=1;} else {Heater=0;}
        __delay_ms(1);
    } 
    //if (Temp<=Temp_Setup) {Heater=1;} else {Heater=0;}
    }
    return;
}
__________________
Человек рожден победителем!
c004ER вне форума   Ответить с цитированием
Старый 01.08.2018, 10:52   #114
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

c004ER
Вы в pic16 плавающую точку втащили.

хотите чтобы меньше занимало? избавьтесь от плавающей точки.
besogon вне форума   Ответить с цитированием
Старый 01.08.2018, 19:13   #115
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: XC Compilers

Цитата:
Сообщение от besogon Посмотреть сообщение
c004ER
Вы в pic16 плавающую точку втащили.
а printf постеснялся использовать. какой тогда смысл.
но вообще должно бы влезть, там вроде ничего особенного
Greg вне форума   Ответить с цитированием
Старый 02.08.2018, 09:24   #116
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

Greg
если не влазиет, то может быть не выкинуло неиспользуемые функции из floating point библиотеки.

без оптимизаций могло.
besogon вне форума   Ответить с цитированием
Старый 02.08.2018, 13:45   #117
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,885
Вес репутации: 5553/170
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: XC Compilers

Цитата:
Сообщение от besogon Посмотреть сообщение
Greg
если не влазиет, то может быть не выкинуло неиспользуемые функции из floating point библиотеки.

без оптимизаций могло.
люди говорят, если ставить labx на свежий компьютер, он месяц или сколько там дает работать в полном режиме, и только потом отключает оптимизацию. так и проверить. правда это про дспики
Greg вне форума   Ответить с цитированием
Старый 03.08.2018, 19:00   #118
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,181
Вес репутации: 1775/75
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: XC8 Compilers

Цитата:
Сообщение от c004ER Посмотреть сообщение
хочу сравнить размер HEX'a.
Камень PIC18F1320
MPLAB XC8 C Compiler (PRO Mode) V1.45

error: (1250) could not find space (40 bytes) for variable _average
Илья вне форума   Ответить с цитированием
Старый 05.08.2018, 23:24   #119
c004ER
Junior Member
 
Аватар для c004ER
 
Регистрация: 13.01.2009
Сообщений: 25
Вес репутации: 54/0
c004ER will become famous soon enough
По умолчанию Re: XC Compilers

Цитата:
Сообщение от Greg Посмотреть сообщение
а printf постеснялся использовать. какой тогда смысл.
но вообще должно бы влезть, там вроде ничего особенного
Критика конечно ваше право, однако я сначала использовал стандартные библиотеки и место закончилось еще задолго до реализации ПИДа. При подключении любой библиотеки, мне компилер зачем-то все прикручивает, даже если я использую только sprintf.
Результат компиляции всегда 5кб , а вот на микроЕ тот же код собирается в 760 байт (карл 760б).
Отсюда и законный вопрос - что там оптимизируется?
__________________
Человек рожден победителем!
c004ER вне форума   Ответить с цитированием
Старый 05.08.2018, 23:26   #120
c004ER
Junior Member
 
Аватар для c004ER
 
Регистрация: 13.01.2009
Сообщений: 25
Вес репутации: 54/0
c004ER will become famous soon enough
По умолчанию Re: XC8 Compilers

Цитата:
Сообщение от Илья Посмотреть сообщение
MPLAB XC8 C Compiler (PRO Mode) V1.45

error: (1250) could not find space (40 bytes) for variable _average
Спасибо! Очень занятно т.к. в триал версии 2.0 невпихуемое впихуется. ))
__________________
Человек рожден победителем!
c004ER вне форума   Ответить с цитированием
Старый 06.08.2018, 10:55   #121
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,181
Вес репутации: 1775/75
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: XC8 Compilers

Цитата:
Сообщение от c004ER Посмотреть сообщение
Спасибо! Очень занятно т.к. в триал версии 2.0 невпихуемое впихуется. ))
Проверьте. у меня в 2.0 тоже не влазит. Но если поменять float на 24bit, то влазит в обоих компиляторах

1.45
Memory Summary:
Program space used 1325h ( 4901) of 1F00h bytes ( 61.8%)
Data space used E9h ( 233) of FFh bytes ( 91.4%)
Configuration bits used 7h ( 7) of 7h words (100.0%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
ID Location space used 8h ( 8) of 8h bytes (100.0%)
Data stack space used 0h ( 0) of 16h bytes ( 0.0%)

2.00
Memory Summary:
Program space used 131Fh ( 4895) of 2000h bytes ( 59.8%)
Data space used EEh ( 238) of 100h bytes ( 93.0%)
Configuration bits used 7h ( 7) of 7h words (100.0%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
ID Location space used 8h ( 8) of 8h bytes (100.0%)
Data stack space used 0h ( 0) of Fh bytes ( 0.0%)
Илья вне форума   Ответить с цитированием
Старый 13.08.2018, 08:39   #122
alexD
Member
 
Регистрация: 06.11.2013
Возраст: 39
Сообщений: 39
Вес репутации: 248/24
alexD has a spectacular aura aboutalexD has a spectacular aura aboutalexD has a spectacular aura about
По умолчанию Re: XC8 Compilers

Цитата:
Сообщение от c004ER Посмотреть сообщение
Спасибо! Очень занятно т.к. в триал версии 2.0 невпихуемое впихуется. ))
Разрешите небольшой код ревью сделать?
Ошибки такие:
1. В функции FloatToStr() возвращаете указатель на временный объект. Аналогичная ошибка в функции ConvertTemp()
Цитата:
char* FloatToStr(float x)
{
char R[5];
...
return R;
}
2. В теле функции main() используете неинициализированную переменную (она локальная) в качестве индекса для доступа к элементу массива average
Цитата:
void main(void)
{
...
unsigned int counter;
...
average[counter]=ADVal;
...}
аналогично этой ошибке - использование неинициализированных локальных переменных (хотя бы при первом обращении по коду их значение - мусор)
unsigned int setPower;
float PIDInt;
float Temp_Last;
char Enc_A_Prev;
Или сделайте их глобальными (нулевые значения) или присвойте начальные значения.
3. Вот этом сравнении всегда будет утверждение 0 (ложь), потому что переменная setPower принята как беззнаковая, а MIN_POWER равно 0
Цитата:
if (setPower<MIN_POWER)
{setPower=MIN_POWER;}
Не говорю, что это фатально может влиять на качество работы, но лучше исправить

У меня во Free версию 2.00 тоже не влезло
error: (1250) could not find space (40 bytes) for variable _average

Последний раз редактировалось alexD; 13.08.2018 в 08:51.
alexD вне форума   Ответить с цитированием
Старый 13.08.2018, 10:25   #123
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

alexD
В функции FloatToStr() возвращаете указатель на временный объект. - это если бы xc8 был компилятором языка С.

в xc8 прекомпилированый стек. соответственно с точки зрения xc8 это указатель на вполне себе статичный объект.

по поводу остального - оно тоже наверняка вполне себе как-то инициализируется.

ну а с точки зрения Си кода, да.
куча вещей, которых не должно быть.
besogon вне форума   Ответить с цитированием
Старый 13.08.2018, 17:31   #124
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,166
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC Compilers

alexD
Поставил xc8-v1.42 - один из последних версий xc8 и проверил для pic14enh.
В настройках компилятора есть возможность выбора обычного стека.
Иначе говоря данный в случае --stack=reentrant то данный код будет безусловно ошибочным.
besogon вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MPLAB® XC Picvan Продукция MICROCHIP 67 15.01.2013 07:22


Часовой пояс GMT +3, время: 07:53.


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