Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PIC16F1708]Tuto microship mais PIC introuvable ?

    8 août 2013 à 7:11:41

    Bonjour à tous !

    J'ai récemment décidé de me mettre un peu à l'électronique (plus par passion qu'obligation) , finissant une formation d'ingénieur informatique que j'ai trouvée bien pauvre en matière d'ouverture sur l'électricité/électronique alors que ce sont à mon sens deux finalités au final assez complémentaires sur bien des points.
    Pour ce qui est de la théorie on va dire que j'ai lu deux trois tutos de bout en bout sur le sujet(notamment l'excellent http://www.gooligum.com.au/tut_baseline.html. Question pratique il s'agit de mon premier projet (j'ai vaguement réaliser ceux du tuto mais seulement en simulation). Donc tout çà reste très théorique jusqu'ici dans mon esprit.

    Bref je vais pas vous raconter ma vie ( ), mais histoire de joindre l'utile à l'agréable je pensais réaliser le projet un peu bateau de télécommande + récepteur infrarouge,
    J'ai rapidement cru étouffer sous le flot de schémas divers et variés émanent de mes recherches google et puis finalement il y en a un qui est ressorti , déjà de par son caractère officiel, et puis parce que sans être trop simple il m'avait l'air relativement abordable, bien expliqué, et permettant de m'initier à pas mal de spécifiés des PIC. Ci-joint le lien :

    http://ww1.microchip.com/downloads/e.../90003096A.pdf

    En diagonale pour les paresseux ce tuto explique comment envoyer des données via un signal PCM infrarouge ( PCM = Pulse Code Modulation = PWM (Pulse With Modulation) + CLC (Configurall Logical Cells) présentes dans les PICS "récents"). Donc un peu plus relevé que le bête signal infrarouge pour activer un truc vu que c'est à la base si je ne m'abuse pour envoyer des données... Le soucis c'est qu'après avoir lu en détail le code et les explications (bon le code pas encore tout compris à la virgule près mais soit), en cherchant les composants sur plusieurs sites d'électronique donc microship lui-même, je n'ai pas trouvé trace de ce PIC outre ce tutoriel.

    Avec Google j'ai vaguement trouvé une datasheet de la famille (tout aussi introuvable) correspondante mais sans plus :

    http://ww1.microchip.com/downloads/e.../40001708A.pdf

    Bref je comprends pas trop vu qu'apparemment le tuto émane directement du fournisseur microship... Et ne date que d'avril 2013 au passage...



    Quelqu'un aurait-il une explication ?



    Et pour les plus courageux histoire d'évoluer :

    1) Des indices pour choisir correctement un PIC remplaçant ? Je n'ai pas eu trop de mal à trouver des PICs avec CLC et PWM mais PPS (Periphical Pin Selection) çà bof... Hors il l'utilise explicitement dans le code

    2) Qu’implique le changement de PIC en général au niveau du code et du circuit ? Ca risque d'être le bordel au niveau des banksel, registres et compagnies non ? La strcture du code risque d'être méchamment chamboulée ou pas du tout ?

    3) Au cas où çà serait révèlerait trop prise de tête ou compliqué d'utiliser ce genre de shéma sur d'autres PICS des idées d'implémentation à me conseiller pour un bête émetteur récepteur à un bouton ? Comme je l'ai dit j'ai déjà cherché sur Google et je peux le refaire sans soucis, mais si par hasard vous aviez sous la main un tuto que vous avez essayé vous même avec succès où dont vous pensez que c'est de qualité, n'hésitez pas ! Et y a quand même des trucs qui m'ont l'air trop simple... Genre dites moi si je me trompe mais il me semble que rien que ce bout de code qu'on peut générer ici : http://www.micro-examples.com/public...pwm-calculator suffit pour un bête émetteur IR en utilisant le PWM interne donc schéma électrique ultra simple également ?




    Sorry for the long post et merci d'avance

    Antoine
    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2013 à 9:27:50

      Le tutos date de 2013 et c'est un pré-tuto.

      Vas voir ICI et cherche ton PIC dans la liste. Tu verras qu'en "status", il y a marqué "Future Product" et non "In production" ou "Sample Available".

      Si tu vas voir ICI, tu verras "Factory Lead Time : 10 Weeks".

      Autant dire que ce produit ne sera pas dispo en France avant plusieurs mois.

      =====

      Changer de PICs n'implique pas forcément un changement de code.

      Si tu restes dans la même famille, tout ce qui change, c'est la puissance du PICs (+ ou - de RAM, + ou - de vitesse CPU) et quelques périphériques en plus.

      Le problème, c'est que ton PICs n'existe pas encore. Donc toute sa série ne doit pas encore existé...

      De ce faite, il est fort probable que le code diffère un peu en ce qui concerne la gestion des périphériques (les registres ne seront pas ordonné de la même façon).

      • Partager sur Facebook
      • Partager sur Twitter
        8 août 2013 à 16:46:06

        > Qu’implique le changement de PIC en général au niveau du code et du circuit ?

        > Ca risque d'être le bordel au niveau des banksel, registres et compagnies non ?

        Là, je klaxonne.

        De nos jours, pour démarrer un projet avec une vieille merde comme un PIC16, il faut soit vouloir économiser 3 centimes par chip parce qu'on en commande un million, ou avoir besoin d'un boitier microscopique genre SOT23 (et encore), ou avoir besoin d'une feature très spécifique disponible uniquement dans ce chip.

        On peut avoir un kit de dév complet pour Cortex-M0 pour 20€ (lpcxpresso), idem en STM32, PIC32, etc. Y a pas photo entre un 32 bits moderne et une vieille bouse. 

        • Partager sur Facebook
        • Partager sur Twitter
          8 août 2013 à 18:37:16

          Mouai ... je ne suis pas d'accord là (du coup, je klaxonne aussi).

          Entre un PIC16 à moins d'un euros et un Cortex-M0 à 20€, y'a quand même un coefficient 20 dans le prix.

          De plus, un Cortex M0 possède aussi bien plus de périphériques et de registres de configuration. Il faut donc passer beaucoup plus de temps à lire la doc avant de pouvoir faire son premier petit programme.

          D'autant plus que s'il vaut utiliser cette télécommande pour se faire un mini-kit domotique par la suite, celle-ci risque d'être un peu grosse et assez chère si le micro-proc est une carte de dev Cortex.

          -
          Edité par lorrio 8 août 2013 à 18:38:13

          • Partager sur Facebook
          • Partager sur Twitter
            8 août 2013 à 19:28:11

            Un Cortex de base à l'unité c'est 1-2$ (50 MHz, 4-8k de flash, 0.5k à 1k de RAM, etc, donc 10-100x plus puissant qu'un PIC16).

            Pour une télécommande, je ne parle pas du dual core à 9$ (200 MHz, ethernet, USB2, etc, et beaucoup de etc).

            Les 20€ c'est la carte de dév, avec le programmateur USB, l'environnement, le debugger JTAG, etc.

            Même si le truc était plus cher (il ne l'est pas) le temps gagné à programmer sur une technologie moderne (et non un bouzin obsolète avec de la mémoire paginée) le justifierait largement...

            Il y a moins de tuto que sur les PIC (quoique la majorité des tuto sur les PIC sont en assembleur donc ne servent à rien), mais l'utilisation est néanmoins simple... la doc est bien faite, les périphériques sont conciliants (pas de bugs, pas ou très peu d'errata à la con, etc). Évidemment, tu as genre 15 timers 32 bits au lieu de 1x16 bits et 1 8 bits (lol), mais c'est tous les mêmes... si tu te sens aventureux tu écris dans un registre, ou pourquoi pas tu peux utiliser les API fournies. 

            Si on parle de domotique, alors le bus CAN est une option bien pratique, on trouve un Cortex-M0 avec toute la machinerie CAN intégrée (LPC11C14) pour 3€, on peut pas dire que ce soit la ruine...

            Qu’implique le changement de PIC en général au niveau du code et du circuit ?

            PIC c'est vague, ça va du fossile (PIC16, PIC18) au machin très bon marché et microscopique (PIC10, 12), au vrai uC 32 bits (PIC32), plus les dsPIC, les pic24 et tout le bazar. Donc pour répondre à ta question : ça dépend.

            Pour moduler une porteuse infrarouge par exemple, tu peux le faire en soft et utiliser un timer avec une interruption qui tripote un timer en mode PWM. 

            • Partager sur Facebook
            • Partager sur Twitter
              8 août 2013 à 20:31:37

              lorrio : Ha oui de fait au temps pour moi je n'avais pas vérifié là , merci :) Au moins çà règle toute recherche sur ce PIC là ! Je pensais qu'un tuto datant de 2013 était un gage de qualité/disponibilité comme quoi :D

              Casque Noir : Parce que du C j'en ai bouffé pendant 5 ans et qu'à côté de çà je n'ai eu qu'un cours d'assembleur, je pensais le faire en asm justement. :) De toute pour un code plutôt court à priori... Sinon je ne sais pas si c'est important dans un cas comme ici, mais le C n'introduit-il pas des délais supplémentaires parfois gênants pour des signaux qu'on veut envoyer à une fréquence précise ?

              Pour le choix des PICs microship c'est surtout parce que je me tâte à suivre un master supp en élec l'année prochaine et que je sais d'élèves ayant suivi cette formation qu'il y a un cours avec un gros projet d'électronique (autre chose qu'un émetteur IR : gestion d'images, moteurs, et tutti quanti) où l'on est en tout cas prié d'utiliser les PICs de chez Micro. Accessoirement j'ai eu aujourd'hui par un ami deux PICs : PIC16F1503 PIC16F1508 donc c'est vrai que tant qu'à faire autant les utiliser :p

              Pour le montage je pensais (puisque le TSOP proposé dans le tuto n'est lui aussi disponible qu'aux USA (donc payer 50 euros de frais de port pour un bidule à 80 francs merci :D ) prendre ceci : http://be.farnell.com/vishay/tsop1133/photodiode-ir-receiver-33khz/dp/4913012?ref=lookahead

              Pour obtenir du 33Khz au receveur, si je suis au choix les calculs du tuto ou de cette page j'obtiens les valeurs des timer et compagnie pour mon PIC : http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator

              Donc arrêtez moi si je me trompe oµ si je peux me lancer dans cette direction :

              1) une entrée pour le BTN, une sortie pour la LED, niveau montage dur de faire plus simple

              2) Initialiser les registres utiles pour mon signal  : PWM, etc...

              3) je dois vérifier qu'un sleep mode est possib sur les deux PICs sus cités mais à priori autant les utiliser si il y a (pour la beauté du geste)

              4) Si pressage de BTN correct (penser à gérer le deboucing via un delay je présume) on met la sortie PWM à la LED infrarouge (que j'ai achetée ajd)

              C'est un peu sur le point 4 où je ne suis pas sur entièrement des réglages à faire au niveau du code pour que le PWM soit reliée à la sortie reliée à la LED mais je présume qu'en cherchant un peu sur le net et la datasheet du PIC ca devrait aller ?

              Voilà juste savoir si je fonce pas dans le mur ou dans un truc inefficace / largement améliorable ? Que je puisse me lancer cette nuit :p

              Merci encore :)




              -
              Edité par N1gHtm@r3 8 août 2013 à 20:35:45

              • Partager sur Facebook
              • Partager sur Twitter
                8 août 2013 à 22:16:20

                Le C est un langage compilé.

                Le rôle du compilateur est de convertir ton code C en code ASM.

                Donc au final, c'est presque pareil.

                Je dit presque car il est toujours possible de faire un code plus optimisé en codant directement en ASM mais ça rend les choses bien moins clair.

                Le fait de coder en C ne provoquera donc aucune gène des signaux PWM.

                D'ailleurs les signaux PWM sont généré par un périphérique indépendant. Une fois que le CPU a configuré le périphérique pour qu'il génère le signal PWM, celui-ci est libre de faire autre chose.

                -----

                La configuration du périphérique PWM se fait en écrivant dans des registres.

                L'utilité de chaque registre est expliqué dans la doc, mais tu peux très bien utilisé ton générateur de code ...

                • Partager sur Facebook
                • Partager sur Twitter
                  9 août 2013 à 8:21:23

                  Ok merci pour les détails Lorrio (toujours mieux de savoir ce qu'on fait et pourquoi) :)

                  Je fais çà aujourd'hui et je te dis quoi !

                  Bonne journée

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 août 2013 à 8:26:18

                    > Casque Noir : Parce que du C j'en ai bouffé pendant 5 ans et qu'à côté de çà je n'ai eu qu'un cours d'assembleur, je pensais le faire en asm justement.  

                    Tu peux le faire en asm, mais il faut que ce soit pour les bonnes raisons : en apprendre plus sur l'architecture d'un processeur, la curiosité, etc. Mais investir le temps d'apprendre l'asm d'une architecture obsolète n'est peut-être pas la meilleure idée... l'assembleur ARM, Cortex (thumb) ou MIPS est bien plus simple...

                    Le faire entièrement en asm pour "optimiser" est généralement une perte de temps. Les compilateurs modernes sont très bons. Tu peux avoir de temps en temps quelques lignes d'asm dans une section où le timing est critique, par exemple pour générer un signal, ou utiliser une instruction qui s'exprime difficilement en C (et encore, les libraries fournissent des fonctions spéciales)...

                    > le C n'introduit-il pas des délais supplémentaires parfois gênants pour des signaux qu'on veut envoyer à une fréquence précise ?

                    C'est un des cas où on peut mettre quelques lignes d'assembleur, mais le mieux est d'utiliser un timer/pwm pour générer ton signal.

                    En gros, si tu as peu de boutons (pas de matrice) :

                    - le uC est en sleep

                    - l'entrée bouton déclenche une interruption qui réveille le uC

                    - initialisation des bits à transmettre

                    - un timer à la fréquence des bits à transmettre déclenche une interruption (genre qq kHz)

                    - cette interruption module en on/off suivant les bits un autre timer qui sort le 33 kHz

                    - quand c'est fini, retour en sleep

                    Tu en as pour 2 pages de code...


                    Si tu ne veux pas payer les frais de port de farnell,

                    http://www.electronique-diffusion.fr/product_info.php?products_id=21230

                    (ils ont plusieurs autres références de TSOP)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [PIC16F1708]Tuto microship mais PIC introuvable ?

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown