Welcome! Log In Create A New Profile

Advanced

MK4duo & 8 BIT errore di compilazione

Posted by MagoKimbra 
MK4duo & 8 BIT errore di compilazione
October 28, 2016 11:22AM
Come in molti sapranno compilando il nuovo MK4duo per le 8 Bit con 2 o più hotend viene fuori un errore del genere:
sketch\src\temperature\temperature.cpp: In function 'Temperature::manage_temp_controller() [clone .part.4]':

sketch\src\temperature\temperature.cpp:1129:1: error: unable to find a register to spill in class 'POINTER_REGS'

 }

 ^

sketch\src\temperature\temperature.cpp:1129:1: error: this is the insn:

(insn 53 51 55 3 (set (regconfused smileyF 76 [ D.2326 ])

        (memconfused smileyF (post_inc:HI (reg:HI 103 [ ivtmp.129 ])) [12 MEM[base: _94, offset: 0B]+0 S4 A8])) sketch\src\temperature\temperature.cpp:716 100 {*movsf}

     (expr_list:REG_INC (reg:HI 103 [ ivtmp.129 ])

        (nil)))

sketch\src\temperature\temperature.cpp:1129: confused by earlier errors, bailing out

lto-wrapper: C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc returned 1 exit status

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed

collect2.exe: error: ld returned 1 exit status

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.


L'errore è concentrato in questa riga:
pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX];

dove HOTEND_INDEX è l'indice che va tra 0 e il numero di hotend -1, quindi per esempio se gli hotend fossero 2 va da 0 a 1. Ma messo in questo modo la variabile array current_temperature[] non viene trovata per un errore del puntatore. Questo è baco di arduino IDE..
Solo per trovare il problema ci sono diventato matto, alla fine sembrerebbe che io abbia trovato la soluzione, ma fa schifo schifo...
La soluzione è puntare direttamente alla variabile sostituendo HOTEND_INDEX con un valore definito cioè current_temperature[0] o current_temperature[1] o current_temperature[2] o current_temperature[3].
Cosi l'errore non lo da, ma io devo variare il valore all'interno al cambiare del valore di HOTEND_INDEX quindi ho fatto cosi:

float current_temp;

  switch (HOTEND_INDEX) {
    case 0:
      current_temp = current_temperature[0]; break;
    #if HOTENDS > 1
      case 1:
        current_temp = current_temperature[1]; break;
      #if HOTENDS > 2
        case 2:
          current_temp = current_temperature[2]; break;
        #if HOTENDS > 3
          case 3:
            current_temp = current_temperature[3]; break;
        #endif // HOTENDS > 3
      #endif // HOTENDS > 2
    #endif // HOTENDS > 1
  }

Prima creo una variabile temporanea current_temp e poi a secondo del valore di HOTEND_INDEX metto nella variabile il valore di current_temperature con il suo valore fisso del puntatore di array...
Cosi poi sostituisco current_temperature con current_temp nella riga accusata:

pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temp;

e l'errore sparisce...

Ma quello che mi lascia totalmente perplesso che veramente mi manda fuori di testa è che nella riga successiva si trova...

dTerm[HOTEND_INDEX] = K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + K1 * dTerm[HOTEND_INDEX];

e qui l'errore non lo da... confused smiley

Qualcuno mi sa dire qualcosa?!?!?!

Cmq per ora lascio cosi almeno funziona, quindi da stasera potete scaricare la MK4duo anche se avete i 2 o più hotend..

Ma come caspita programmano in Arduino????


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo & 8 BIT errore di compilazione
October 29, 2016 06:39AM
OH bella...
E' ogni tanto s'ha da andare di matto...

... sarei curioso di capire come cacchio hai fatto ad isolare il problema visto quel log di compilazione


Quote


current_temp = current_temperature[HOTEND_INDEX]; //prova qsecofr
switch (HOTEND_INDEX) {
case 0:
current_temp = current_temperature[0]; break;
#if HOTENDS > 1
case 1:
current_temp = current_temperature[1]; break;
#if HOTENDS > 2
case 2:
current_temp = current_temperature[2]; break;
#if HOTENDS > 3
case 3:
current_temp = current_temperature[3]; break;
#endif // HOTENDS > 3
#endif // HOTENDS > 2
#endif // HOTENDS > 1
}

#if ENABLED(PIDTEMP)
#if DISABLED(PID_OPENLOOP)
pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX]; //prova qsecofr
//pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temp;

Però le due righe che ho scritto su arduino 1.6.9 mi si compilano tranquillamente. Che versione da questo problema? Ho sbagliato io ad interpretare ?

Edited 1 time(s). Last edit at 10/29/2016 06:40AM by qsecofr.
Re: MK4duo & 8 BIT errore di compilazione
October 29, 2016 07:27AM
A quindi con la 1.6.9 va... Io ho la 1.6.12... Ma la cosa strana è che va anche quando si compila a 32bit o quando si setta un solo Hotend. Insomma è un baco delle nuove release, cmq ho scritto sul forum e sembra che stiano lavorando..
Però quando succedono ste cose mi mandano ai matti... Già ci sono gli errori classici di programmazione e vabbe, ma se ci si mettono pure quelli assurdi di compilazione da parte del compilatore si esce pazzi...


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo & 8 BIT errore di compilazione
October 29, 2016 11:21AM
ah ti credo. Io mi sono iscritto la prima volta nel forum arduino dopo aver barcollato nel buio più totale per una settimana a causa di un baco della toolchain relativa all'allora piuttosto nuovo "Leonardo".

Comunque ho ricreato l'errore: effettivamente esce con la 12. con la 9 questa cosa non succedeva.







... che storia... ho fatto 4-5 prove...provato dei giri.... assurdo.

Edited 1 time(s). Last edit at 10/29/2016 11:56AM by qsecofr.
Re: MK4duo & 8 BIT errore di compilazione
October 29, 2016 01:19PM
Mago io non so cosa dire x quello che fai e mi chiedo se sei reale oppure come Tron sei entrato nel codice e sei rimasto prigioniero per risolvere i nostri dubbi e e gli errori di altri.
Re: MK4duo & 8 BIT errore di compilazione
October 29, 2016 01:44PM
Se va be... Addirittura Tron, anche se alle scuole superiori mi chiamavano cosi.. Il problema è che a volte sono prigioniero dei miei dubbi.... grinning smiley


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo & 8 BIT errore di compilazione
October 30, 2016 08:20AM
Mago Ora ho provato a compilare il software con l'ide perchè ho sbagliato a mettere la direzione dell'estrusore e ricompilandolo mi è uscito questo errore




sketch\src\lcd\ultralcd.cpp: In function 'void lcd_control_temperature_preheat_abs_settings_menu()':

sketch\src\lcd\ultralcd.cpp:1895:17: error: redefinition of 'void lcd_control_temperature_preheat_abs_settings_menu()'

     static void lcd_control_temperature_preheat_abs_settings_menu() { _lcd_control_temperature_preheat_settings_menu(2); }

                 ^

sketch\src\lcd\ultralcd.cpp:1888:17: note: 'void lcd_control_temperature_preheat_abs_settings_menu()' previously defined here

     static void lcd_control_temperature_preheat_abs_settings_menu() { _lcd_control_temperature_preheat_settings_menu(1); }

                 ^

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

Posso con un comando invertire l'estrusore senza ricaricare il software?

Edited 1 time(s). Last edit at 10/30/2016 08:22AM by paolopa.
Re: MK4duo & 8 BIT errore di compilazione
October 30, 2016 08:25AM
Fixato!!


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo & 8 BIT errore di compilazione
October 30, 2016 08:44AM
Grazieeeeeeee
Re: MK4duo & 8 BIT errore di compilazione
October 30, 2016 07:05PM
Mago mi rompe ad essere sempre io a farti richieste di fix ma sto cercando di caricare il firmware 4.3Duo con 2 estrusori e ho abilitato l'autobedlevel e l'autocalibration ma al momento della conpilazione ora mi esce un altro erroe sull'ide
n file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

                 from sketch\src\../base.h:26,

                 from sketch\src\MK_Main.cpp:31:

sketch\src\MK_Main.cpp: In function 'void print_bed_level(const char*)':

sketch\src\../src/HAL_AVR/communication.h:59:60: error: initializer fails to determine size of '__c'

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2193:5: note: in expansion of macro 'SERIAL_S'

     SERIAL_S(prefix);

     ^

sketch\src\../src/HAL_AVR/communication.h:59:60: error: array must be initialized with a brace-enclosed initializer

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2193:5: note: in expansion of macro 'SERIAL_S'

     SERIAL_S(prefix);

     ^

sketch\src\../src/HAL_AVR/communication.h:59:60: error: initializer fails to determine size of '__c'

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2195:5: note: in expansion of macro 'SERIAL_S'

     SERIAL_S(prefix);

     ^

sketch\src\../src/HAL_AVR/communication.h:59:60: error: array must be initialized with a brace-enclosed initializer

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2195:5: note: in expansion of macro 'SERIAL_S'

     SERIAL_S(prefix);

     ^

sketch\src\../src/HAL_AVR/communication.h:59:60: error: initializer fails to determine size of '__c'

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2203:7: note: in expansion of macro 'SERIAL_S'

       SERIAL_S(prefix);

       ^

sketch\src\../src/HAL_AVR/communication.h:59:60: error: array must be initialized with a brace-enclosed initializer

 #define SERIAL_PGM(message)                 serialprintPGM(PSTR(message))

                                                            ^

sketch\src\../src/HAL_AVR/communication.h:61:45: note: in expansion of macro 'SERIAL_PGM'

 #define SERIAL_S(srt)                       SERIAL_PGM(srt)

                                             ^

sketch\src\MK_Main.cpp:2203:7: note: in expansion of macro 'SERIAL_S'

       SERIAL_S(prefix);

       ^

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

Sorry, only registered users may post in this forum.

Click here to login