Welcome! Log In Create A New Profile

Advanced

Marlinkimbra4due & MAX6675

Posted by drakelive 
Marlinkimbra4due & MAX6675
March 01, 2016 12:53PM
Ciao

Ho provato a compilare il MarlinKimbra4DUE scegliendo una RampsFD v2 e il controller per termocoppie MAX6675.
Purtroppo in fase di compilazione ricevo questi errori :



tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp: In function 'int read_max6675()':
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1238:5: error: 'SPCR' was not declared in this scope
SPCR = BIT(MSTR) | BIT(SPE) | BIT(SPR0);
^
In file included from /tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../base.h:14:0,
from /tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:21:
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1238:16: error: 'MSTR' was not declared in this scope
SPCR = BIT(MSTR) | BIT(SPE) | BIT(SPR0);
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:8:21: note: in definition of macro 'BIT'
#define BIT(b) (1<<(b))
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1238:28: error: 'SPE' was not declared in this scope
SPCR = BIT(MSTR) | BIT(SPE) | BIT(SPR0);
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:8:21: note: in definition of macro 'BIT'
#define BIT(b) (1<<(b))
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1248:5: error: 'SPDR' was not declared in this scope
SPDR = 0;
^
In file included from /tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../base.h:14:0,
from /tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:21:
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1249:18: error: 'SPSR' was not declared in this scope
for (; !TEST(SPSR, SPIF)winking smiley;
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:9:22: note: in definition of macro 'TEST'
#define TEST(n,b) (((n)&BIT(b))!=0)
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1249:24: error: 'SPIF' was not declared in this scope
for (; !TEST(SPSR, SPIF)winking smiley;
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:8:21: note: in definition of macro 'BIT'
#define BIT(b) (1<<(b))
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1249:13: note: in expansion of macro 'TEST'
for (; !TEST(SPSR, SPIF)winking smiley;
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1255:18: error: 'SPSR' was not declared in this scope
for (; !TEST(SPSR, SPIF)winking smiley;
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:9:22: note: in definition of macro 'TEST'
#define TEST(n,b) (((n)&BIT(b))!=0)
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1255:24: error: 'SPIF' was not declared in this scope
for (; !TEST(SPSR, SPIF)winking smiley;
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/../../module/macros.h:8:21: note: in definition of macro 'BIT'
#define BIT(b) (1<<(b))
^
/tmp/buildd6ad5948f1e16cac3fa4ba0966d27763.tmp/sketch/module/temperature/temperature.cpp:1255:13: note: in expansion of macro 'TEST'
for (; !TEST(SPSR, SPIF)winking smiley;
Re: Marlinkimbra4due & MAX6675
March 01, 2016 02:31PM
Allega il tuo configuration_overall cosi gli do un'occhiata...

Scusa non avevo letto bene pensavo ad595... Prova adesso se va bene!!!

Edited 2 time(s). Last edit at 03/01/2016 03:33PM by MagoKimbra.


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: Marlinkimbra4due & MAX6675
March 01, 2016 08:23PM
Quote
MagoKimbra
Allega il tuo configuration_overall cosi gli do un'occhiata...

Scusa non avevo letto bene pensavo ad595... Prova adesso se va bene!!!


Adesso compila :-) domani provo

Grazie Mago

Drk
Re: Marlinkimbra4due & MAX6675
March 02, 2016 12:16PM
Salve MagoKimbra anch'io sto cercando di compilare il MarlinKimbra4due con una ramps 1.4 e una termocoppia AD595 ho anche modificato il pin alla riga N° 876 da 13 ho messo 3 ma mi esce questo errore

In file included from Configuration_Store.cpp:1:0:
base.h:14:27: fatal error: module/macros.h: No such file or directory
#include "module/macros.h"
Grazie in anticipo.
Re: Marlinkimbra4due & MAX6675
March 02, 2016 12:22PM
allego il file del Firmware MarlinKimbra4due
Attachments:
open | download - MarlinKimbra4due-master.rar (2.02 MB)
Re: Marlinkimbra4due & MAX6675
March 02, 2016 02:34PM
Io non so più come scriverlo e come dirlo...
Primo dovete avere Arduino IDE 1.6.7 altrimenti non funziona la compilazione perché non trova i file nelle sottocartelle..
Secondo Ramps 1.4 con MK4due cosa centra???
Devi scaricare MK normale per le schede a 8 bit!!!


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: Marlinkimbra4due & MAX6675
March 02, 2016 03:52PM
Ok grazie non sapevo che marlinkimbra4due fosse per schede a 32 bit, bene allora provvederò a scaricare Mk normale per schede a 8 bit.
Re: Marlinkimbra4due & MAX6675
March 03, 2016 02:20PM
Ciao!
A voi il max6675 ha iniziato a funzionare? Perchè per le prove che ho fatto io anche senza collegarlo a nulla la macchina non funziona.
Si avvia, fa il boot (con tanto di logo) ma poi il monitor si svuota e non fa più nulla non prende comandi nemmeno dalla seriale....
Re: Marlinkimbra4due & MAX6675
March 03, 2016 03:46PM
Se non rileva alcun sensore la scheda si blocca...
Ma proprio sto sensore dovevi metter??? Scherzo, purtroppo non l'ho mai provato e in più si collega SPI quindi un pochino complesso...
Devi montarlo e vediamo cosa succede...


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: Marlinkimbra4due & MAX6675
March 03, 2016 03:53PM
Ciao mago,
Io ho fatto la prova sia collegandolo che scollegandolo, e mi si blocca quindi significa che non lo vede, eppure ho provato a collegarlo sia sulla spi dove dovrebbe essere montato (miso pin 50 mosi pin 51 sck pin 52 e cs sul 53) sia sullo stesso spi in cui è collegata la SD ma il risultato non cambia...
Purtroppo è l'unico che può funzionare, ho provato anche a montare un ad595 ma da temperature sballatissime (il che sarebbe il meno) e scaldando la termocoppia la temperatura non varia, leggendo in rete ed i datasheet di quell'integrato a quanto pare necessita del 5v e non del 3.3V quindi sulle due non è utilizzabile direttamente sad smiley


---- EDIT ----
l'ho ricollegata come andrebbe (sui 50 51 52 e 53) il risultato non cambia, la cosa strana è che in genere quando non rileva il sensore di temperatura (qualunque esso sia) la macchina spara fuori un errore del tipo ERRMINTEMP e si killa, però in questo caso non lo fa sembra pronta a lavorare ma resta piantata con le ventole a palla e non risponde ne reagisce più, ti incollo quanto sputato fuori dalla mia kossel

Quote
start
Info: PowerUp
MK4due_4.2.7_dev
Last Updated: Mar 3 2016 21:59:30 | Author: (none, default config)
Compiled: Mar 3 2016
Free Memory: 85776 PlannerBufferBytes: 2688
ok Hardcoded SD Default Settings Loaded
Echo: Hardcoded Default Settings Loaded
Config: Steps per unit:
Config: M92 X80.00 Y80.00 Z80.00 E625.00
Config: Maximum feedrates (mm/s):
Config: M203 X500.00 Y500.00 Z500.00 E100.00
Config: Maximum Acceleration (mm/s2):
Config: M201 X5000 Y5000 Z5000 E1000

Config: Accelerations: P=printing, V=travel and T* R=retract
Config: M204 P3000.00 V3000.00
Config: M204 T0 R10000.00
Config: Advanced variables: S=Min feedrate (mm/s), V=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)
Config: M205 S0.00 V0.00 B20000 X20.00 Z20.00 E5.00
Config: Home offset (mm):
Config: M206 X0.00 Y0.00 Z0.00
Config: Delta Geometry adjustment:
Config: M666 A0.000 B0.000 C0.000 I0.000 J0.000 K0.000 U0.000 V0.000 W0.000 R110.00 D220.00 H200.00
Config: Endstop Offsets:
Config: M666 X0.00 Y0.00 Z0.00
Config: Z-Probe Offset:
Config: M666 P X0.00 Y0.00 Z-1.00
Config: Material heatup parameters:
Config: M145 S0 H190 B60 F255 (Material PLA)
Config: M145 S1 H240 B100 F255 (Material ABS)
Config: M145 S2 H230 B60 F255 (Material GUM)
Config: PID settings:
Config: M301 H0 P40.00 I7.00 D60.00
Config: Filament settings: Disabled
Info: Power on time:
Info: 0 days 0 hours 0 minutes
Info: Filament printed:
Info: 0 Km 0 m 0 cm 0 mm
First start for temperature finished.
Echo: SD card ok


Edited 2 time(s). Last edit at 03/03/2016 04:15PM by giutrec.
Re: Marlinkimbra4due & MAX6675
March 04, 2016 03:51AM
Nella notte mi sono venuti dei dubbi sull'effettivo funzionamento del mio modulo max, per cui mi sono messo li ho recuperato la mia Arduino Due di scorta e mi sono messo a fare dei test....
Pertanto ho scaricato la libreria adafruit del max6675 dal gestore delle librerie per poterla utilizzare ho dovuto modificare la libreria editando il file max6675.cpp commentando la include

Quote
#include util/delay.h

e tutte le righe contenenti
Quote
_delay_ms(1);

Fatto ciò si riesce a compilare lo sketch di esempio, e collegando il max si riesce a leggere correttamente la temperatura. Una volta fatto questo ho provato a cambiare i pin standard segnati nello sketch esempio del max con quelli utilizzati da marlin quinndi miso pin 50 sck pin 52 e cs sul 53, ed a quel punto la temperatura non veniva letta, dopo vari test ho capito che quella libreria vuole un pin pwm sul cs ed allora funziona.
Pertanto pensando che fosse quello il problema del malfunzionamento, ho cambiato sul marlin il pin del cs mettendo non il 53 ma il 5 (utilizzato dalla fd per i servo motori che io non uso) però la stampante continua a non avviarsi.

Ho scritto dei miei test notturni, perchè magari quanto sperimentato può tornare utile per giungere ad una soluzione....

La libreria del max è abbastanza semplice ma ovviamente sul marlin è implementato l'HAL quindi questo potrebbe complicare le cose...

Edited 1 time(s). Last edit at 03/04/2016 03:52AM by giutrec.
Re: Marlinkimbra4due & MAX6675
March 04, 2016 06:02AM
L'interfaccia SPI funziona in questo modo ci sono due pin MOSI e MISO che servono per trasferire dati... SCK è un pin di clock per sincronizzarsi tra le periferiche.
La cosa bella è che con questo protocollo puoi mettere n periferiche, solo la periferiche selezionata però risponde, per selezionare la periferica c'è appunto il pin di selezione che nel caso della termocoppia dovrebbe essere CS. Quando è alto vuol dire non è selezionata, quando è basso è selezionata.
Quindi mi sembra strano che voglia un pin pwm. I dati viaggiano sul MISO pin..


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: Marlinkimbra4due & MAX6675
March 04, 2016 06:33AM
Ciao,
Si appunto li SPI è un bus tendenzialmente se hai N CableSelect puoi collegare N dispositivi che condividono tutti i mosi miso clock ed ognuno con il suo pin di selezione, pertanto dovrebbe essere ininfluente se il pin del CS è pwm o no ma dai test fatti fisicamente con la libreria di adafruit del max6675 il sistema funziona solo se il cs è un un dal 2 al 12.
Tra l'altro quel modulino non dispone del pin miso ma solo del mosi pertanto il dispositivo non è collegabile in daisy chain (N periferiche SPI il cui miso viene collegato al mosi dell'altra e via dicendo e nell'ultimo dispositivo il miso di uscita si collega al miso del master) quindi è obbligatorio usare un CS per ogni dispositivo collegato alla stessa SPI (cosa che avevo già provato a fare collegandolo insieme al display alla spi fisica della due ovviamente con un cs proprio)
Re: Marlinkimbra4due & MAX6675
March 04, 2016 07:45AM
Come non ha il miso solo il mosi? Anche nella libreria viene letto il miso...
byte MAX6675::spiread(void) { 
  int i;
  byte d = 0;

  for (i=7; i>=0; i--)
  {
    digitalWrite(sclk, LOW);
    _delay_ms(1);
    if (digitalRead(miso)) {
      //set the bit to 0 no matter what
      d |= (1 << i);
    }

    digitalWrite(sclk, HIGH);
    _delay_ms(1);
  }

  return d;
}


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: Marlinkimbra4due & MAX6675
March 04, 2016 08:44AM
Ciao

Confermo che il MOSI è l'unico pin presente sul max6675 ed infatti è un pin di output.

Qua un po di teoria : https://it.wikipedia.org/wiki/Serial_Peripheral_Interface

Il max6675 ha i seguenti pin :


Master ( DUE) Slave (max6675)
--------------- ------------------
SCK ----> SCK
MOSI -----> MOSI
MISO <----- MISO
CS -----> /CS

Quindi la periferica SPI della DUE è il MASTER mentre quella del max6675 è lo Slave.
Quindi è corretto che la funzione MAX6675::spiread(void) utilizzi digitalRead(miso) perchè informa la DUE a leggere il dato sul canale di ricezione.

Il CS sul max6675 è NEGATO quindi il modulo si attiva con un livello logico BASSO !!!! Ma nella read_max6675() sembra gestito bene.

Sempre dalal documentazione del max6675 è emerso che l'alimentazione (Vcc) è compresa tra 3.0 e 5.5 volt quindi la DUE può utilizzare il modulo come ha già dimostrato Giutrec con la libreria di Adafruit.



Saluti
Drk
Re: Marlinkimbra4due & MAX6675
March 04, 2016 10:46AM
No no, mago scusa ho solo invertito il nome del pin ma intendevo quello giusto ha solo il MISO(SO) e non il MOSI (DO), dopo una notte a studiarci davo i numeri, anche perchè la libreria di adafruit chiama il pin del miso thermoDO e DO invece è il mosi per quello quando ho scritto ho invertito

Edited 1 time(s). Last edit at 03/04/2016 10:53AM by giutrec.
Re: Marlinkimbra4due & MAX6675
March 04, 2016 09:33PM
Ho trovato una FIX sembra funzionare discretamente bene, ovviamente ne si può essere certi solo dopo dei test approfonditi che eseguirò nella prossima settimana.

Comunque ho fatto una pull request
[github.com]

Ciao!

Giuseppe
Re: Marlinkimbra4due & MAX6675
March 05, 2016 02:38AM
Bravo... Secondo me mi sono semplicemente dimenticato di mettere spibegin, perché avendo un'alligator lo fa all'inizio per via del dac..
Cmq tienimi aggiornato, eventualmente se ti va prova solo aggiungendo spibegin all'inizio...


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: Marlinkimbra4due & MAX6675
March 05, 2016 03:58AM
Avevo provato a metterlo ma non funzionava ho dovuto eliminare totalmente la condizione dei 230 millis ed inserirne un altra, ma dopo ci lavoro ancora...
Re: Marlinkimbra4due & MAX6675
March 05, 2016 04:27AM
Sono riuscito a farlo andare con l'implementazione iniziale, quando ieri avevo provato non mi andava perchè mi ero scordato di eliminare il parametro chan dagli spiReceive, ora ho fatto una nuova pull request, credo sia quella definitiva.
Re: Marlinkimbra4due & MAX6675
March 05, 2016 04:43AM
Ottimo... Questo è come dovrebbe essere l'opensource, ognuno mette qualcosa del suo...


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: Marlinkimbra4due & MAX6675
March 05, 2016 11:28AM
Su questo con me sfondi non una porta, ma un portone industriale smiling smiley
Re: Marlinkimbra4due & MAX6675
May 26, 2016 06:01AM
Ciao Mago,
Recupero questo thread per segnalare dei malfunzionamenti (finalmente sono riuscito a continuare il lavoro sulla stampante), durante la stampa in maniera totalmente randomica la stampante freeza andando inn MAXTEMP e si blocca, lo fa solo durante la stampa di oggetti un pelo complessi, stampando il classico cubo bob lo fa mai.
Credo che sia qualche bug software, devo vedere se riesco ad attivare qualche modalità di debug così da vedere cosa lo causa e magari cercare una soluzione....
Però per caso tu avresti già una mezza idea di dove andare a guardare?

Grazie
Giutrec
Sorry, only registered users may post in this forum.

Click here to login