Wie kompiliert man MicroPython vom Quellcode selbst?
Okay Dankeschön.
Ich bin da sehr leichtsinnig hingegangen, ich dachte das Schwerste für mich wird der Schaltplan sein. An einen Regler hatte ich nicht mal im Ansatz gedacht.
Naja jetzt schaue ich mal was ich für eine Gewichtung mit dem geänderten Zeitinterval bekomme und wie sich der Regler damit verhält.
Viele Grüße
Dennis
Ich bin da sehr leichtsinnig hingegangen, ich dachte das Schwerste für mich wird der Schaltplan sein. An einen Regler hatte ich nicht mal im Ansatz gedacht.
Naja jetzt schaue ich mal was ich für eine Gewichtung mit dem geänderten Zeitinterval bekomme und wie sich der Regler damit verhält.
Viele Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Guten Abend (ja könnte man schon fast so sagen),
heute habe ich die Positionen mit den verschiedenen Zeitintervallen im open loop aufgenommen:
Position und die Zeit bei 0,02s
Position und die Zeit bis 0,04s
Dann habe ich mal mit den Regler bei unterschiedlichen Intervallen versucht und verglichen. Mal als Beispiel die unterschiedlichen Diagramme, bei gleicher Regeleinstellung mit unterschiedlichen Diagrammen:
Intervall 0,01s
Intervall 0,02s
Intervall 0,02s
Das beste Ergebnis das ich heute erzielen konnte war mit folgenden Daten:
Das Ergebnis
Durchweg habe ich immer das Problem, dass der Ist-Wert Richtung "Ende" immer stärker mit schwingen anfängt. In den Anleitungen steht, man soll ein gleichmäßiges ozillieren einstellen, dass dann mit Ki reduzieren und das Überschschiessen dass dabei entsteht mit Kd in den Griff kriegen. Wenn ich Ki vergrößere bekomme ich zwar das Problem mit der Beschleunigung hin, aber der Motor dreht dann wie verrückt vor und zurück. Und Kp kann ich dafür nicht vergrößern, sonst past das oszillieren gar nicht mehr.
Ich kann jetzt schlecht einschätzen ob dass an der geringen Auflösung, dem dadurch zu großen Messintervall oder obs an mir liegt.
Auf dem Diagramm der bisher besten Regeleinstellung sieht man eine kurze Zeit nach der Beschleunigung nur eine geringe Abweichung von Soll- und Ist, wenn ich mir aber die drehende Abtriebswelle des Getriebemotors anschaue, dann sehe ich ohne große Anstrengung einen sehr unrunden Lauf.
Viele Grüße
Dennis
heute habe ich die Positionen mit den verschiedenen Zeitintervallen im open loop aufgenommen:
Position und die Zeit bei 0,02s
Position und die Zeit bis 0,04s
Dann habe ich mal mit den Regler bei unterschiedlichen Intervallen versucht und verglichen. Mal als Beispiel die unterschiedlichen Diagramme, bei gleicher Regeleinstellung mit unterschiedlichen Diagrammen:
Intervall 0,01s
Intervall 0,02s
Intervall 0,02s
Das beste Ergebnis das ich heute erzielen konnte war mit folgenden Daten:
Code: Alles auswählen
Kp = 0.8
Ki = 0,00000000000000000002
Kd = 0,000000000000000001
Beschleunigung = 45
Konstant = 360
Bremsen = 45
Intervall= 0,04
Durchweg habe ich immer das Problem, dass der Ist-Wert Richtung "Ende" immer stärker mit schwingen anfängt. In den Anleitungen steht, man soll ein gleichmäßiges ozillieren einstellen, dass dann mit Ki reduzieren und das Überschschiessen dass dabei entsteht mit Kd in den Griff kriegen. Wenn ich Ki vergrößere bekomme ich zwar das Problem mit der Beschleunigung hin, aber der Motor dreht dann wie verrückt vor und zurück. Und Kp kann ich dafür nicht vergrößern, sonst past das oszillieren gar nicht mehr.
Ich kann jetzt schlecht einschätzen ob dass an der geringen Auflösung, dem dadurch zu großen Messintervall oder obs an mir liegt.
Auf dem Diagramm der bisher besten Regeleinstellung sieht man eine kurze Zeit nach der Beschleunigung nur eine geringe Abweichung von Soll- und Ist, wenn ich mir aber die drehende Abtriebswelle des Getriebemotors anschaue, dann sehe ich ohne große Anstrengung einen sehr unrunden Lauf.
Viele Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Das negative Vorzeichen habe ich im Code eingebaut, hier der Auszug daraus:
Nach dem du mir das letzte mal gesagt hattest, dass der Wert negativ sein, habe ich gedacht, das baue ich fest ein und vermeide dadurch das ich es vergesse und mich über falsche Ergebnisse wundere.
Grüße
Dennis
Code: Alles auswählen
class WeldingControl:
def __init__(self):
encoder = PCNT(0, Pin(ENCODER_PINS[1]), Pin(ENCODER_PINS[0]))
encoder.filter(100)
self.count_angle = LargeCounter(encoder)
self.welding_axis = MCPWM(0)
self.welding_axis.bind(Pin(PWM_PINS[0][0]), Pin(PWM_PINS[0][1]))
self.welding_axis.duty(0)
self.path = PathPlanner(45, 180, 45, 0.1)
self.pid = PID(KP, KI, -KD)
...
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Gute Idee. Was die eigentliche Frage angeht: ich habe da keine abschließende Antwort drauf. Ich denke ich liege richtig mit meiner Vermutung, dass du zu wenig Schritte hast. Und die zeitliche Auflösung zu verringern, kostet. Irgendwann kann man nicht mehr schnell genug reagieren. Meine Renn-Kopter regeln 4000 mal pro Sekunde.
Wenn es für dich darstellbar ist ( du willst ja eh untersetzen), kannst du mal probieren den Encoder an eine Übersetzung zu montieren.
Und dann würde ich mal auf konstante Geschwindigkeit regeln, und schauen, wie gut das geht. Auch wenn man den Motor mal einbremst, mit der Hand.
Wenn es für dich darstellbar ist ( du willst ja eh untersetzen), kannst du mal probieren den Encoder an eine Übersetzung zu montieren.
Und dann würde ich mal auf konstante Geschwindigkeit regeln, und schauen, wie gut das geht. Auch wenn man den Motor mal einbremst, mit der Hand.
Guten Morgen,
danke für deine Antwort.
Dann lohnt es sich auch mal zu überlegen, ob man anstatt der Energie und dem Geld das man in eine Übersetzung steckt, vielleicht nicht lieber gleich einen passenden Encoder kaufen sollte.
Ich denke ich habe jetzt auch genügend Daten und gebe das mal so weiter. Ich kann leider nicht entscheiden, was noch gekauft wird, ich kann nur bestmöglich überzeugen
Bis mechanisch mal alles steht und ich eventuell Versuche mit der Übersetzung oder einem anderen Encoder machen kann, kümmere ich mich weiter um das Hauptprogramm, dass nachher alles ansteuert und die Bedieneingaben entgegen nimmt.
Vielen lieben Dank nochmal! Das war wirklich sehr lehrreich und auch echt interessant bis hier her.
Viele Grüße
Dennis
danke für deine Antwort.
Dann lohnt es sich auch mal zu überlegen, ob man anstatt der Energie und dem Geld das man in eine Übersetzung steckt, vielleicht nicht lieber gleich einen passenden Encoder kaufen sollte.
Ich denke ich habe jetzt auch genügend Daten und gebe das mal so weiter. Ich kann leider nicht entscheiden, was noch gekauft wird, ich kann nur bestmöglich überzeugen
Bis mechanisch mal alles steht und ich eventuell Versuche mit der Übersetzung oder einem anderen Encoder machen kann, kümmere ich mich weiter um das Hauptprogramm, dass nachher alles ansteuert und die Bedieneingaben entgegen nimmt.
Vielen lieben Dank nochmal! Das war wirklich sehr lehrreich und auch echt interessant bis hier her.
Viele Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Ich dachte halt die Untersetzung ist ja eh geplant, also kannst du auch die Komponenten kurz zweckentfremden, ohne extra Kosten. Aber klar, du kannst auch einfach einen besseren Encoder kaufen. Oder ein Schneckengetriebe mit einem Motor, der encoder-faehig ist, oder den schon hat.
Guten Morgen zusammen,
ich nutze diesen Thread mal weiter, weil mein Problem einigermaßen gut zur Überschrift passt.
Ich habe einen ESP8266 und ein Display mit ST7789 Controller hier. Auf Github habe ich eine Bibliothek für das Display gefunden, die allerdings in C geschrieben ist. Also muss ich laut Anleitung MicroPython wieder kompilieren und dabei die Bibliothek einbinden.
Mein erster Versuch MicroPython ohne die Bibliothek zu kompilieren war erfolgreich. Ich habe mich an die Anleitung gehalten und habe unter Fedora Docker genutzt (Docker wird ja empfohlen).
Bei meinem Versuch die Bibliothek für das Display einzubinden habe ich alle Schritte wiederholt und habe den make-Befehl wie folgt abgeändert:
Jetzt kommt leider eine lange Liste an Fehlermeldungen, die mir nicht viel sagen und ich hoffe ihr könnt mir weiter helfen.
Kann es sein das mit der C-Datei was nicht stimmt?In der Fehlermeldung steht was "undeklariert". Das GitHub ist zwei Jahre alt und viele Issues sind auch nicht vorhanden, da bin ich davon ausgegangen dass das bestimmt funktioniert. (und der Fehler vermulich wieder vor dem PC sitzt)
Vielen Dank schon ein mal vorab.
Grüße
Dennis
ich nutze diesen Thread mal weiter, weil mein Problem einigermaßen gut zur Überschrift passt.
Ich habe einen ESP8266 und ein Display mit ST7789 Controller hier. Auf Github habe ich eine Bibliothek für das Display gefunden, die allerdings in C geschrieben ist. Also muss ich laut Anleitung MicroPython wieder kompilieren und dabei die Bibliothek einbinden.
Mein erster Versuch MicroPython ohne die Bibliothek zu kompilieren war erfolgreich. Ich habe mich an die Anleitung gehalten und habe unter Fedora Docker genutzt (Docker wird ja empfohlen).
Bei meinem Versuch die Bibliothek für das Display einzubinden habe ich alle Schritte wiederholt und habe den make-Befehl wie folgt abgeändert:
Code: Alles auswählen
docker run --rm -v $HOME:$HOME -u $UID -w $PWD larsks/esp-open-sdk make -j BOARD=GENERIC USER_C_MODULES=/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/ all
Code: Alles auswählen
[dennis@dennis esp8266]$ sudo docker run --rm -v $HOME:$HOME -u $UID -w $PWD larsks/esp-open-sdk make -j BOARD=GENERIC USER_C_MODULES=/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/ all
[sudo] Passwort für dennis:
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Including User C Module from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy//st7789
mkdir -p build-GENERIC/st7789/
CC /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:495:19: error: 'MP_QSTR_blit_buffer' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_blit_buffer), MP_ROM_PTR(&st7789_ST7789_blit_buffer_obj) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:495:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_blit_buffer), MP_ROM_PTR(&st7789_ST7789_blit_buffer_obj) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:509:13: error: 'MP_QSTR_ST7789' undeclared here (not in a function)
.name = MP_QSTR_ST7789,
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:509:5: error: initializer element is not constant
.name = MP_QSTR_ST7789,
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:509:5: error: (near initialization for 'st7789_ST7789_type.name')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c: In function 'st7789_ST7789_make_new':
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:524:11: error: 'MP_QSTR_spi' undeclared (first use in this function)
{ MP_QSTR_spi, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:524:11: note: each undeclared identifier is reported only once for each function it appears in
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:524:9: error: initializer element is not constant
{ MP_QSTR_spi, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:524:9: error: (near initialization for 'allowed_args[0].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:525:11: error: 'MP_QSTR_width' undeclared (first use in this function)
{ MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:525:9: error: initializer element is not constant
{ MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:525:9: error: (near initialization for 'allowed_args[1].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:526:11: error: 'MP_QSTR_height' undeclared (first use in this function)
{ MP_QSTR_height, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:526:9: error: initializer element is not constant
{ MP_QSTR_height, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:526:9: error: (near initialization for 'allowed_args[2].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:528:11: error: 'MP_QSTR_dc' undeclared (first use in this function)
{ MP_QSTR_dc, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:528:9: error: initializer element is not constant
{ MP_QSTR_dc, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:528:9: error: (near initialization for 'allowed_args[4].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:529:11: error: 'MP_QSTR_cs' undeclared (first use in this function)
{ MP_QSTR_cs, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:529:9: error: initializer element is not constant
{ MP_QSTR_cs, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:529:9: error: (near initialization for 'allowed_args[5].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:530:11: error: 'MP_QSTR_backlight' undeclared (first use in this function)
{ MP_QSTR_backlight, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:530:9: error: initializer element is not constant
{ MP_QSTR_backlight, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:530:9: error: (near initialization for 'allowed_args[6].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:531:11: error: 'MP_QSTR_xstart' undeclared (first use in this function)
{ MP_QSTR_xstart, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:531:9: error: initializer element is not constant
{ MP_QSTR_xstart, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:531:9: error: (near initialization for 'allowed_args[7].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:532:11: error: 'MP_QSTR_ystart' undeclared (first use in this function)
{ MP_QSTR_ystart, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:532:9: error: initializer element is not constant
{ MP_QSTR_ystart, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:532:9: error: (near initialization for 'allowed_args[8].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c: In function 'st7789_map_bitarray_to_rgb565':
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:620:11: error: 'MP_QSTR_bitarray' undeclared (first use in this function)
{ MP_QSTR_bitarray, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:620:9: error: initializer element is not constant
{ MP_QSTR_bitarray, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:620:9: error: (near initialization for 'allowed_args[0].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:622:11: error: 'MP_QSTR_width' undeclared (first use in this function)
{ MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:622:9: error: initializer element is not constant
{ MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = -1} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:622:9: error: (near initialization for 'allowed_args[2].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:623:11: error: 'MP_QSTR_color' undeclared (first use in this function)
{ MP_QSTR_color, MP_ARG_INT, {.u_int = WHITE} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:623:9: error: initializer element is not constant
{ MP_QSTR_color, MP_ARG_INT, {.u_int = WHITE} },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:623:9: error: (near initialization for 'allowed_args[3].qst')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:624:11: error: 'MP_QSTR_bg_color' undeclared (first use in this function)
{ MP_QSTR_bg_color, MP_ARG_INT, {.u_int = BLACK } },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:624:9: error: initializer element is not constant
{ MP_QSTR_bg_color, MP_ARG_INT, {.u_int = BLACK } },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:624:9: error: (near initialization for 'allowed_args[4].qst')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c: At top level:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:645:54: error: 'MP_QSTR_st7789' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_st7789) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:645:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_st7789) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:645:5: error: (near initialization for 'st7789_module_globals_table[0].value')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:646:19: error: 'MP_QSTR_color565' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_color565), (mp_obj_t)&st7789_color565_obj },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:646:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_color565), (mp_obj_t)&st7789_color565_obj },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:646:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_color565), (mp_obj_t)&st7789_color565_obj },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:646:5: error: (near initialization for 'st7789_module_globals_table[1].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:647:19: error: 'MP_QSTR_map_bitarray_to_rgb565' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_map_bitarray_to_rgb565), (mp_obj_t)&st7789_map_bitarray_to_rgb565_obj },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:647:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_map_bitarray_to_rgb565), (mp_obj_t)&st7789_map_bitarray_to_rgb565_obj },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:647:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_map_bitarray_to_rgb565), (mp_obj_t)&st7789_map_bitarray_to_rgb565_obj },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:647:5: error: (near initialization for 'st7789_module_globals_table[2].key')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:648:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_ST7789), (mp_obj_t)&st7789_ST7789_type },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:648:5: error: (near initialization for 'st7789_module_globals_table[3].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:649:19: error: 'MP_QSTR_BLACK' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_BLACK), MP_ROM_INT(BLACK) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:649:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_BLACK), MP_ROM_INT(BLACK) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:649:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_BLACK), MP_ROM_INT(BLACK) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:649:5: error: (near initialization for 'st7789_module_globals_table[4].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:650:19: error: 'MP_QSTR_BLUE' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_BLUE), MP_ROM_INT(BLUE) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:650:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_BLUE), MP_ROM_INT(BLUE) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:650:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_BLUE), MP_ROM_INT(BLUE) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:650:5: error: (near initialization for 'st7789_module_globals_table[5].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:651:19: error: 'MP_QSTR_RED' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_RED), MP_ROM_INT(RED) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:651:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_RED), MP_ROM_INT(RED) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:651:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_RED), MP_ROM_INT(RED) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:651:5: error: (near initialization for 'st7789_module_globals_table[6].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:652:19: error: 'MP_QSTR_GREEN' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_GREEN), MP_ROM_INT(GREEN) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:652:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_GREEN), MP_ROM_INT(GREEN) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:652:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_GREEN), MP_ROM_INT(GREEN) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:652:5: error: (near initialization for 'st7789_module_globals_table[7].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:653:19: error: 'MP_QSTR_CYAN' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_CYAN), MP_ROM_INT(CYAN) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:653:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_CYAN), MP_ROM_INT(CYAN) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:653:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_CYAN), MP_ROM_INT(CYAN) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:653:5: error: (near initialization for 'st7789_module_globals_table[8].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:654:19: error: 'MP_QSTR_MAGENTA' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_MAGENTA), MP_ROM_INT(MAGENTA) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:654:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_MAGENTA), MP_ROM_INT(MAGENTA) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:654:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_MAGENTA), MP_ROM_INT(MAGENTA) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:654:5: error: (near initialization for 'st7789_module_globals_table[9].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:655:19: error: 'MP_QSTR_YELLOW' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_YELLOW), MP_ROM_INT(YELLOW) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:655:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_YELLOW), MP_ROM_INT(YELLOW) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:655:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_YELLOW), MP_ROM_INT(YELLOW) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:655:5: error: (near initialization for 'st7789_module_globals_table[10].key')
In file included from /home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:27:0:
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:656:19: error: 'MP_QSTR_WHITE' undeclared here (not in a function)
{ MP_ROM_QSTR(MP_QSTR_WHITE), MP_ROM_INT(WHITE) },
^
../../py/obj.h:214:56: note: in definition of macro 'MP_OBJ_NEW_QSTR'
#define MP_OBJ_NEW_QSTR(qst) ((mp_obj_t)((((mp_uint_t)(qst)) << 4) | 0x00000006))
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:656:7: note: in expansion of macro 'MP_ROM_QSTR'
{ MP_ROM_QSTR(MP_QSTR_WHITE), MP_ROM_INT(WHITE) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:656:5: error: initializer element is not constant
{ MP_ROM_QSTR(MP_QSTR_WHITE), MP_ROM_INT(WHITE) },
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:656:5: error: (near initialization for 'st7789_module_globals_table[11].key')
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:666:75: error: macro "MP_REGISTER_MODULE" passed 3 arguments, but takes just 2
MP_REGISTER_MODULE(MP_QSTR_st7789, mp_module_st7789, MODULE_ST7789_ENABLED);
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:666:1: error: data definition has no type or storage class [-Werror]
MP_REGISTER_MODULE(MP_QSTR_st7789, mp_module_st7789, MODULE_ST7789_ENABLED);
^
/home/dennis/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/st7789.c:666:1: error: type defaults to 'int' in declaration of 'MP_REGISTER_MODULE' [-Werror]
cc1: all warnings being treated as errors
make: *** [../../py/mkrules.mk:80: build-GENERIC/st7789/st7789.o] Error 1
make: *** Waiting for unfinished jobs....
[dennis@dennis esp8266]$
Vielen Dank schon ein mal vorab.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Hallo,
ich habe nochmals von vorne begonnen und auch den make-Aufruf etwas abgeändert:
Die FIrmeware wurde gebaut, lässt sich auf den ESP8622 flashen, aber wie soll es auch anders sein:
ergibt
Das Problem wurde in GitHub auch schon veröffentlicht, aber ohne Lösung.
mit 'help('modules') finde ich es auch nicht.
Kann ich da irgendwie danach suchen? Vielleicht steckt das in 'esp' oder so drin. Habe 'esp', 'machine' und 'micropython' schon manuell probiert, leider ohne Erfolg.
Danke und Grüße
Dennis
ich habe nochmals von vorne begonnen und auch den make-Aufruf etwas abgeändert:
Code: Alles auswählen
sudo docker run --rm -v $HOME:$HOME -u $UID -w $PWD larsks/esp-open-sdk make -j USER_C_MODULES=$HOME/Dokumente/MicroPython_ST7789/st7789_mpy/st7789/micropython.cmake all V=1
Code: Alles auswählen
import st7789
Code: Alles auswählen
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: no module named 'st7789'
mit 'help('modules') finde ich es auch nicht.
Kann ich da irgendwie danach suchen? Vielleicht steckt das in 'esp' oder so drin. Habe 'esp', 'machine' und 'micropython' schon manuell probiert, leider ohne Erfolg.
Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Das wird nicht irgendwo einsortiert. Das hat dann leider irgendwie nicht geklappt. Bist du sicher, dass du den Pfad zum cmake file angeben musst? Nicht nur das Verzeichnis?
Ich würde ansonsten die Moduldateien in den esp Port reinkopieren, und da dann in das makefile dazu packen. So, wie das mit dem PCNT auch passiert ist.
Ich würde ansonsten die Moduldateien in den esp Port reinkopieren, und da dann in das makefile dazu packen. So, wie das mit dem PCNT auch passiert ist.
Guten Morgen,
danke für deine Antwort.
In liegt micropython.cmake, micropython.mk, st7789.c und st7789.h
Wenn ich diesen Pfad angebe, dann ist das Ergebnis das Gleiche wie wenn ich direkt die makefile angeben. Also zumindest wird MicroPython erstellt, aber st7789 ist nicht dabei.
Wenn ich eine Struktur höher gehe und diesen Pfad angeben dann wird der "Bau" gestartet ich sehe auch im Terminal dass Verzeichnisse mit st7789 erstellt werden, dann bricht das aber leider mit einer Fehlermeldung ab:
Moduldateien sind dann 'st7789.c' und 'st7789.h'?
Das versuche ich jetzt gleich mal.
Grüße
Dennis
danke für deine Antwort.
In
Code: Alles auswählen
$HOME/st7789_mpy/st7789
Wenn ich diesen Pfad angebe, dann ist das Ergebnis das Gleiche wie wenn ich direkt die makefile angeben. Also zumindest wird MicroPython erstellt, aber st7789 ist nicht dabei.
Wenn ich eine Struktur höher gehe und diesen Pfad angeben
Code: Alles auswählen
$HOME/st7789_mpy
Code: Alles auswählen
ERROR: Call to MP_REGISTER_MODULE(MP_QSTR_st7789, mp_module_st7789, 1) should be MP_REGISTER_MODULE(MP_QSTR_st7789, mp_module_st7789)
make: *** [../../py/py.mk:219: build-GENERIC/genhdr/moduledefs.h] Error 1
make: *** [Deleting file 'build-GENERIC/genhdr/moduledefs.h'
make: *** Waiting for unfinished jobs....
Das versuche ich jetzt gleich mal.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Ja, das sind die Moduldateien. Was die Fehlermeldungen angeht: die sind sehr spezifisch für MP, dieser QSTR-Mechanismus ist eine Build System Magie, um da effiziente Bezeichner zu bekommen. Kann auch gut sein, dass es eine bestimme Version von MP braucht.
Okay ich habe die Dateien in '.../ports/esp8266' kopiert und in der Makefile habe ich in dem Abschnitt
hinzugefügt.
So habe ich das bei dir mit 'esp32_pcnt.c' abgeschaut. Dann habe ich den make-Befehl verwendet, mit dem ich das Standard MicroPython problemlos bauen konnte. Der Vorgang endet wieder im gleichen Fehler.
Es müsste ja sicherlich irgendwo noch den Quellcode einer alten MicroPython version geben? Danach mache ich mich jetzt mal auf die Suche.
Wegen der Angabe zu cmake-File, darauf bin ich durch diese Kommentare gestoßen:
https://github.com/devbis/st7789_mpy/issues/21
Grüße und Danke
Dennis
Code: Alles auswählen
SRC_C = \
...
st7789.c \
So habe ich das bei dir mit 'esp32_pcnt.c' abgeschaut. Dann habe ich den make-Befehl verwendet, mit dem ich das Standard MicroPython problemlos bauen konnte. Der Vorgang endet wieder im gleichen Fehler.
Es müsste ja sicherlich irgendwo noch den Quellcode einer alten MicroPython version geben? Danach mache ich mich jetzt mal auf die Suche.
Wegen der Angabe zu cmake-File, darauf bin ich durch diese Kommentare gestoßen:
https://github.com/devbis/st7789_mpy/issues/21
Grüße und Danke
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Der Bezog sich aber auf einen fork, in dem diese Datei existiert.
Statt micropython zu ändern, würde ich eher den Code Portieren. Also anschauen, was die da anders machen als im PCNT Modul. Oder einfach unter Angabe aller Informationen einen Bug filen. Allerdings scheinen die nicht mehr sonderlich aktiv.
Statt micropython zu ändern, würde ich eher den Code Portieren. Also anschauen, was die da anders machen als im PCNT Modul. Oder einfach unter Angabe aller Informationen einen Bug filen. Allerdings scheinen die nicht mehr sonderlich aktiv.
Jetzt habe ich deine erste Nachricht zu spät gesehen, hatte versucht MicroPython v1.13 zu bauen, das hat nicht geklappt. Darauf will ich auch nicht weiters eingehen, dein Vorschlag hört sich sinnvoller an.
Damit ich dich richtig verstehe, ich soll st7789.c mit deiner esp32_pcnt.c vergleichen?
Ich hatte das bis gerade noch nicht gemacht, ich dachte nicht, dass die Zeile tatsächlich so in st7789.c steht. Ich habe sie geändert, also die 1 weggelassen und bekomme leider wieder Fehlermeldungen.
Aktuelle MicroPython Version, egal ob ich die Moduldateien direkt in den esp8266 Ordner kopiere und die Makefile anpasse oder ob ich die Dateien in einem anderen Ordner lasse und auf das Verzeichnis verweise, ich erhalte diese Meldung:
Irgendwas läuft wohl voll, habe ich jetzt ein Speicherplatzproblem?
Danke und Grüße
Dennis
Damit ich dich richtig verstehe, ich soll st7789.c mit deiner esp32_pcnt.c vergleichen?
Ich hatte das bis gerade noch nicht gemacht, ich dachte nicht, dass die Zeile tatsächlich so in st7789.c steht. Ich habe sie geändert, also die 1 weggelassen und bekomme leider wieder Fehlermeldungen.
Aktuelle MicroPython Version, egal ob ich die Moduldateien direkt in den esp8266 Ordner kopiere und die Makefile anpasse oder ob ich die Dateien in einem anderen Ordner lasse und auf das Verzeichnis verweise, ich erhalte diese Meldung:
Code: Alles auswählen
xtensa-lx106-elf-ld: build-GENERIC/firmware.elf section `.text' will not fit in region `iram1_0_seg'
xtensa-lx106-elf-ld: region `iram1_0_seg' overflowed by 1304 bytes
make: *** [Makefile:221: build-GENERIC/firmware.elf] Error 1
Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Das klingt so, als ob da zu viel code produziert wird. Ggf. kannst du https://forum.micropython.org/viewtopic.php?t=6261 folgen. Und auch einmal das PCNT-Modul aus dem Makefile nehmen, um zu schauen, ob du nur das Display zum laufen bekommst.
Ich schaue mir den Link heute Mittag an und melde mich wieder. Bin jetzt kurz weg vom PC.
Aber noch kurz, das PCNT Modul ist ja für den esp32. Ich versuche das Display auf einem esp8266 zum laufen zu bekommen. Die MicroPython Version ist auch nicht aus deinem Git sondern aus dem offiziellen.
Vielen Dank und bis später
Dennis
Aber noch kurz, das PCNT Modul ist ja für den esp32. Ich versuche das Display auf einem esp8266 zum laufen zu bekommen. Die MicroPython Version ist auch nicht aus deinem Git sondern aus dem offiziellen.
Vielen Dank und bis später
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Das ist natuerlich etwas aergerlich, weil es befuerchten laesst, dass man einfach die Menge an Code, die der vertraegt, ueberschritten hat. Ggf musst du andere Module, die nicht wichtig sind, deaktivieren. Oder versuchen, das Linker-Script zu tunen. Welche exakte MP version benutzt du?