26

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

My PC power supply I was using with the clone board took a dump. My test print came out OK. Then I decided to print a 10mm cube I had stored on the SD card. The print started and then stopped when the PSU dropped. Before that happened though, I noticed that starting the print from the SD card through RH the motherboard stopped communicating to Repetier Host. Is this normal?

I have a better power supply (closed frame 30A) I just need to wire up. I will be out of town for a couple of days, so it may be till Friday before I can continue testing.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

27

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Finally back and ready to test the new firmware.  Have one question...  In order to test the bed leveling what pin is assigned for the servo?  Just started looking through the updated firmware and have not found it yet assigned for sanguinololu board?

So far a quick upload to my spare Sanguinolou the VIKI code that was incorporated looks to be working well and the SDCard is working nicely.  Need to get everything hooked up and run some full tests tomorrow

28

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

OK then.

Fixed my power supply and have some interesting (although expected) results.

So. I have my clone installed and Adrians version of the latest Marlin from the first post. I changed fastio.h and pins.h files to reflect an older version of pin numbering. From my post earlier, without this I cannot even command my printer in RH, let alone test SD support. I also change Y endstop to use the E endstop and physically move it to that port. So now I make a new gcode file of 10mm cube and store it on a Kingston SD card. First try freezes the printer. I realize I did not use 8.3 format for the file (RH does not auto extension for you) and make a new file with the correct naming format. The second try works fine. It prints the entire cube no problem, and RH is still communicating with the printer during that time. Although, I would like to note that there seems to be a 'stall' between teh execution of the start code and the main code. By this I mean RH did not get feedback for temperature for close to 90 seconds. It started printing just as I was about to shut everything down. I do not know if this is normal or not. I need to comb some other forums for odd behavior with SD and Marlin.

I install the original SD printrboard and load that firmware as well. (I should take note, I have changed my bootloader from HID to CDC, so someone may want to try turning on SD support and seeing iif they can load it with HID bootloader). Its the same firmware, and same revision printrboard. I can see the SD card in RH. I start the same exact print, and get the same 90 second 'stall' and then it starts printing.

And right in the 5th layer, the printer freezes. I mean, it stops like the CPU has stopped clocking. There is no communication to RH. The heaters are stuck on and no control. My multimeter shows voltage on the extruder heater and it is rising in temperature. I have to unplug the printer. And I am not surprised. I have been trying to get a 20x4 LCD and SD working on this for over 2 months now. I was hoping that this newest version of Marlin would solve the problem, but nope. Let me re-iterate the results: A $40 printrboard clone from Geeetech works. My Solidoodle printrboard does not work. It keeps freezing in the middle of a print. I have checked my board for damage. I have checked both boards for any differences. The only differences between these two boards are the ones Solidoodle put in for thier usefulness and have no bearing on the SD port (DC jack, full sized USB, extra 12V headers). None of these changes could possibly make a difference. Even the chips are all the same. Well, the crystal is different but I would have to be convinced pretty thoroughly that it makes a difference here.

So there is one possible reason why my board does not work. I installed the headers on the expansion ports, which requires sucking out the solder that was already in there. It is quite possible that a solder splatter is somehow causing a problem on my board. Although, I have ohmed out every trace, and normal use of my printer is perfect.

What we need here is someone else who has a printrboard who is willing to solder in a header onto their E endstop and willing to test SD support.

If they do, here are the changes I have made:

fastio.h

#if defined (__AVR_AT90USB1287__) || defined (__AVR_AT90USB1286__) || defined (__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
// SPI
#define    SCK                    DIO21
#define    MISO                DIO23
#define    MOSI                DIO22
#define    SS                    DIO26

// change for your board
#define    DEBUG_LED        DIO31 /* led D5 red */

/*
pins
*/
#define DIO0_PIN        PIND0
#define DIO0_RPORT      PIND
#define DIO0_WPORT      PORTD
#define DIO0_PWM            NULL
#define DIO0_DDR        DDRD

#define DIO1_PIN        PIND1
#define DIO1_RPORT      PIND
#define DIO1_WPORT      PORTD
#define DIO1_PWM            NULL
#define DIO1_DDR        DDRD

#define DIO2_PIN        PIND2
#define DIO2_RPORT      PIND
#define DIO2_WPORT      PORTD
#define DIO2_PWM            NULL
#define DIO2_DDR        DDRD

#define DIO3_PIN        PIND3
#define DIO3_RPORT      PIND
#define DIO3_WPORT      PORTD
#define DIO3_PWM            NULL
#define DIO3_DDR        DDRD

#define DIO4_PIN        PIND4
#define DIO4_RPORT      PIND
#define DIO4_WPORT      PORTD
#define DIO4_PWM            NULL
#define DIO4_DDR        DDRD

#define DIO5_PIN        PIND5
#define DIO5_RPORT      PIND
#define DIO5_WPORT      PORTD
#define DIO5_PWM            NULL
#define DIO5_DDR        DDRD

#define DIO6_PIN        PIND6
#define DIO6_RPORT      PIND
#define DIO6_WPORT      PORTD
#define DIO6_PWM            NULL
#define DIO6_DDR        DDRD

#define DIO7_PIN        PIND7
#define DIO7_RPORT      PIND
#define DIO7_WPORT      PORTD
#define DIO7_PWM            NULL
#define DIO7_DDR        DDRD

#define DIO8_PIN        PINE0
#define DIO8_RPORT      PINE
#define DIO8_WPORT      PORTE
#define DIO8_PWM            NULL
#define DIO8_DDR        DDRE

#define DIO9_PIN        PINE1
#define DIO9_RPORT      PINE
#define DIO9_WPORT      PORTE
#define DIO9_PWM            NULL
#define DIO9_DDR        DDRE

#define DIO10_PIN       PINC0
#define DIO10_RPORT     PINC
#define DIO10_WPORT     PORTC
#define DIO10_PWM            NULL
#define DIO10_DDR       DDRC

#define DIO11_PIN       PINC1
#define DIO11_RPORT     PINC
#define DIO11_WPORT     PORTC
#define DIO11_PWM            NULL
#define DIO11_DDR       DDRC

#define DIO12_PIN       PINC2
#define DIO12_RPORT     PINC
#define DIO12_WPORT     PORTC
#define DIO12_PWM            NULL
#define DIO12_DDR       DDRC

#define DIO13_PIN       PINC3
#define DIO13_RPORT     PINC
#define DIO13_WPORT     PORTC
#define DIO13_PWM            NULL
#define DIO13_DDR       DDRC

#define DIO14_PIN       PINC4
#define DIO14_RPORT     PINC
#define DIO14_WPORT     PORTC
#define DIO14_PWM            NULL
#define DIO14_DDR       DDRC

#define DIO15_PIN       PINC5
#define DIO15_RPORT     PINC
#define DIO15_WPORT     PORTC
#define DIO15_PWM            NULL
#define DIO15_DDR       DDRC

#define DIO16_PIN       PINC6
#define DIO16_RPORT     PINC
#define DIO16_WPORT     PORTC
#define DIO16_PWM            NULL
#define DIO16_DDR       DDRC

#define DIO17_PIN       PINC7
#define DIO17_RPORT     PINC
#define DIO17_WPORT     PORTC
#define DIO17_PWM            NULL
#define DIO17_DDR       DDRC

#define DIO18_PIN       PINE6
#define DIO18_RPORT     PINE
#define DIO18_WPORT     PORTE
#define DIO18_PWM            NULL
#define DIO18_DDR       DDRE

#define DIO19_PIN       PINE7
#define DIO19_RPORT     PINE
#define DIO19_WPORT     PORTE
#define DIO19_PWM            NULL
#define DIO19_DDR       DDRE

#define DIO20_PIN       PINB0
#define DIO20_RPORT     PINB
#define DIO20_WPORT     PORTB
#define DIO20_PWM            NULL
#define DIO20_DDR       DDRB

#define DIO21_PIN       PINB1
#define DIO21_RPORT     PINB
#define DIO21_WPORT     PORTB
#define DIO21_PWM            NULL
#define DIO21_DDR       DDRB

#define DIO22_PIN       PINB2
#define DIO22_RPORT     PINB
#define DIO22_WPORT     PORTB
#define DIO22_PWM            NULL
#define DIO22_DDR       DDRB

#define DIO23_PIN       PINB3
#define DIO23_RPORT     PINB
#define DIO23_WPORT     PORTB
#define DIO23_PWM            NULL
#define DIO23_DDR       DDRB

#define DIO24_PIN       PINB4
#define DIO24_RPORT     PINB
#define DIO24_WPORT     PORTB
#define DIO24_PWM            NULL
#define DIO24_DDR       DDRB

#define DIO25_PIN       PINB5
#define DIO25_RPORT     PINB
#define DIO25_WPORT     PORTB
#define DIO25_PWM            NULL
#define DIO25_DDR       DDRB

#define DIO26_PIN       PINB6
#define DIO26_RPORT     PINB
#define DIO26_WPORT     PORTB
#define DIO26_PWM            NULL
#define DIO26_DDR       DDRB

#define DIO27_PIN       PINB7
#define DIO27_RPORT     PINB
#define DIO27_WPORT     PORTB
#define DIO27_PWM            NULL
#define DIO27_DDR       DDRB

#define DIO28_PIN       PINA0
#define DIO28_RPORT     PINA
#define DIO28_WPORT     PORTA
#define DIO28_PWM            NULL
#define DIO28_DDR       DDRA

#define DIO29_PIN       PINA1
#define DIO29_RPORT     PINA
#define DIO29_WPORT     PORTA
#define DIO29_PWM            NULL
#define DIO29_DDR       DDRA

#define DIO30_PIN       PINA2
#define DIO30_RPORT     PINA
#define DIO30_WPORT     PORTA
#define DIO30_PWM            NULL
#define DIO30_DDR       DDRA

#define DIO31_PIN       PINA3
#define DIO31_RPORT     PINA
#define DIO31_WPORT     PORTA
#define DIO31_PWM            NULL
#define DIO31_DDR       DDRA


#define DIO32_PIN       PINA4
#define DIO32_RPORT     PINA
#define DIO32_WPORT     PORTA
#define DIO32_PWM            NULL
#define DIO32_DDR       DDRA

#define DIO33_PIN       PINA5
#define DIO33_RPORT     PINA
#define DIO33_WPORT     PORTA
#define DIO33_PWM            NULL
#define DIO33_DDR       DDRA

#define DIO34_PIN       PINA6
#define DIO34_RPORT     PINA
#define DIO34_WPORT     PORTA
#define DIO34_PWM            NULL
#define DIO34_DDR       DDRA

#define DIO35_PIN       PINA7
#define DIO35_RPORT     PINA
#define DIO35_WPORT     PORTA
#define DIO35_PWM            NULL
#define DIO35_DDR       DDRA

#define DIO36_PIN       PINE4
#define DIO36_RPORT     PINE
#define DIO36_WPORT     PORTE
#define DIO36_PWM            NULL
#define DIO36_DDR       DDRE

#define DIO37_PIN       PINE5
#define DIO37_RPORT     PINE
#define DIO37_WPORT     PORTE
#define DIO37_PWM            NULL
#define DIO37_DDR       DDRE

#define DIO38_PIN       PINF0
#define DIO38_RPORT     PINF
#define DIO38_WPORT     PORTF
#define DIO38_PWM            NULL
#define DIO38_DDR       DDRF

#define DIO39_PIN       PINF1
#define DIO39_RPORT     PINF
#define DIO39_WPORT     PORTF
#define DIO39_PWM            NULL
#define DIO39_DDR       DDRF

#define DIO40_PIN       PINF2
#define DIO40_RPORT     PINF
#define DIO40_WPORT     PORTF
#define DIO40_PWM            NULL
#define DIO40_DDR       DDRF

#define DIO41_PIN       PINF3
#define DIO41_RPORT     PINF
#define DIO41_WPORT     PORTF
#define DIO41_PWM            NULL
#define DIO41_DDR       DDRF

#define DIO42_PIN       PINF4
#define DIO42_RPORT     PINF
#define DIO42_WPORT     PORTF
#define DIO42_PWM            NULL
#define DIO42_DDR       DDRF

#define DIO43_PIN       PINF5
#define DIO43_RPORT     PINF
#define DIO43_WPORT     PORTF
#define DIO43_PWM            NULL
#define DIO43_DDR       DDRF

#define DIO44_PIN       PINF6
#define DIO44_RPORT     PINF
#define DIO44_WPORT     PORTF
#define DIO44_PWM            NULL
#define DIO44_DDR       DDRF

#define DIO45_PIN       PINF7
#define DIO45_RPORT     PINF
#define DIO45_WPORT     PORTF
#define DIO45_PWM            NULL
#define DIO45_DDR       DDRF

#define AIO0_PIN PINF0
#define AIO0_RPORT PINF
#define AIO0_WPORT PORTF
#define AIO0_PWM            NULL
#define AIO0_DDR DDRF

#define AIO1_PIN PINF1
#define AIO1_RPORT PINF
#define AIO1_WPORT PORTF
#define AIO1_PWM            NULL
#define AIO1_DDR DDRF

#define AIO2_PIN PINF2
#define AIO2_RPORT PINF
#define AIO2_WPORT PORTF
#define AIO2_PWM            NULL
#define AIO2_DDR DDRF

#define AIO3_PIN PINF3
#define AIO3_RPORT PINF
#define AIO3_WPORT PORTF
#define AIO3_PWM            NULL
#define AIO3_DDR DDRF

#define AIO4_PIN PINF4
#define AIO4_RPORT PINF
#define AIO4_WPORT PORTF
#define AIO4_PWM            NULL
#define AIO4_DDR DDRF

#define AIO5_PIN PINF5
#define AIO5_RPORT PINF
#define AIO5_WPORT PORTF
#define AIO5_PWM            NULL
#define AIO5_DDR DDRF

#define AIO6_PIN PINF6
#define AIO6_RPORT PINF
#define AIO6_WPORT PORTF
#define AIO6_PWM            NULL
#define AIO6_DDR DDRF

#define AIO7_PIN PINF7
#define AIO7_RPORT PINF
#define AIO7_WPORT PORTF
#define AIO7_PWM            NULL
#define AIO7_DDR DDRF

//-- Begin not supported by Teensyduino
//-- don't use Arduino functions on these pins pinMode/digitalWrite/etc
#define DIO46_PIN       PINE2
#define DIO46_RPORT     PINE
#define DIO46_WPORT     PORTE
#define DIO46_PWM            NULL
#define DIO46_DDR       DDRE

#define DIO47_PIN       PINE3
#define DIO47_RPORT     PINE
#define DIO47_WPORT     PORTE
#define DIO47_PWM            NULL
#define DIO47_DDR       DDRE
//-- end not supported by Teensyduino

and pins.h

#if MOTHERBOARD == 8 || MOTHERBOARD == 81
#define KNOWN_BOARD 1
#define AT90USB 1286  // Disable MarlinSerial etc.

#ifndef __AVR_AT90USB1286__
#error Oops!  Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
#endif

#define LARGE_FLASH        true

#define X_STEP_PIN          28 //A0
#define X_DIR_PIN           29 //A1
#define X_ENABLE_PIN       19 //E7

#define Y_STEP_PIN          30  //A2
#define Y_DIR_PIN           31  //A3
#define Y_ENABLE_PIN       18  //E6

#define Z_STEP_PIN          32  //A4
#define Z_DIR_PIN           33  //A5
#define Z_ENABLE_PIN       17  //C7

#define E0_STEP_PIN         34  //A6
#define E0_DIR_PIN          35  //A7
#define E0_ENABLE_PIN      13  //C3

#define HEATER_0_PIN       15  //C5 Extruder
#define HEATER_1_PIN       -1
#define HEATER_2_PIN       -1
#define HEATER_BED_PIN     14  //C4 Bed
#define FAN_PIN            16  //C6 Fan
// You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h
// for the fan and Teensyduino uses a different pin mapping.

#if MOTHERBOARD == 8  // Teensylu
  #define X_STOP_PIN         25  //B5
  #define Y_STOP_PIN         26  //B6
  #define Z_STOP_PIN         27  //B7
  #define TEMP_0_PIN          7  // Extruder / Analog pin numbering
  #define TEMP_BED_PIN        6  // Bed / Analog pin numbering
#else  // Printrboard
  #define X_STOP_PIN         47  //E3
  #define Y_STOP_PIN          37  //E5
  #define Z_STOP_PIN         36  //E4
  #define TEMP_0_PIN          1  // Extruder / Analog pin numbering
  #define TEMP_BED_PIN        0  // Bed / Analog pin numbering
#endif

#define TEMP_1_PIN         -1
#define TEMP_2_PIN         -1

#define SDPOWER            -1
#define SDSS                26  //B6
#define LED_PIN            -1
#define PS_ON_PIN          -1
#define KILL_PIN           -1
#define ALARM_PIN          -1

     #define SDCARDDETECT -1
     
#ifndef SDSUPPORT
// these pins are defined in the SD library if building with SD support
  #define SCK_PIN           21  //B1
  #define MISO_PIN         23  //B3
  #define MOSI_PIN         22  //B2
#endif

#ifdef ULTRA_LCD
   #ifdef NEWPANEL
     //we have no buzzer installed
     #define BEEPER -1
     //LCD Pins
     #define LCD_PINS_RS        41  //F3
     #define LCD_PINS_ENABLE    1  //D1
     #define LCD_PINS_D4        42  //11  //C1
     #define LCD_PINS_D5        43  //9  //E1
     #define LCD_PINS_D6        44  //6  //D6
     #define LCD_PINS_D7        45  //4  //D4
 
     //The encoder and click button
     #define BTN_EN1 2  //D2  must be a hardware interrupt pin
     #define BTN_EN2 3 //D3  must be hardware interrupt pin
     #define BTN_ENC 0  //D0  the click
     //not connected to a pin currently
     //#define SDCARDDETECT -1
    
     //from the same bit in the RAMPS Newpanel define
     //encoder rotation values
     #define encrot0 0
     #define encrot1 2
     #define encrot2 3
     #define encrot3 1
    
     #define BLEN_C 2
     #define BLEN_B 1
     #define BLEN_A 0
 
   #endif //Newpanel
 #endif //Ultipanel

#endif  // MOTHERBOARD == 8 (Teensylu) or 81 (Printrboard)
Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

29

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

When I was tinkering with modifying a web based printer host, I oo noticed that Marlin gives very little feedback on heating after the print job starts. This is especially true for the bed, which isn't updated externally (through serial as opposed to LCD).

30

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Update: I just confirmed working status of the auto run feature in Marlin. If you put a gcode on the root of the SD card and name it auto0.g, you can put it into the printer and it will auto run from start-up.

Pros: No PC or LCD needed. Really nice option for batch/farm printing.

Cons: You cannot pre-heat your bed unless you have really good start g-code. Also, you should be very sure of how well your printer is running. If you cannot walk away from  print job after hitting the RUN button in RH, then you should not use this either.

PS: As I stated earlier, I cannot get my printrboard to run a print job from the SD without freezing mid-print. I do not have problems with a clone printrboard. It would be nice if someone could volunteer to see if they can get thier SD card working on another stock Solidoodle.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

31

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Be aware, that function (auto start) is in the midst of changing. It needs to be enabled from within Firmware (its commented out), and then needs to be enabled via an LCD or through Gcode afterwards.  It wont 'just work' any more, for a bunch of reasons to do with how the code is being matured...

And re bed temp reporting - all versions certainly since May have reported current bed temp in the same string as the extruder... and it also includes current bed power (1..255) .. So bed temp reporting is identical to all reporting for the extruders - certainly since May anyway.

And re preheating - not sure why that would be an issue, since any sane start code should contain M109 for the bed and extruder.. which is a set temp and wait command.... M104 isn't the right route... and yes all of this supposes that the proposed move to using 'tool change' g-code and the G10 and T commands never eventuates (given its 18mnths later, and it still hasn't moved past furious initial discussion, I suspect this one will be a long time coming).

Anyway - M109 is designed to do exactly what one would need in an auto-start situation... assuming you are keeping abreast of how auto-start is changing.

32

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

adrian wrote:

Be aware, that function (auto start) is in the midst of changing. It needs to be enabled from within Firmware (its commented out), and then needs to be enabled via an LCD or through Gcode afterwards.  It wont 'just work' any more, for a bunch of reasons to do with how the code is being matured...

And re bed temp reporting - all versions certainly since May have reported current bed temp in the same string as the extruder... and it also includes current bed power (1..255) .. So bed temp reporting is identical to all reporting for the extruders - certainly since May anyway.

And re preheating - not sure why that would be an issue, since any sane start code should contain M109 for the bed and extruder.. which is a set temp and wait command.... M104 isn't the right route... and yes all of this supposes that the proposed move to using 'tool change' g-code and the G10 and T commands never eventuates (given its 18mnths later, and it still hasn't moved past furious initial discussion, I suspect this one will be a long time coming).

Anyway - M109 is designed to do exactly what one would need in an auto-start situation... assuming you are keeping abreast of how auto-start is changing.

Yup, start code is the key. But for some of us (like me who uses glass and stock heater), M109 is not enough since I prefer to let my bed 'soak' the heat a bit to make sure the glass is toasty. a G4 dwell would also need to be used. Hence the reason why I said there is a need for advanced start gcode and good familiarity with ones printer before using the auto run.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

33 (edited by phillysteak527 2013-11-07 04:08:41)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

I'm attempting to download the new Firmware to a new SD3 (Printrboard) but I'm having issues. I'm following this guide to download firmware to the SD3 "wiki.solidoodle.com/update-firmware" but when I try to download the firmware using BootloaderHID I get this error "error reading intel hex file "Marlin.cpp.hex." Any advice? I'd like to try this new firmware, I have an LCD/SD/Encoder wired up already.

I compiled the firmware in Arduino 0022 using the [usbtinyisp]Teensylu/Printrboard

EDIT: Or could it be a driver issue, when I put the Printrboard into programming mode it comes up as a "USB input Device" and does not associate with a COM port.

34

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

phillysteak527 wrote:

I'm attempting to download the new Firmware to a new SD3 (Printrboard) but I'm having issues. I'm following this guide to download firmware to the SD3 "wiki.solidoodle.com/update-firmware" but when I try to download the firmware using BootloaderHID I get this error "error reading intel hex file "Marlin.cpp.hex." Any advice? I'd like to try this new firmware, I have an LCD/SD/Encoder wired up already.

I compiled the firmware in Arduino 0022 using the [usbtinyisp]Teensylu/Printrboard

EDIT: Or could it be a driver issue, when I put the Printrboard into programming mode it comes up as a "USB input Device" and does not associate with a COM port.

Turn off LCD and SD support and see if it will compile and try to download. I bet you will be able to. Then enable SD and compile again. I am not sure of the results.

Basically, enabling the LCD and SD support almost doubles the size of the firmware download. From googling the error output from the Lufa HID bootloader code, the error is a result of the file size being too large for it to handle. The file itself is not too large to fit in the motherboard, its just too large for the bootloader to handle. I was able to get passed this by programming the CDC bootloader instead. You may be able to enable SD support alone with the HID bootloader.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

35

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

You are correct, I am contemplating either going with an Rasp Pi setup for remote printing or converting to a CDC bootloader...

This is my first printer that uses HID, what is the benefit to using HID versus CDC?

36

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

phillysteak527 wrote:

You are correct, I am contemplating either going with an Rasp Pi setup for remote printing or converting to a CDC bootloader...

This is my first printer that uses HID, what is the benefit to using HID versus CDC?

From Lincomatics blog, the biggest difference is the HID does not require USB driver support, where CDC does require a simple driver install (in my case, driver was already installed for other things). Also, CDC uses avrdude (another install). Once you have the driver and avrdude installed, it behaves just like the HID driver (command prompt).

Rasp Pi vs LCD: If you have gotten this close, I would like to ask you to do me a favor. I am hoping to see SD support without changing HID bootloader with the stock Solidoodle Printrboard. If someone can accomplish that, then the next step is to print something simple from the SD card. As I have stated, my motherboard freezes mid=print. I would appreciate it if this can be confirmed with another Solidoodle, or if my board is borked (I will take responsibility for it being borked).

Personally, Here is what I have dealt with:

Converting Solidoodle Printrboard to use LCD: Cost of LCD kit was $25 on sale, but I could not get the external SD port working on the Smart Reprap kit. So now I have decided to wire it from scratch. Adding LCD support requires adding headers to the expansion ports and also the E-endstop. This requires removing filled solder holes. The Y-endstop has to  be reported to use the E-endstop and the connector moved over. The latest version of Marlin (any version of Marlin older than Dec 2012) needs to be fixed for the printrboard, pin mappings are messed up for SD support. All of this requires alot of understanding of the firmware, the Printrboard schematic, de-soldering and soldering of new header, and wiring since the only ready kit that fits the printrboard is out of stock (besides its expensive). Oh, and you need to also purchase an $11 tinyUSB programmer to change the bootloader in order to fit the larger firmware.

A Rasp Pi requires a $80 investment for all the pieces you need. It then requires linux knowledge to get everything installed and setup. But a good tutorial should get even the most clueless (like myself) to the endgame without any real trouble.

Conclusion: LCD is a downright hassle, even for someone like me who likes to hack away things electrical, microchip, and otherwise. And in the end, I cannot even confirm if it will work. Purchasing a kit (if you can find one) is $60. The programmer is $11. You will also need headers and solder equipment. If you build the kit yourself, you are probably only saving yourself $35. But this adds alot of time and I would not recommend it to most people (maybe only those that have experience hand-soldering SMD devices). The Pi is an investment, but I would say an easier and cleaner solution in the long run.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

37

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

I would like to have the control panel even with a RPI setup for setup and mechanical debugging.

I have already installed male headers on both expansion ports (why the hell would SD fill those holes....) but I do not currently have a good grasp on the details of the firmware. I'm more than willing to delve deeper into the firmware and try to solve the SD issues. I currently work as an engineer at Motorola Solutions and think the issue with uploading to the mainboard through the HID bootloader (I've had this problem on other devices) might be how it allocated ram. If the file size is larger than the allocated ram for the bootloader pre-load it will fail. There may be a console command to set the pre-load ram size. Once I can get the bootloader to load the firmware WITH SD and LCD enabled I will get into getting the code to work.

Does anyone have a link to a good HID bootloader that has available source code? There should be no reason we cannot upload firmware that will physically fit on our device.

38 (edited by adrian 2013-11-08 10:03:41)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Can you guys maybe take the discussion out of the thread for my firmware beta if you plan on more discussion about printrboard specifics or raspberry Pi.. The Printrboard has its own thread and the discussion isn't relevant to Marlin specifically. But happy to help you both troubleshoot what I can on the printboard bootloader side of things. .

Cheers, I want to keep this thread on topic for the purposes I started it for - working on the next release of SD Marlin.

39 (edited by adrian 2013-11-24 00:31:04)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Hey Hazer - its just dawned on me

There is a big difference in timing between a resonator and a crystal. To the extent that you have to set different AVR Fuses between the two.
If your GeeeTech clone still uses a resonator like most of the other Teensylu clones - then it will have Resonator fuses set correctly.
As the Solidoodle version has switched that to a Crystal, then I assume they have correctly adjusted the fuses on the 1286a.

If this is all greek to anyone, have a read of https://www.sparkfun.com/tutorials/95 - specifically the section titled 'Fuse Bits' but only after you've read the first bits if you are unsure about the differences in clock sources.

Anyway - if Solidoodle ever send me a Printrboard I could probably suss it pretty quickly. Its fairly impossible to do remotely in any timely manner smile

40

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

I'm going to try and give this a go this evening. Looks good! Thanks!

41

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

adrian wrote:

Hey Hazer - its just dawned on me

There is a big difference in timing between a resonator and a crystal. To the extent that you have to set different AVR Fuses between the two.
If your GeeeTech clone still uses a resonator like most of the other Teensylu clones - then it will have Resonator fuses set correctly.
As the Solidoodle version has switched that to a Crystal, then I assume they have correctly adjusted the fuses on the 1286a.

If this is all greek to anyone, have a read of https://www.sparkfun.com/tutorials/95 - specifically the section titled 'Fuse Bits' but only after you've read the first bits if you are unsure about the differences in clock sources.

Anyway - if Solidoodle ever send me a Printrboard I could probably suss it pretty quickly. Its fairly impossible to do remotely in any timely manner smile

I finally got around to it. I just pulled the fuse values in my board. Lfuse was 0xDE which is the recommended fuse setting for a resonator. It is also the fuse value that is posted on the wiki for updating the Rev E using a usbtiny (this may need to be changed if the is the problem). For the life of me, I cannot remember if I changed the fuse values when I changed the bootloader. I could have sworn that when I read out the values, it had the JTAG disabled so I left well enough alone. Unfortunately, someone with a programmer and another Rev E board will have to verify what the stock fuse values are. Which lately I have been feeling like I am the only person who has gone this far with this board tongue. Anyway, I set my fuse value for the crystal and later today I will re-install the stock board and test SD card functions.

I hope this solves the problem (would love it if it all came down to my user error). Even still, there just feels like so much work just to get the functionality from the board. As it is, I now have the fun task of adding yet another filled-up header to install a g-code fan. Seriously, they need to stop filling the damn holes, or just nut-up and pay for the headers to be installed. You know how easy it would be to sell add-ons if the headers were already there? (hint hint Solidoodle).

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

42 (edited by adrian 2013-11-25 15:06:44)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

heading to bed.. but just thought i'd let you know - holes are filled because the boards are wave soldered. This means that the holes get filled as a by product of being tinned and empty. The other option is to yes populate them - but headers are actually damn pricey as a factor of the BOM besides the main silicon, so I understand why they aren't there if they don't need them.

Now if the boards were baked with solderpaste in an IR oven - then yeah the holes would be empty, but the per-unit cost would be higher as the process is longer in terms of manufacture.

So yeah - they either swallow a higher BoM cost, or a higher Manufacture cost - or we get what we get wink And its not deliberately done so to speak

43

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

OK. Bad news again. Installed the board. Printed calibration cube through RH with no problems (new fuse settings did not break the board). Popped in the same SD card I have working in the clone and ..... it froze yet again. I really thought this time it would have worked. A bad fuse setting makes perfect sense as the software SPI part of the firmware would be effected by the difference between a crystal and a resonator with matching fuse settings.

All I can say is, at this point, someone else with a Solidoodle Printrboard will need to volunteer to get their hands dirty and either verify the same results I have, or prove that my board alone is the problem. There is not much else I can do at this point. I will wrap up my LCD install using the clone and post up a very long guide of how it was accomplished, knowing that it did not work with my stock motherboard.

Chuck Bittner is a quadriplegic gamer who is petitioning the major console developers to include internal button remapping in all console games. You can help.
Sign Chuck Bittners petition

44 (edited by adrian 2013-11-26 05:02:46)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Hazer wrote:

OK. Bad news again. Installed the board. Printed calibration cube through RH with no problems (new fuse settings did not break the board). Popped in the same SD card I have working in the clone and ..... it froze yet again. I really thought this time it would have worked. A bad fuse setting makes perfect sense as the software SPI part of the firmware would be effected by the difference between a crystal and a resonator with matching fuse settings.

All I can say is, at this point, someone else with a Solidoodle Printrboard will need to volunteer to get their hands dirty and either verify the same results I have, or prove that my board alone is the problem. There is not much else I can do at this point. I will wrap up my LCD install using the clone and post up a very long guide of how it was accomplished, knowing that it did not work with my stock motherboard.

I've offered if I got sent a board I'd fix the issue for them, but they didn't seem to be interested. Apparently an intern was going to take care of it - so there might be some resolution that is suddenly announced way off in the future... or maybe not *shrug*.

But yeah, without an OEM Solidoodle Printrboard in my hands, theres not a lot more I can do remotely either I'm afraid. And indeed a shame it wasn't something as simple as the fuse settings (they always cause hassles like this - surprised I didn't twig to it earlier... but in the end it wasn't relevant anyway so meh...)

Thanks for your efforts to date in trying to resolve the issue though Hazer. Much appreciated - this can be lonely work I know smile

45

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Hi all, I was absent from the forum for a while, I didn't have much time to tinker with my SD lately... And my print quality is now good enough that I am focusing more on printing rather than modifying.

But I am very excited by the auto bed leveling feature. Great work adrian for including it! I will give it a try this weekend, has anybody tried it already? I searched the forum but couldn't find anyone sharing installation of the servo and results. Anything happened in the last couple of months that I missed?

46 (edited by adrian 2013-11-27 12:14:46)

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Rincewind wrote:

Hi all, I was absent from the forum for a while, I didn't have much time to tinker with my SD lately... And my print quality is now good enough that I am focusing more on printing rather than modifying.

But I am very excited by the auto bed leveling feature. Great work adrian for including it! I will give it a try this weekend, has anybody tried it already? I searched the forum but couldn't find anyone sharing installation of the servo and results. Anything happened in the last couple of months that I missed?

Welcome backs!

Yes, I dont think anyone has fitted anything 'production' wise.... I briefly played with using the E3D itself and some copper tape squares as the circuit - but not sure of anyone replicating the intended 'original' setup as described in the source code.

Slic3r 1.0RC1 is out; thats probably the biggest other change/advancement... oh and there is an SD4 now which is basically an SD3.5....

47

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

adrian wrote:

Welcome backs!

Yes, I dont think anyone has fitted anything 'production' wise.... I briefly played with using the E3D itself and some copper tape squares as the circuit - but not sure of anyone replicating the intended 'original' setup as described in the source code.

Slic3r 1.0RC1 is out; thats probably the biggest other change/advancement... oh and there is an SD4 now which is basically an SD3.5....

Thanks for the quick update! I will give it a try then! Hopefully you will hear something from me soon, I have a couple of ideas on how to fit the servo.

I saw the news about the SD4... It looks slick but I'm not too enthused, so many missed opportunities!

48

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

I got about 90% of the design for the mount done and have the code working on spare ramps board.

Just need to print and put it all together to test.

BTW..  Design is based on using an Hitech HS 55 Mini Servo I had laying around. 

Attached is the AutoCAD rendering I have so far

Will keep you all updated

Post's attachments

Servo arm.jpg
Servo arm.jpg 210.55 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

49

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

Adrian,

I've gone through the firmware and looking at how the auto bed leveling works but I'm kind of confused. After the probe has taken its point and recorded the proper position, is the code set up to use the Z axis to compensate automatically(like a delta printer would?) or is it set up to control a couple of small servos that can turn the leveling screws? Or is it left open ended?

or am I blind?

Thanks man, i have an idea to use my E3D as a probe with a force sensor. The firmware is kind of daunting to a Mechanical Eng. like myself. I give you so much credit for this, good work.

50

Re: Beta of latest Marlin_V1 w/ Solidoodle Patches (Oct-13) (All Boards)

cozierad wrote:

After the probe has taken its point and recorded the proper position, is the code set up to use the Z axis to compensate automatically(like a delta printer would?)

Yes. Let's hope the Z axis doesn't have backlash smile