Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Reset statt Kill beim Ramps 1.4 mit Marlin

geschrieben von TobyTetzi123 
Reset statt Kill beim Ramps 1.4 mit Marlin
25. October 2015 17:59
Hallo,

auf dem "Ramps 1.4" mit "RepRapDiscount Smart Controller" oder dem "RepRapDiscount Full Graphic Smart Controller"
endet ein Druck auf den Display Taster in einer Endlosschleife.
Das Board ist "Killed".

Da ich auch noch ein MKS Gen 2Z 1.1 besitze, weiß ich, das dort der Taster einen Reset des Prozessors auslöst.

Nun habe ich eine Möglichkeit gefunden, auch mit dem Ramps 1.4 einen Reset auszulösen.

In der Datei "Marlin_main.cpp" folgende Zeilen / Funktion suchen und hiermit ersetzen:

Quote
void kill(const char *lcd_msg) {

#if ENABLED(ULTRA_LCD)
lcd_setalertstatuspgm(lcd_msg);
#endif

cli(); // Stop interrupts
disable_all_heaters();
disable_all_steppers();

#if HAS_POWER_SWITCH
pinMode(PS_ON_PIN, INPUT);
#endif

SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_ERR_KILLED);

// FMC small patch to update the LCD before ending
sei(); // enable interrupts
for (int i = 5; i--; lcd_update()) delay(200); // Wait a short time
cli(); // disable interrupts
suicide();

//TobyTetzi Beginn
//Software Reset statt Endlosschleife
// while(1) { /* Intentionally left empty */ } // Wait for reset
asm volatile (" jmp 0");
//TobyTetzi Ende
}



Statt der Endlosschleife ins Niegendwo springe ich mit dem "jmp 0" zum Programmspeicher Anfang.
Das löst den Software Reset aus.

Ich benutze Marlin 1.1.0 RC, sollte aber auch bei alten Versionen gehen.
Ich hoffe es kann gebraucht werden.

Gruß Toby
Re: Reset statt Kill beim Ramps 1.4 mit Marlin
26. October 2015 10:46
Hallo Toby,

smarte Lösung, schön das du sie hier vorstellst!

Grüße Jörg


DIY Graber i3, based on Ramps 1.4 / LCD-SD-support / Marlin / MK8 upgraded direct drive

Home of Graber i3 reloaded, based on Ramps 1.4_TMC2100 / LCD-SD-support / Marlin / MK8 upgraded direct drive


Und sollte ich vergessen haben, jemanden zu beschimpfen, dann bitte ich um Verzeihung!
Johannes Brahms
Re: Reset statt Kill beim Ramps 1.4 mit Marlin
27. October 2015 11:08
Die Endlosschleife im kill() ist da, weil der Host den Reset nicht mit bekommt und munter weiter sendet - mit unbekanten Folgen.

Falls du einen Resetknopf willst setze besser direkt bei der Tastenabfrage an.

if (killCount >= KILL_DELAY) kill(PSTR(MSG_KILLED)); (MarlinMain.cpp so um Zeile 6967)
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen