Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) hmm, argh... quand on va dans le menu "print from sd" ca semble bloquer, un conflit dma on dirait oui, juste avec le code async... erk, faut un flag pour gérer ca Modifié (le) Mai 6, 2019 par Epsylon3
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 On retombe sur le semaphore, ou bien avant chaque acces DMA, on verifie qu'il est libre.
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 le code async, le début des soucis d'expérience lol
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 Mais nooon. Mais vu qu'il faut tester a chaque fois, avant de lancer le DMA qu'il est libre, c'est pour cela que je suggerais de mettre le test au debut des deux procedures DMA.. comme ca, au pire, on attend la fin du transfert. On termine le transfert courant, et on redemarre un nouveau DMA. Au mieux, le DMA est libre, et on termine immediatement, et on en recommence un autre.
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 j'ai commité un booléen, mais toujours désactivé pour l'instant... je crains le pire avec l'async
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 Bhein on va tester ca.... Au pire, la premiere fois que l'on rentre dans la procedure DMA, on va fermer un DMA qui n'a jamais ete ouvert... Ca devrait pas gener de trop. On peut mettre un flag d'init, pour que la premiere fois, on n'execute pas la procedure de fermeture du DMA. Apres, je vois pas trop ce qui pourrait gener...
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 @Epsylon3 Il y a une hypothese importante dans le mecanisme du DMA : Que le canal en question ne soit pas utilisé ailleurs dans le code. Et a priori, il y a du DMA dans le SPI et dans la SDcard... J'espere qu'il y a un canal de libre! Sinon, en effet l'asynchrone va poser probleme.
Acidounet Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 bon les gars quand vous voudrez un testeur hésitez pas a bipper Là on arrive plus à suivre 1
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 bon et le capteur doit bien avoir FIL_RUNOUT_INVERTING true c'etait un probleme ici... je pense que le contact etait à coté du fil... arf
boleofr Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 il y a 18 minutes, Acidounet a dit : Là on arrive plus à suivre C'est pourtant vachement simple : le DNA du buffer double asynchrone rentre peut-être pas dans le SPI, si le FIL_RUNOUT_INVERTING est à true et que l'init est pas faite correctement ! 3
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) yep enfin la ca marche bien... c'est juste l'async qui "peut" faire des conflits avec la carte SD, pas le transfert dma en lui meme. le capteur, rien à voir, mais fallait que je corrige, de ma faute, et du gars qui a codé ca en classes c++ dérivées... Modifié (le) Mai 6, 2019 par Epsylon3
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 Ah bhein avec un commentaire comme ca, @boleofr va enfin tout comprendre! LOL. Des que je suis à la maison, je mesure les gains en vitesse d'affichage, et je passe le test de l'analyseur logique pour verifier, ou pas, la presence de sauts de pas.
boleofr Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 @Hobi plus je lis et plus je me dis que ça manque de variété ce code source marlin... On devrait y ajouter du lisp, de l'ada83 à défaut d'y mettre une peu de fortan ou de cobol...
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) @boleofr Ahhh je te retrouve enfin! mais j'y aurais bien rajoute un peu de python, et de basic... LOL @Epsylon3 : La SDcard, c'est normal que ca pose probleme . Faut prendre un autre canal. On va devoir lister tous les canaux DMA. il y en a 12. #define FSMC_DMA_DEV DMA2 #define FSMC_DMA_CHANNEL DMA_CH4 #define SDIO_DMA_DEV DMA2 #define SDIO_DMA_CHANNEL DMA_CH4 Modifié (le) Mai 6, 2019 par Hobi 1
Acidounet Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 il y a 30 minutes, boleofr a dit : C'est pourtant vachement simple : le DNA du buffer double asynchrone rentre peut-être pas dans le SPI, si le FIL_RUNOUT_INVERTING est à true et que l'init est pas faite correctement ! Toi t as rien compris !!! on parle de DMA pas de DNA tsss !!! Citation DMA est un sigle qui signifie rayer la mention : en français Délégation ministérielle pour l'Armement (1961-1977) ; destruction mutuelle assurée ; drainage minier acide ; Dimanche Midi Amar, une émission diffusé de 1999 à 2001 sur France 2 ; diméthylaniline ; déchet ménager et assimilé, les déchets produits par les ménages et ceux produits par les activités économiques, ces deux types étant collectés ensemble ; diplôme des métiers d'art, un diplôme du niveau du BTS tout en étant plus appliqué que les BTS arts et concernant davantage les métiers et techniques traditionnelles ; Dominicaines Missionnaires Adoratrices, une congrégation religieuse catholique ; distance minimale d'approche ; département de mathématiques et applications, le département de mathématiques de l'École normale supérieure (rue d'Ulm) à Paris ; Direct Memory Access, un terme d'informatique anglais traduit en français par Accès direct à la mémoire ; Dynamic mechanical analysis, une technique mécanique de caractérisation de matériaux ; Digital matte artist (en), un spécialiste qui utilise la technologie employée pour le dessin assisté par ordinateur : le Matte painting ; Direct market access (en) (en français, accès direct au marché), un terme utilisé en finance. Dean Morgan Academy, une chaîne d’écoles de langue anglaise et française au Japon. DMA est un code qui signifie : Dominique selon la liste des codes pays du CIO, selon la liste des codes pays utilisés par l'OTAN, alpha-3. DMA est un mot qui peut désigner : Peugeot DMA, un modèle de camionnette construit et commercialisé entre 1941 et 1950 par Peugeot ; DMA Design, un studio écossais de développement de jeu vidéo ; DMA Production (où DMA signifie design métiers d'art), une association française de promotion et de développement de projets associant design et métiers d'art. Bon j arrete le HS mais au moins j essaie de comprendre 1
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) https://en.wikipedia.org/wiki/Direct_memory_access yep bon... à tester... et deja voir la difference de mesure avec le bool on/off sans sd... le probleme c'est qu'ils sont définis en dehors du repo... ces defines git grep dma_init, il semble n'y en avoir que 2 mais bon Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp:41: dma_init(SDIO_DMA_DEV); Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp:87: dma_init(FSMC_DMA_DEV); Marlin/src/lcd/menu/touch/main.cpp:61: dma_init(FSMC_DMA_DEV); Citation The flexible 12-channel general-purpose DMAs (7 channels for DMA1 and 5 channels for DMA2) are able to manage memory-to-memory, peripheral-to-memory and memory-toperipheral transfers. The two DMA controllers support circular buffer management, removing the need for user code intervention when the controller reaches the end of the buffer. Each channel is connected to dedicated hardware DMA requests, with support for software trigger on each channel. Configuration is made by software and transfer sizes between source and destination are independent. The DMA can be used with the main peripherals: SPI, I2C, USART, general-purpose, basic and advanced-control timers TIMx, DAC, I2S, SDIO and ADC. bon je tente CH5 alors ? ca semble ok a premiere vue.. Edit: Oui pushé et async réactivé Modifié (le) Mai 6, 2019 par Epsylon3 1 2 1
wipeout85800 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 En tout cas moi je me dis que "dev" un marlin "special octoprint" sans écran cela pourrai être pas mal .... 1
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) LOL, et je pense qu'on va mettre un switch de compilation dans Config.h, pour écran ou pas d’écran CAR : Meme si nous avons gagne en temps d'affichage, j'ai sur le Gcode en PJ, une grosse rondelle, composée de cercles , certes difficile pour le planner, environ 60 sauts, avec ou sans optimisation de notre vitesse d'affichage. Ça tend à démontrer que l’équipe de Marlin a en effet introduit un bug en Septembre dernier.... Et que cela ne dépend pas vraiment de notre morceau d'affichage. Mon analyseur se déclenché bien, et je sens bien les petits sauts à chaque fois.... Je vais prendre le meme Gcode, et tester en enlevant tout l'affichage. Si pas de sauts, oui, on va faire une version sans affichage. De toute façon, cette partie n'a pas été modifiée. CFFFP_test_disc.gcode Modifié (le) Mai 6, 2019 par Hobi
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 oui la mise en veille de l'affichage aussi a faire plus tard, c'est pour ca que j'ai lié le pdf... ...et commencé à "brancher" le sleep on/off, meme si en commentaires pour le moment
CacaoTor Posté(e) Mai 6, 2019 Auteur Posté(e) Mai 6, 2019 @Hobi.... Bon sinon il y a au moins un problème avéré avec les cartes V08 et le BL-Touch.
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 Tiens tu es la à cette heure! Je suis en train de découper tout l'affichage pour faire un test de saut. La détection à l'air assez fiable, et mon Gcode force bien sur le planner car il ralentit la vitesse quand le niveau de la fifo devient trop bas. Je fais un joli stress test. D'ici 10 min , on va savoir si sans écran on a des sauts, ou pas...
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 (modifié) j'ai assez bossé pour la journée perso, je vous laisse tester tout ca meme Marlin semble penser que je bosse trop : https://github.com/MarlinFirmware/Marlin/pull/13895 Modifié (le) Mai 6, 2019 par Epsylon3 1 1
CacaoTor Posté(e) Mai 6, 2019 Auteur Posté(e) Mai 6, 2019 il y a 25 minutes, Hobi a dit : Tiens tu es la à cette heure! Je suis en train de découper tout l'affichage pour faire un test de saut. La détection à l'air assez fiable, et mon Gcode force bien sur le planner car il ralentit la vitesse quand le niveau de la fifo devient trop bas. Je fais un joli stress test. D'ici 10 min , on va savoir si sans écran on a des sauts, ou pas... Et oui. Figure toi que j'aidais des membres de ce forum cet aprem mais dans la vraie vie ! Et la debug du BL sur V08.
Hobi Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 Bon, resultat des tests : La ou j'ai 60 sauts avec l'ecran, que cela soit avec ou sans DMA accélérateur, il en reste 5 sans écran. C'est bien mieux, mais pas idéal. Et ce sont toujours des sauts de 16.2ms. Toujours. ... zut. Ceci est valable a 100 ou a 170mm/s . Meme resultat, mais la vitesse d'impression de toute facon diminue car le planner a son buffer interne trop peu plein, et ralentit la machine afin d'eviter les fameux sauts. Je pousse tout ca chez Marlin...
Epsylon3 Posté(e) Mai 6, 2019 Posté(e) Mai 6, 2019 j'ai pas cherché a le faire mais il doit y avoir qqchoise pour mesure le temps "cpu" via un compteur d'instructions... d'une fonction
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant