Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

PIC 16bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » mer. 1 déc. 2021 14:18

Hello tous,

Je vais me faire une commande de samples et Satinas m'a mis l'eau à la bouche par 2 fois :-D d'abord au post27 du sujet Programmer l'AD9850 avec un bout de code et ensuite pour la division 32/16. J'ai jeté un coup d'oeil sur le jeu d'instructions et c'est alléchant tout ce qu'on peut faire simplement avec ce genre de micro.

J'ai essayé avec un pic 16 bits 24HJ128GP502 en dip28, qui offre l'avantage de rester sur Mplab.
On arrive à 8,4Mhz en sortie avec un Fosc à 100MHz.


Donc je me tâte pour essayer un 16bits pour voir si je m'en sors, à priori un 24HJ128GP502 puisque c'est celui qu'il a utilisé en disant qu'il était reconnu par MPLab (X ou 8.92 ?). Avant de commander j'attends l'aval de Satinas pour savoir si c'est le meilleur choix ou s'il vaut mieux commencer par un autre.
Et aussi une question: j'ai vu qu'il était alimenté en 3.3v et que certaines pins reconnaissaient le 5v, donc j'en déduis que toutes les autres donnent des niveaux à 3.3v ?

Et je suis preneur pour toutes autres informations sur le sujet.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

PIC 16bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#2 Message par satinas » mer. 1 déc. 2021 17:04

Salut

Attention, pour la division entière 32/16 le quotient obtenu doit être sur 16 bits, sinon le résultat est incorrect.
pic - instructions.zip

Les pic 16 bits 24X sont très performants. Ils ont aussi une déclinaison dsPIC 30X/33X pour le traitement numérique de signal, avec la même architecture. Je suis pas trop au fait des derniers sortis, ils ont certainement des périphériques enrichis, il y a même des versions a 2 coeurs.

J'ai travaillé sur ces pics en C il y a quelques années, et c'était vraiment sympa sur MPLAB 8.92, je ne préfère pas essayer avec MPLABX. Récemment pour le bootloader j'ai fait un peu d'asm, d'où ce document de travail écrit au préalable, j'en ai profité pour ajouter les 8 bits, tant qu'à faire :)

Regarde-le et si tu es prêt à faire le saut, pourquoi pas, mais bon, il faut s'investir, et il faut aimer l'assembleur. Ces processeurs sont optimisés pour le C, on gagne pas grand chose en asm, car avant de jongler avec le jeu d'instructions, il faut vraiment pratiquer longtemps.

Le 24HJ128GP502 est pas mal, il a 8k de ram et 64k de programme. Pas sûr qu'il y ait mieux en boitier dip. Dans les autres boitiers il y a davantage de choix, voir avec MAPS. Ce pic tourne à FOSC=80MHz (40MIPS), à 100MHz il répond toujours. C'est effectivement un micro-contrôleur 3,3V, les pins fonctionnent en 3,3V, sauf celles compatibles 5V acceptant le 5V en input ou open drain.
Il y a aussi les dsPIC 30F4012 et 30F4013 en boitiers dip 28/40 qui tournent un peu moins vite (30 MIPS) mais acceptent une alim de 2,5 à 5,5V. Tous ces chips sont ok pour MPLAB 8.92 et PicKit3, le debugger marche très bien.
Au pire, tu feras du C :-)

A voir en dip28, semblent compatibles MPLAB aussi :
dsPIC33EP256GP502 70 MIPS 3,3V (General Purpose)
dsPIC33EP256MC502 70 MIPS 3,3V (Motor control)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

PIC 16bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#3 Message par F6FCO » mer. 1 déc. 2021 19:02

Bonsoir,

Je te remercie grandement pour ta réponse car çà fait longtemps que je louchais vers ces micros.

Regarde-le et si tu es prêt à faire le saut, pourquoi pas, mais bon, il faut s'investir, et il faut aimer l'assembleur. Ces processeurs sont optimisés pour le C, on gagne pas grand chose en asm, car avant de jongler avec le jeu d'instructions, il faut vraiment pratiquer longtemps.

Pas de souci de ce coté, j'ai fais du C mais je prends plus de plaisir en assembleur, je pratique depuis les années 80 (Z80, 6502, 68000 et 386), je suis encore un rookie en PIC mais maintenant que je peux enfin sortir de l'écran je suis accroché et ferré :wink:
Ce qui ne veut pas dire que je ne ferai pas quelques excursions vers le C de temps en temps.

Ce qui m'embête un peu c'est le 3.3v, me connaissant je vais forcément faire un jour la bêtise de le brancher en 5v, donc je vais essayer le dsPIC 30F4012.
Et cerise sur le gâteau je garde mon MPLab8.92 un peu buggé mais que je commence à bien connaître.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

PIC 16bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#4 Message par F6FCO » mer. 1 déc. 2021 20:20

Et hop, commandé au Père Noel des samples 16F1847 et 24HJ128GP502. C'est à cause de vous tout çà.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

PIC 16bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » jeu. 2 déc. 2021 00:27

Bonsoir satinas, F6FCO, et tout le forum,

Pic 16 bits hou la.. la... je suis plus là.... :-D , il faudrait trouver un site qui explique tout ça, un peu comme Bigonoff l'a fait, mais ou ... !!

satinas a écrit :Source du message Le 24HJ128GP502 est pas mal, il a 8k de ram et 64k de programme.


Le pic18F27K42 qui est un 8 bits à 8k de ram et 128k de mémoire programme avec une eeprom de 1k :langue: bon la seule chose, c'est qu'il tourne à 64 Mhz au maximum.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

PIC 16bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#6 Message par satinas » jeu. 2 déc. 2021 07:50

Bonjour

Temps-x, l'avantage est de pouvoir manipuler des mots 16 bits et parfois 32 bits en une seule instruction, et d'avoir un jeu d'instructions plus riche.

F6FCO, faire le grand écart entre ça et la réfection de machine-outil, c'est assez impressionnant :)
Pourquoi tu n'a pas pris un des 2 33EP cités (avec retard), ils sont plus rapides. J'ai des 33EP128GP504 mais en boitier TQFP, j'en souderai un sur PCB de test.

Quelque remarques sur les 16 bits.

L'architecture Von Neumann permet d'accéder en 1 cycle simultanément aux bus flash et ram.
La totalité de la flash (prog/eeprom/id/cfg) est accessible en r/w par ICSP ou avec les instructions TBLRD/TBLWT.
La largeur du PC est de 23 bits, son bit 0 est toujours à 0, les 22 bits utiles permettent d'adresser 4M instructions de 24 bits.
64k de ram adressables par mots de 16 bits alignés sur adresse paire, ou par octets si near ram (0 à 0x1fff).
La ram peut être divisée en 2 espaces X et Y à accès simultané pour les instructions dsp.

Les instructions 24 bits sont vues comme 2 mots de 16 bits, avec le mot de poids fort < 0x100. Le PC avance de 2 alors qu'on se déplace de 3 octets, ça c'est pas évident à concevoir. La zone haute de la ram (0x8000 à 0xffff) peut être mappée sur une page 32k flash (PSV), seuls les 2 octets bas des instructions 24 bits sont alors visibles.

Il y a 16 registres 16 bits W0 à W15. Le registre W0 ressemble au W des 8 bits, il est intégré à certaines instructions sous le nom WREG.
W15 est le pointeur de pile, il faut l'initialiser au départ, et il sera modifié à chaque CALL/RETURN.
Contrairement aux 8 bits, il faut distinguer valeurs littérales et adresses, pour cela on utilise le préfixe #.
mov #4,W3 -> place la valeur littérale 4 dans W3
mov 4,W3 -> place le mot 16 bits situé à l'adresse ram 4 dans W3
mov.b WREG,5 -> place l'octet bas de W0 à l'adresse ram 5

PIC 16bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#7 Message par F6FCO » jeu. 2 déc. 2021 18:48

satinas a écrit :Bonjour
Temps-x, l'avantage est de pouvoir manipuler des mots 16 bits et parfois 32 bits en une seule instruction, et d'avoir un jeu d'instructions plus riche.

C'est ce qui m'intéresse, j'envie le jeu d'instruction des Atmel, qu'est ce qu'on doit pouvoir faire avec tout çà. Ceci dit je me suis aperçu que je n'utilisais même pas toutes les instructions des 8 bits.
C'est aussi beaucoup aussi pour le plaisir de la découverte.

satinas a écrit :F6FCO, faire le grand écart entre ça et la réfection de machine-outil, c'est assez impressionnant :)

Pas possible de programmer à longueur de journée, il faut bien faire autre-chose.

satinas a écrit :Pourquoi tu n'a pas pris un des 2 33EP cités (avec retard), ils sont plus rapides. J'ai des 33EP128GP504 mais en boitier TQFP, j'en souderai un sur PCB de test.

Parce que je ne savais pas que çà existait avant que tu n'en parles :wink:

satinas a écrit :Quelque remarques sur les 16 bits.

Je crois que j'ai intérêt à acheter un bouquin sur la prog des PIC 16bits
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

PIC 16bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#8 Message par satinas » ven. 3 déc. 2021 07:57


PIC 16bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#9 Message par F6FCO » ven. 3 déc. 2021 12:23

Merci, vais voir çà. J'ai cherché des bouquins mais rien trouvé sur l'assembleur.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

PIC 16bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#10 Message par satinas » ven. 3 déc. 2021 14:19

Bonjour,

De la même origine que le lien ci-dessus. Il montre un petit programme C et sa version asm.
https://www.google.fr/url?sa=t&rct=j&q= ... cYiNRoxbaT

Sinon les meilleures docs c'est
- datasheet du processeur
- docs famille processeur https://www.microchip.com/en-us/product ... ment-table (Reference Manuals)
- docs assembleur dans "C:\Program Files (x86)\Microchip\MPLAB ASM30 Suite"
- docs assembleur dans "C:\Program Files (x86)\Microchip\MPLAB C30\docs" (il vaut mieux installer aussi le compilateur C30)
- 16-bit MCU and DSC Programmer’s Reference Manual

j'ai un pdf de présentation des 30F pas mal, mais plus trouvable sur le net, je peux te l'envoyer par mail.

L'architecture Von Neumann permet d'accéder en 1 cycle simultanément aux bus flash et ram

Perdu ! Harvard et pas Von Neumann


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités