Welcome! Log In Create A New Profile

Advanced

Compréhension Marlin Firmware

Posted by chrisalakiss 
Compréhension Marlin Firmware
April 17, 2014 10:52AM
Bonjour à tous,

J'essaie désespérément de trouver une documentation détaillée du code Marlin, structure des fichiers, approche générale, commentaires sur le code.

J'ai trouvé des explications simplistes sur la configuration, mais rien de trés avancé.

Comment vous êtes vous approprié le code pour d'éventuel amélioration?

Merci d'avance.
Re: Compréhension Marlin Firmware
April 19, 2014 03:47AM
Salut,
Pour ma part, en regardant directement dans le firmware, on arrive à saisir le fonctionnement (basique) car le code est bien documenté (les commentaires commencent par //, parfois plusieurs lignes de commentaires sont encadrées par les signes /* et */), de plus le nom des variables est assez parlant.

Exemple avec le début de configuration.h

Quote

// User-specified version info of this build to display in [Pronterface, etc] terminal window during
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware.
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.

// SERIAL_PORT selects which serial port should be used for communication with the host.
// This allows the connection of wireless adapters (for instance) to non-default port pins.
// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
#define SERIAL_PORT 0

// This determines the communication speed of the printer
// This determines the communication speed of the printer
#define BAUDRATE 115200

// This enables the serial port associated to the Bluetooth interface
//#define BTENABLED              // Enable BT interface on AT90USB devices


//// The following define selects which electronics board you have. Please choose the one that matches your setup
// 10 = Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
// 11 = Gen7 v1.1, v1.2 = 11
// 12 = Gen7 v1.3
// 13 = Gen7 v1.4
// 2  = Cheaptronic v1.0
// 20 = Sethi 3D_1
// 3  = MEGA/RAMPS up to 1.2 = 3
// 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
// 34 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed)
// 35 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan)
// 4  = Duemilanove w/ ATMega328P pin assignment
// 5  = Gen6
// 51 = Gen6 deluxe
// 6  = Sanguinololu < 1.2
// 62 = Sanguinololu 1.2 and above
// 63 = Melzi
// 64 = STB V1.1
// 65 = Azteeg X1
// 66 = Melzi with ATmega1284 (MaKr3d version)
// 67 = Azteeg X3
// 68 = Azteeg X3 Pro
// 7  = Ultimaker
// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
// 72 = Ultimainboard 2.x (Uses TEMP_SENSOR 20)
// 77 = 3Drag Controller
// 8  = Teensylu
// 80 = Rumba
// 81 = Printrboard (AT90USB1286)
// 82 = Brainwave (AT90USB646)
// 83 = SAV Mk-I (AT90USB1286)
// 9  = Gen3+
// 70 = Megatronics
// 701= Megatronics v2.0
// 702= Minitronics v1.0
// 90 = Alpha OMCA board
// 91 = Final OMCA board
// 301= Rambo
// 21 = Elefu Ra Board (v3)

#ifndef MOTHERBOARD
#define MOTHERBOARD 33
#endif

// Define this to set a custom name for your generic Mendel,
// #define CUSTOM_MENDEL_NAME "This Mendel"
...

Par exemple, juste avant la commande, tu as les différentes options disponibles (ici les codes correspondant à l'électronique) et dans mon cas j'ai choisi le N°33 qui correspond au code de la Ramps avec un seul extrudeur, un ventilateur et un lit chauffant (ligne #define MOTHERBOARD 33).
De plus, il suffit souvent de choisir juste le matériel que l'on a (comme le type de LCD) pour que la configuration se fasse automatiquement : les différentes configurations sont très souvent prises en compte (anticipées) par Marlin, on le voit dans le code avec les lignes qui commencent avec IF ( par exemple "IF MOTHERBOARD 33 ... -> indique que ceci ne s'appliquera que pour la Ramps code 33).
Cordialement,

Thierry


Prusa V2 + Ramps 1.4 (Marlin Firmware) avec autolevelling bed, écran LCD et alimentation à 24V + Raspberry Pi Model B (pour impression autonome) / Pronterface + Slic3r sous Ubuntu 14.04 / Niveau : Pratiquant / Localisation : Lézignan-Corbières (Aude, France)
Re: Compréhension Marlin Firmware
April 19, 2014 04:26AM
Si tu souhaite comprendre le code tu peux aller sur le site arduino
et consulter les références : ICI


Smartrap (version sans servomoteur), J-head 1.75mm, buse .035mm, Ramps1.4/arduino méga, lcd/sd, marlin,slic3r,pronterface.
PLA FILO3D, bed froid+colle blanche en bâton. Basse Normandie/calvados/Caen.
Re: Compréhension Marlin Firmware
April 19, 2014 05:48AM
Bonjour,

Merci pour vos references. Etant developpeur du dimanche je comprends le code et c'est vrai qu'il est tres bien documenté. Mais je manque un peu de hauteur sur l'ensemble des fichiers.
Par exemple j'aimerai pouvoir ajouter une webcam qui filmerait automatiquement mon impression et j'avoue ne pas savoir comment retrouver le moment exacte ou l'impression debute.

Merci pour vos reponses, je trouve ce forum incroyable et les gens qui le composent en particulier.

Merci, bonne journee.
Re: Compréhension Marlin Firmware
April 19, 2014 08:21AM
Resalut,
Pour ton problème (détection du début de l'impression), peut-être devrais-tu plutôt agir via le gcode ? Il y a possibilité d'imposer des actions avant l'impression (par contre quel signal, et via quel pin ?).
Cordialement,

Thierry


Prusa V2 + Ramps 1.4 (Marlin Firmware) avec autolevelling bed, écran LCD et alimentation à 24V + Raspberry Pi Model B (pour impression autonome) / Pronterface + Slic3r sous Ubuntu 14.04 / Niveau : Pratiquant / Localisation : Lézignan-Corbières (Aude, France)
Sorry, only registered users may post in this forum.

Click here to login