fonction de rappel [Forums - Langage C]
fonction de rappel [Forums - Langage C]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes





fonction de rappel
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Bonjour à tous

Il y a quelques temps j'évoquais des doutes sur la facilité d’accès des débutant avec les outils devenus très "paramétrisés" et du code généré (les drivers fournis) super compliqués...

Avis à tous ceux qui débutent en C : vous n'êtes pas au bout de vos peines !!!
Je viens de découvrir les CallBack
https://fr.wikipedia.org/wiki/Fonction_de_rappel
dans les drivers SPI du SDK des kinetis
C'est un truc de malade, 4h pour comprendre de quoi ça cause !

En gros au départ ils créent/initialisent un objet SPI en lui passant entre autre en paramètre une fonction qui sera à exécuter plus tard dans certains cas.


Posté le : 05/05/2016 16:25
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1164
Hors Ligne
C'est comme ça que j’initialise mes routines d'IT depuis les couches supérieures... Je passe le nom de la fonction à exécuter de la couche HIL vers HAL. ainsi ma couche HIL ne dépend plus du tout du hardware et si je change de CPU je n'ai qu'à réécrire les quelques lignes de la couche HAL pour un nouveau périphérique.
Ce n'est pas si compliqué que ça... enfin peut être chez Freescale. Ma façon n'est ni plus ni moins qu'un pointeur sur l'adresse d'une fonction que je passe en paramètre d'une autre...

Posté le : 07/05/2016 15:37
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Ça ne doit pas être si compliqué que ça leur truc puisque j'arrive à l'utiliser maintenant !
Mais en fait si, les doc des drivers sont archis limitées puisqu'ils leur manque l'essentiel : la description de a quoi servent les fonctions !

Là je me mets à utiliser le driver SPI. Une fois qu'on a pigé le fonctionnement son utilisation est assez facile et derrière ce code un peu lourdingue et trop complet pour se dispenser de documentation, se cache un truc d'une puissance non négligeable (SPI sous IT et facilement paramétrable)
Sous freertos il y a aussi une couche avec gestion d'un mutex. il me faut la reprendre légèrement parce que de base elle ne permet que de gérer 1 configuration de bus (Phase, baudrate etc...) mais d'ici ce soir j'aurai un truc de fou, robuste et facile d'utilisation, que je n'aurais jamais été capable de coder de a à z.


Citation :
est ni plus ni moins qu'un pointeur sur l'adresse d'une fonction que je passe en paramètre d'une autre...
ça pourrait faire sujet de dissertation !

Posté le : 07/05/2016 16:14
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Salut,

Si je comprend bien, pour ceux qui utilisent des Kinetis, ce sont des libs toutes faites et prêtes à l'emploi ?

Posté le : 09/05/2016 11:18
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Salut

Oui KDS met à disposition des SDK avec des librairies; Contrairement à processor expert qui était lourdingue et collait du code illisible car écrit par processor expert, là tu as juste des librairies.
C'est pas mal écrit apparemment mais c'est pas codé par des débutants et pas commenté pour être "débutant intelligible". S'il y avait une doc qui explique comment utiliser les fonctions cela ne poserait pas de problème (suffirait de pas regarder le code et se contenter de s'en servir...) mais comme là la doc est vide, il faut bien se faire une idée en regardant le code pour pouvoir l'utiliser...
Le point positif c'est que j'ai appris pleins de choses sur le C en faisant l'exercice... (mal aux cheveux)
depuis hier j'utilise la SPI comme jamais je ne l'ai fait. tout sous IT avec quasi pas de code de ma part et le tout avec le bus SPI protégé des conflits grâce à un mutex. (j'utilise Freertos et il faut faire en sorte que 2 taches qui s’exécutent en même temps ne puissent pas utiliser en même temps une même ressource, la SPI et ses périphériques ici)

Mais reste donc avec CW... Les kinetis sont quand même bien plus compliqués car bourrés de possibilités et de registres dans tous les sens; Et surtout KDS est loin d'être au niveau de CW ! Certes il est basé sur de l'open source et n'est pas limité en taille de code mais pleins de trucs natifs à CW ne fonctionnent pas sur KDS (ou au prix de bidouille de partout)


Posté le : 09/05/2016 11:29
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Ok. Et donc, ces SDK n'existe pas pour le s S08 je suppose ? Il n'y a que processor expert ? (que j'ai essayé vite fait, mais cela ne m'a pas plus.).


Posté le : 09/05/2016 12:13
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Ces SDK existent que pour KDS, KDS (kinetis dev studio) étant fait pour les ..kinetis.

Processor expert je ne connais personne sur le forum qui aime ça. moi je l'utilisais que pour trouver rapidement la valeur à donner à un registre pour initialiser un périphérique.
a part ça il a que des inconvénients je trouve :
-il génère lui même des fichiers, si tu as le malheur d'en toucher un ca te pète à la figure
-il génère lui même les fichiers, les syntaxes sont donc issues de la machines ; illisibles et trés longues
-cela t'impose la structure de ton projet.
-La compilation est monstrueusement plus longue avec PE (de quelques secondes ou fractions de secondes à plusieurs dizaines de s)


Posté le : 09/05/2016 12:21
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Pour les callback, voici une image assez facile à comprendre.
J'ai une callback: AttrapeLeVerre().

J'appelle le Driver Charly en lui passant mon verre et la callback.
Une fois que Charly à remplie mon verre (je ne sais pas quand :( ), il m'appelle via AttrapeLeVerre() ;)

Du coup, plusieurs personne peuvent demander à Charly à boire et on ne risque pas de se tromper de verre :p.

Posté le : 09/05/2016 13:33
Transférer la contribution vers d'autres applications Transférer


Re: fonction de rappel
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
On risque également de devenir des ivrognes avec ton système !!!

Posté le : 09/05/2016 16:19
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

fonction de rappel [Forums - Langage C]