Hey,
zunächst Danke an Nibbels für die Klasse Firmware!!!
Ich habe bisher genau einen Druck mit der Original Firmware gemacht und zwar den ersten Testdruck...
Mein Drucker steht zwar direkt am Schreibtisch trotzdem Benutze ich Octopi zum Drucken meiner Teile.
Ich möchte den Raspi gerne in den Drucker integrieren, momentan liegt er einfach daneben...
Dabei stört mich das USB Kabel an der Seite.
Nach kurzer Recherche sollte es möglich sein Octopi über den Hardware Serial des Raspi laufen zu lassen.
An unserem Board sind auch die Pins für Serial3 als reserve Pins rausgeführt.
Ich hab mich zwar schon ein bisschen in der Firmware umgeschaut und bin auch nicht ganz doof was das Programieren angeht, aber bevor ich jetzt lange suche dachte ich mir ich frage den Mann der die Firmware auswendig rezensieren kann
Ist es möglich die Serielle Kommunikation auf den Serial3 umzubiegen ohne die ganze Firmware auf den Kopf zu stellen???
Grüße David
Serial3 nutzen um Daten an den Drucker zu senden?!
-
- Gelegenheitsdrucker
- Beiträge: 22
- Registriert: So 22. Okt 2017, 02:30
- Wohnort: Hannover
- Has thanked: 12 times
- Been thanked: 6 times
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Hi!
Das hatte ich auch ursprünglich vor, bevor mein alter Car-PC obsolet wurde und als Druckserver ein neues Leben fand.
Grundsätzlich schien mir das Vorhaben gut umsetzbar zu sein. Der Ansatzpunkt hierfür sind die HAL.h und HAL.cpp
Grundsätzlich gäbe es (mindestens) zwei Möglichkeiten, auf Serial3 umzustellen:
- 1) In der HAL.cpp die Registernamen auf die USART3 Register umstellen (-> die lokale Implementierung der Seriellen Schnittstelle anpassen)
-.. 1a) alle Registernamen direkt abändern
-.. 1b) eine Auswahlmöglichkeit zwischen USART0 und USART3 schaffen (per #define z.B.) und die Register dann entsprechend auswählen -> hoher Aufwand, aber universeller nutzbar
- 2) In der HAL.h im Bereich um Zeile 250 eine dritte Wahlmöglichkeit schaffen, über die "#define RFSERIAL Serial3" gesetzt wird -> Die Arduino-Implementierung der Seriellen Schnittstelle nutzen.
Wenn ich das richtig in Erinnerung habe, wird standardmäßig die lokale Implementierung genutzt. Ob die Arduino-Implementierung demgegenüber einen Nachteil hat, weiß ich leider nicht.
Viele Grüße
Timo
Das hatte ich auch ursprünglich vor, bevor mein alter Car-PC obsolet wurde und als Druckserver ein neues Leben fand.
Grundsätzlich schien mir das Vorhaben gut umsetzbar zu sein. Der Ansatzpunkt hierfür sind die HAL.h und HAL.cpp
Grundsätzlich gäbe es (mindestens) zwei Möglichkeiten, auf Serial3 umzustellen:
- 1) In der HAL.cpp die Registernamen auf die USART3 Register umstellen (-> die lokale Implementierung der Seriellen Schnittstelle anpassen)
-.. 1a) alle Registernamen direkt abändern
-.. 1b) eine Auswahlmöglichkeit zwischen USART0 und USART3 schaffen (per #define z.B.) und die Register dann entsprechend auswählen -> hoher Aufwand, aber universeller nutzbar
- 2) In der HAL.h im Bereich um Zeile 250 eine dritte Wahlmöglichkeit schaffen, über die "#define RFSERIAL Serial3" gesetzt wird -> Die Arduino-Implementierung der Seriellen Schnittstelle nutzen.
Wenn ich das richtig in Erinnerung habe, wird standardmäßig die lokale Implementierung genutzt. Ob die Arduino-Implementierung demgegenüber einen Nachteil hat, weiß ich leider nicht.
Viele Grüße
Timo
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Hi
Ich kann vermutlich mangels Erfahrung wenig helfen - zumindest nicht ohne selbst zu testen auf den anderen seriellen Port umzustellen. Mich hat aber der Stecker an der Seite auch genervt.
Aber mein System läuft und da ich zwei Drucker an einem Raspberry habe lohnt sich der Eingang über USB.
Alles was Pins und Schaltung betrifft findet ihr hier:
http://www.rf1000.de/viewtopic.php?f=73 ... ich#p20102
(Und wenn da was fehlt, postet das genau dort.)
RF2000:
https://github.com/Nibbels/Repetier-Fir ... ins.h#L515
Da habe ich Notizen zu freien Pins notiert. Das ist echt Serial3.
Der RF2000v2 müsste gleich sein, ich weiß es aber nicht, weil ich den nicht selbst besitze. Sollte aber zu 99% passen.
https://github.com/Nibbels/Repetier-Fir ... ins.h#L758
Wenn ihr das durchzieht und schafft, dann kann ich gerne die nötigen Änderungen parameterabhängig in die Community-Mod Firmware übernehmen, sodass man nur noch in der Config von z.B. Serial1 auf Serial3 umschalten müsste.
Noch besser: Ich könnte die Umsetzung von Repetier übernehmen, über die man theoretisch diverse "Sources" als Gcode-Source registrieren kann. Z.B. SD-Source oder Seriell-Source. Dann könnten wir da eine Seriell3-Source zusätzlich reinhängen? Kein plan ob das wirklich so einfach ist, aber könnte gehen. Ich hatte das eh vor, weil wir damit unter Umständen diese Ghost-Moves bei manchen RF1000 loswerden könnten(???) sofern Repetier was gefixt hätte, was ich nicht entdecken konnte.
Das ist aber vermutlich ein ganzes Stück Arbeit und ich weiß nicht, wann ich dazu kommen werde.
Noch ein Tuning-Tipp:
Braucht ihr überhaupt keine SD-Karte mehr, dann schaltet SDSUPPORT in der Configuration.h aus. Das bringt fast 1 KB Ram und den kann man als MOVE_CACHE verwenden. So ca. von 17 auf 25 hochstellen geht dann.
LG
Ich kann vermutlich mangels Erfahrung wenig helfen - zumindest nicht ohne selbst zu testen auf den anderen seriellen Port umzustellen. Mich hat aber der Stecker an der Seite auch genervt.
Aber mein System läuft und da ich zwei Drucker an einem Raspberry habe lohnt sich der Eingang über USB.
Alles was Pins und Schaltung betrifft findet ihr hier:
http://www.rf1000.de/viewtopic.php?f=73 ... ich#p20102
(Und wenn da was fehlt, postet das genau dort.)
RF2000:
https://github.com/Nibbels/Repetier-Fir ... ins.h#L515
Da habe ich Notizen zu freien Pins notiert. Das ist echt Serial3.
Der RF2000v2 müsste gleich sein, ich weiß es aber nicht, weil ich den nicht selbst besitze. Sollte aber zu 99% passen.
https://github.com/Nibbels/Repetier-Fir ... ins.h#L758
Wenn ihr das durchzieht und schafft, dann kann ich gerne die nötigen Änderungen parameterabhängig in die Community-Mod Firmware übernehmen, sodass man nur noch in der Config von z.B. Serial1 auf Serial3 umschalten müsste.
Noch besser: Ich könnte die Umsetzung von Repetier übernehmen, über die man theoretisch diverse "Sources" als Gcode-Source registrieren kann. Z.B. SD-Source oder Seriell-Source. Dann könnten wir da eine Seriell3-Source zusätzlich reinhängen? Kein plan ob das wirklich so einfach ist, aber könnte gehen. Ich hatte das eh vor, weil wir damit unter Umständen diese Ghost-Moves bei manchen RF1000 loswerden könnten(???) sofern Repetier was gefixt hätte, was ich nicht entdecken konnte.
Das ist aber vermutlich ein ganzes Stück Arbeit und ich weiß nicht, wann ich dazu kommen werde.
Noch ein Tuning-Tipp:
Braucht ihr überhaupt keine SD-Karte mehr, dann schaltet SDSUPPORT in der Configuration.h aus. Das bringt fast 1 KB Ram und den kann man als MOVE_CACHE verwenden. So ca. von 17 auf 25 hochstellen geht dann.
LG
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Ich hab inzwischen den neuen Code von Repetier gezogen und etwas gelesen,
Siehe Timos Beitrag habe ich auch das gefunden:
RFHardwareSerial RFSerial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
aber ich bin mir nicht sicher ob es z.B. sooo einfach ist einfach zwei serielle Schnittstellen parallel zu haben. Theoretisch könnte das klappen, nur mit den HAL-Definitionen komme ich noch nicht ganz zurecht.
Zumindest so ein zusätzliches BLUETOOTH_SERIAL scheint man einrichten zu können. Vermutlich könnte das ein guter Einstiegspunkt sein.
Es lässt sich wieder sauber kompilieren, aber bevor das nicht 100% getestet ist, mache ich keine Commits sonst zieht sich noch irgendwer einen kaputten Stand.
Siehe Timos Beitrag habe ich auch das gefunden:
RFHardwareSerial RFSerial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
aber ich bin mir nicht sicher ob es z.B. sooo einfach ist einfach zwei serielle Schnittstellen parallel zu haben. Theoretisch könnte das klappen, nur mit den HAL-Definitionen komme ich noch nicht ganz zurecht.
Zumindest so ein zusätzliches BLUETOOTH_SERIAL scheint man einrichten zu können. Vermutlich könnte das ein guter Einstiegspunkt sein.
Es lässt sich wieder sauber kompilieren, aber bevor das nicht 100% getestet ist, mache ich keine Commits sonst zieht sich noch irgendwer einen kaputten Stand.
BLUETOOTH_SERIAL
LGRF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
-
- Anfänger
- Beiträge: 5
- Registriert: Fr 8. Feb 2019, 15:13
- Has thanked: 1 time
- Been thanked: 1 time
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Ich hab mir das eben mal angeschaut.
Wenn ich das richtig verstanden habe kann man in der Repetier Firmware den zweiten Serial fürs Bluetooth parallel zum Serial1 dazu schalten.
Das halte ich in diesem Fall aber für nicht den richtigen weg. Wenn dann würde ich über die Config umschalten zwischen Serial1 und Serial3.
Und das macht auch nur Sinn wenn man es per define umschaltet. Wenn ich jetzt einfach alle Register ändere mag es zwar für mich funktionieren aber ich müsste es bei jedem Firmwareupdate neu machen.
Was ich nur noch nicht ganz verstehe:
Wo wird hier USART0_RX_vec zum Beispiel definiert? In der Board von Arduino?
Wenn das so ist könnte ich ja einfach in der Configuration.h (wäre noch zu überprüfen ob das ganze beim RF1000 überhaupt möglich ist) ein #define Serial3 oder so machen und dann in der HAL.ccp einfach die Register auf USART3_RX_vec umbiegen.
Ich komme leider nicht vor dem Wochenende zum testen...
Grüße David
Wenn ich das richtig verstanden habe kann man in der Repetier Firmware den zweiten Serial fürs Bluetooth parallel zum Serial1 dazu schalten.
Das halte ich in diesem Fall aber für nicht den richtigen weg. Wenn dann würde ich über die Config umschalten zwischen Serial1 und Serial3.
Und das macht auch nur Sinn wenn man es per define umschaltet. Wenn ich jetzt einfach alle Register ändere mag es zwar für mich funktionieren aber ich müsste es bei jedem Firmwareupdate neu machen.
Was ich nur noch nicht ganz verstehe:
Code: Alles auswählen
#if !defined(USART0_RX_vect) && defined(USART1_RX_vect)
// do nothing - on the 32u4 the first USART is USART1
#else
void rfSerialEvent() __attribute__((weak));
void rfSerialEvent() {}
#define serialEvent_implemented
#if defined(USART_RX_vect)
SIGNAL(USART_RX_vect)
#elif defined(USART0_RX_vect)
SIGNAL(USART0_RX_vect)
#else
#if defined(SIG_USART0_RECV)
SIGNAL(SIG_USART0_RECV)
#elif defined(SIG_UART0_RECV)
SIGNAL(SIG_UART0_RECV)
#elif defined(SIG_UART_RECV)
SIGNAL(SIG_UART_RECV)
Wenn das so ist könnte ich ja einfach in der Configuration.h (wäre noch zu überprüfen ob das ganze beim RF1000 überhaupt möglich ist) ein #define Serial3 oder so machen und dann in der HAL.ccp einfach die Register auf USART3_RX_vec umbiegen.
Ich komme leider nicht vor dem Wochenende zum testen...
Grüße David
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Evtl. kann man niedriger bis um 1kbyte oder 1,1kbyte gehen, aber ich kann die Spitzenauslastung des dynamischen Speichers nur raten. Sobald der mal nicht reicht knallts halt und mit >1200byte rest-Ram dürfte man auf der sicheren Seite liegen.
Pro MOVE_CACHE_SIZE "+1" muss man etwas über -100byte freien Ram rechnen. Freien Ram bekommt man z.B. durch:
-> SDSUPPORT aus,
-> NUM_EXTRUDERS auf 1, wenn man eh kein zweites Hotend hätte
-> MILLING_MODE nicht unnötig auf 1 stellen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: Serial3 nutzen um Daten an den Drucker zu senden?!
Siehe auch http://www.rf1000.de/viewtopic.php?f=67 ... 012#p26012
Ich habe die GCodeSource-Klassen übernommen. Ist aber aktuell noch sehr ungetestet. Heißt aber auch, dass Seriell-Konfigurations-Berichte aus dem restlichen Netz, welche für die Repetier 1.0.3 stimmen, nun auch für unsere Firmware stimmen müssten.
Sowas oder ähnlich:
https://github.com/repetier/Repetier-Fi ... issues/799
https://forum.repetier.com/discussion/5 ... 2-to-1-0-1
(Beide Links helfen uns vermutlich nicht weiter, aber da wird über das Thema geredet.)
LG
Ich habe die GCodeSource-Klassen übernommen. Ist aber aktuell noch sehr ungetestet. Heißt aber auch, dass Seriell-Konfigurations-Berichte aus dem restlichen Netz, welche für die Repetier 1.0.3 stimmen, nun auch für unsere Firmware stimmen müssten.
Sowas oder ähnlich:
https://github.com/repetier/Repetier-Fi ... issues/799
https://forum.repetier.com/discussion/5 ... 2-to-1-0-1
(Beide Links helfen uns vermutlich nicht weiter, aber da wird über das Thema geredet.)
LG
RF2000
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.