Nouvelles:

Le Forum est maintenant chiffré (préambule https). Bien sûr, des liens externes insérés dans les sujets vont demeurer inchangés. Mais la composition des pages du Forum est désormais sécurisée. Si des problèmes d'affichage surviennent, veillez à vider votre cache pour ce site.

Menu principal

Tableau interactif d'affichage d'informations d'environnement

Démarré par Arckont, Février 21, 2018, 02:21:27 PM

« précédent - suivant »

Arckont

Bonjour!

Alors, pour les résistances, ça va me permettre de les trier c'est déjà  pas mal, mais j'ai du mal à  voir tout ça avec mes petits yeux fatigués. Heureusement mon épouse est patiente... :p

Pour l'exercice avec les ports, j'avoue que je ne vois pas trop ou est la question, et en quoi consiste l'exercice...
je pensait qu'il fallait identifier les "groupes" de pattes, mais à  priori quelque chose m'échappe.
Je vois bien les pattes dédiées au IN et au Out, et d'autres références que je ne comprends pas encore mais globalement... je suis un peu perdu là  :)

Pour tes questions concernant la documentation technique du PIC, je vois 4 Bank , la Bank0, Bank1, Bank 2 et Bank 3 .
Pour les registres si j'ai bien compris, il y en a :
Bank 0 : 31
Bank 1 : 32
Bank 2 : 16
Bank 3 : 14

et je constate aussi la présence de champs vides, qui doivent être la mémoire morte utilisable pour stocker des data à  consulter ou interpréter ensuite ?

J'ai à  mon tour une petite question... Bertrand explique dans une de ses vidéos que les Pic 16 sont en déchéance, et il préfère les Pic 18 qui offrent plus de possibilités.
Du coup... Qu'est-ce qui justifie l'emploi du pic 16 ? une question de coût, ou de facilité pour l'apprentissage ? ou simplement par habitude ? Bref, dis-moi ce que tu pense de ça?

Merci et bonne journée!

Curiosus

#16
Bonjour bidouilleurs, bidouilleuses,

Sinon pour les résistances, attends d'avoir ton multimètre, tu les contrôleras avec, généralement c'est
très fiable.

Pour répondre à  ta question sur le lien https://www.amazon.fr/gp/product/B01HCU8UNO/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

J'aime pas ce type d'appareil, qui fait tous et rien.

Comme tu as fait l'effort d'essayer de comprendre,  je te donne la solution.

RA0, RA1, RA2, RA3, RA4, RA5, RA6, RA7

RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7

RC0, RC1, RC2, RC3, RC4, RC5, RC6, RC7

RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7

RE0, RE1, RE2, RE3

Pourquoi j'ai voulu t'embêter sur cette question, tout simplement parce que tu vas les retrouver en programmation
assembleur, se sont les numéros de tes pattes qui s'appelle comme ça.

Et le seule moyen de les retenir, c'est de marquer le coup. ;)

On va passé pas mal de temps à  étudier cette page, pour que tu puisses bien démarrer par la suite.

Bravo, oui effectivement il y 4 bank, si tu as compris ça on va pouvoir avancé

Les registres sont classés par bank, apparemment on dirais que le constructeur les as classé aléatoirement. ::)

Pour la bank0 effectivement il y a 31 registres

Pour la bank1 tu t'es trompè
Pour la bank2 tu t'es trompè   
Pour la bank3 tu t'es trompè

Essai de trouvé le nombre de registre pour les autres(bank1, bank2, bank3) je suis sur que tu le peux


Encore une fois bravo, et chapeau d'avoir deviner ça, je suis surpris ;)

Effectivement le pic à  une mémoire quand appelle SDRAM, pour échanger les données.
Elle et très rapide, c'est un avantage, mais une fois l'alimentation coupé tous est perdu.

C'est pour cela qu'il existe dans le Pic une EEPROM de 256 octets ou l'on peu stocker
des données, mais elle est très lente.

On peu aussi stocker les données dans le programme que tu écris.

Enfin on y reviendras

CitationJ'ai à  mon tour une petite question... Bertrand explique dans une de ses vidéos que les Pic 16 sont en déchéance, et il préfère les Pic 18 qui offrent plus de possibilités.

Comme il le dit il préfère, on réalité Microchip qui est le fabricant du microcontrôleur
Fait des 16F, et des 18F, on trouve dans des 16F des caractéristiques aussi évolué que les 18F avec
le même type de langage de programmation.

C'est juste une question de référence, car Microchip continu à  fabriquer des nouvelles version de 16F évoluer.

Mais en général les 18F sont un peu plus évolué et moins chère, mais c'est juste parce que Microchip
le veux bien.

Pour ton Pic16F887, Il est assez vieux, mais très bien pour apprendre et faire tous ce que tu veux.

Essai de refaire l’exercice sur le nombre de registre.

Et d'après toi, quelle taille fait la SDRAM, attention les unités sont exprimé en hexadécimal
toujours en page 25.


A+


Arckont

Bonjour!

à  mon retour de vacances j'ai attaqué les questions.
pour les registres je pense avoir pris le "Accesses" des 3 banques (1 2 et 3) pour des registres mais a priori ce n'est pas des registres...
donc du coup...
Bank1 31 registres
bank2 15 registres
bank3 13 registres

j'espère que c'est bien ça et si c'est pas le cas j'ai encore du travail pour comprendre la structure du tableau. le contenu ça va, je parviens à  bien visualiser les champs d'adressages, un peu comme des variables en scripting/programmation pour définir qu'on pose une valeur dans un champ en spécifiant sa position, type 111h = xxx

et donc pour la SDRAM

je vois donc des champs séparés, je ne sait pas si c'est pertinent, mais:

bank 0 : 96 bytes de "general purpose registers" mais du coup j'en ai pas compris l'usage encore, c'est pas une sdram à  mon idée mais doit être utilisable en la programmant en y implantant une fonction par ex?

bref
bank 1, je dirais une sdram de 24 bytes et aussi un "general purpose registers" comme la bank0

bank 2 : 128bytes + 56bytes
bank 3 : 128bytes + 56bytes

du coup vu que c'est écrit en hexa, c'est 8 bytes par champ si je ne m'abuse?


pour le pic18 / pic16
je comprends. la question était juste due au fait que j'aime essayer de comprendre pourquoi on choisis un tel ou tel matériel et savoir ou je vais et pourquoi.
entretemps j'ai fait des petits labos pour apprendre comment se comportent certains composants, genre résistance et condensateurs et aussi quelles différentes technologies existent et ce qui les différencie. j'ai un peu peur d'avoir acheté de la qualité un peu trop faible mais dans un premier temps pour apprendre ça devrait aller.

Merci et bonne journée! ;)

Curiosus

#18
Bonjour bidouilleurs, bidouilleuses,

J'espère que tu as prie des forces pendant tes vacances, et surtout un bon repos. ;)

Bon pour les registres :

Bank1 31 registres -- ok
Bank2 15 registres -- ok
Bank3 13 registres -- ok

Ouais tu avait prie "Accesses" qui n'a rien à  voir avec tout cela.

Comme je veux pas t’embrouiller, je t'en reparlerais plus tard, au moment de la programmation. 

Voici tous tes registres, comme tu l'auras compris, c'est ceux qui ne son pas colorié




En page 2 de ton datasheet tu peux voir ceci :

Taille maxi que peux avoir ton programme 8192 octets
Taille de ta Sdram 368 octets
Taille de ton eeprom 256 octets

Nombre de sorti ou entrée I/O 35

La Sdram c'est comme pour les registres, elle est divisé en 4 bank

Comme tous est écrit en anglais tu es excusable, ne t’inquiète pas je suis comme toi, je comprends pas l'anglais.

J'arrive juste à  deviner par habitude, avec mon maigres cerveau.

Aller je te donne la solution pour la Sdram car c'est pas simple,

En Bank0 début de la sdram H'20' fin H'6F' soit 80 octets   

En Bank1 début de la sdram H'A0' fin H'EF' soit 80 octets

En Bank2 début de la sdram H'110' fin H'16F' soit 96 octets

En Bank3 début de la sdram H'190' fin H'1EF' soit 96 octets

En Bank0, Bank1, Bank2, Bank4, début de la sdram H'70' fin H'7F' soit 16 octets


Si tu fais le calcul tu vas trouver 368 octets, les 16 octets sont commune à  toutes les bank.

Maintenant une chose à  retenir :

Le D placé derrière veut dire décimal, exemple : D'125'

Le B placé derrière veut dire binaire, exemple : B'00100100'

Le H placé derrière veut dire héxadécimal, exemple : H'F8'


--------------------------------------------------------------------------------------------------------------------------------------------------------------

Dans l'écriture de ton programme en version ASM, le nombre décimal ne pourras dépasser 255 pour un microcontrôleur 8 bits

Dans l'écriture de ton programme en version ASM, le nombre binaire s'écrire par paquet de 8 pour un microcontrôleur 8 bits

Dans l'écriture de ton programme en version ASM, le nombre hexadécimal ne pourras dépasser FF pour un microcontrôleur 8 bits

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Alors pour voir si tu as compris, tu vas me dire dans quelle bank se trouve les registres cité ci-dessous.

PORTA
OPTION_REG
ANSEL
CMCON
TRISB
ADCON1
ADCON0
PR2
T2CON
CCP1CON
INTCON

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Cite moi au hasard 2 registres en bank0
Cite moi au hasard 2 registres en bank1
Cite moi au hasard 2 registres en bank2
Cite moi au hasard 2 registres en bank3
Cite moi au hasard 2 registres en bank commune

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Je sais bien que c'est lourd, mais après tu vas voir, tout seras plus facile.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Je comprends ton inquiétude sur le choix de ce Pic16F887, pour apprendre faut commencer petit.
car tu vas voir qu'il y à  pas que la compréhension du microcontrôleur, car l'électronique c'est de la science avant
toute chose.

Et je peux te dire qu'il mets arrivé de réécrire un programme qui était fait pour un microcontrôleur 16 bits
en microcontrôleur 8 bits.

La plupart des personnes disent qu'un 18F est mieux qu'un 16F c'est du n'importe quoi, tous dépends de l'utilisation.

C'est comme ci tu me dirais, je vais au marché qui se trouve à  500 mètres de chez moi, je prends ma Ferraris,
ça iras plus vite.

Entre la 2Cv et la Ferraris rien ne changeras, les deux arriverons en même temps vu la distance
et l'encombrement.

En ce qui concerne la qualité des composants, ça iras très bien ce que tu as, crois en mon expérience.


  A+



Arckont

Bonjour, bonjour!

Alors, essayons de répondre à  tout ça ...

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Alors pour voir si tu as compris, tu vas me dire dans quelle bank se trouve les registres cité ci-dessous.

PORTA         :Bank0
OPTION_REG :Bank3
ANSEL         :Bank3
CMCON        :? (BANK2 CM1CON0, CM2CON0 CM2CON1 ?)
TRISB          :Bank1 et Bank3
ADCON1       :Bank1
ADCON0       :Bank0
PR2             :Bank1
T2CON         :Bank0
CCP1CON      :Bank0
INTCON        :Bank3

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Cite moi au hasard 2 registres en bank0
     -- TMR2, CCPR1H
Cite moi au hasard 2 registres en bank1
     -- PIE1, VRCON
Cite moi au hasard 2 registres en bank2
     -- WDTCON, PCLATH
Cite moi au hasard 2 registres en bank3
     -- BAUDCTL, ANSELH
Cite moi au hasard 2 registres en bank commune
     -- STATUS, FSR
je pense avoir pigé pour les registres partagés, ils sont au même niveau et pas forcément partagés sur les 4 bank , comme TRISB

--------------------------------------------------------------------------------------------------------------------------------------------------------------

est-ce bien ça ? :)


En revanche je suis bilingue et je comprends parfaitement l'Anglais, à  vrai dire...

Bonne journée et à  bientôt!

Curiosus

#20
Bonjour bidouilleurs, bidouilleuses,

PORTA         : Bank0 -- ok
OPTION_REG : Bank3 -- ok mais il existe aussi en Bank1
ANSEL         : Bank3 -- ok

TRISB          :Bank1 et Bank3 -- ok
ADCON1       :Bank1 -- ok
ADCON0       :Bank0 -- ok
PR2             :Bank1 -- ok
T2CON         :Bank0 -- ok
CCP1CON      :Bank0 -- ok
INTCON        :Bank3 -- ok

--------------------------------------------------------------------------------------------------------------------------------------------------------------

CMCON        : excuse moi j'ai fait une boulet :( :-[ J'ai confondu avec un autre PIC, bon j'ai le droit à  une punition. 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Cite moi au hasard 2 registres en bank0
     -- TMR2, CCPR1H                           -- ok
Cite moi au hasard 2 registres en bank1
     -- PIE1, VRCON                             -- ok
Cite moi au hasard 2 registres en bank2
     -- WDTCON, PCLATH                      -- ok mais PCLATH est en Bank commune
Cite moi au hasard 2 registres en bank3
     -- BAUDCTL, ANSELH                     -- ok
Cite moi au hasard 2 registres en bank commune
     -- STATUS, FSR                            -- ok

Citationje pense avoir pigé pour les registres partagés, ils sont au même niveau et pas forcément partagés sur les 4 bank , comme TRISB

Exacte et bien vu pour ta remarque, je peux dire que tu as réussi avec succès l’exercice.

Bon maintenant que tu as compris tout cela, on va passer au niveau supérieur.

Tu vas installes le compilateur, et l'éditeur qui fait office de débogueur, qui est bien pratique

Tu télécharges MPLAB 8.92 à  cette endroit www.digitale-elektronik.de/product_downloads/MPLAB_IDE_8_92.zip et tu  l'installes.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Pour t' apprendre à  utiliser MPLAB 8.92  j'ai  créé un bout de code ASM qui sert à  rien

C'est pour t'apprendre la compilation d'un fichier ASM, après on se serviras de ce même fichier pour écrire
un petit programme.

La première chose à  faire est de créer un dossier qu'on nommera Debut sur le lecteur de ton choix, mais
à  la racine de ton disque dur.

Tu télécharges le fichier Debut.zip et tu le décompresse en mettant les fichier dans le dossier
Debut

Une fois que tu as fait tout cela, tu me prévient, car je vais me restaurer.

CitationEn revanche je suis bilingue et je comprends parfaitement l'Anglais, à  vrai dire...

Et ben tu vas pouvoir m'aider, parce que moi et l'anglais on est en guerre >:( j'y comprends que dalle.

  A+

Arckont

Coucou!

programme installé, fichier télécharge, prêt à  l'action :)


pour tes problèmes avec l'Anglais, je suis bien sûr prêt à  t'aider, ce ne serait qu'un juste retour des choses :)

Bonne journée à  toi et à  bientôt!

Curiosus

#22
Bonjour bidouilleurs, bidouilleuses,

Si tes fichier sont installés correctement tu dois avoir dans le dossier Debut le fichier Debut.asm et P16F887.inc

Le fichier P16F887.inc et l'endroit ou son marqué l'emplacement mémoire des registres, il sert au compilateur.

Chaque Pic à  un fichier d’extension *.inc, il se trouve dans le répertoire de MPLAB IDE\MPASM Suite\

Dans ce répertoire se trouve le compilateur qui s'appelle MPASMWIN.exe.

Le fichier Debut.asm et celui que tu vas utiliser pour écrire ce que tu veux faire avec ton Pic.

Bon maintenant tu dois avoir un icône sur ton bureau marqué en dessous MPLAB IDE v8.92



Tu clips dessus et tu suis les photos joint :

Ouvrir



Aller chercher le fichier



Voilà  tu viens de chargé le fichier dans l'éditeur de MPLAB IDE v8.92 si la couleur de mon éditeur et différente c'est normal, je l'ai paramétré comme cela.



Sélection du Microcontrôleur



Sélection du microcontrôleur Pic16F887




Compilation du Fichier d'extension ASM



Un message doit apparaître, qui t'indique un Sucées 




Voilà  tu viens de compiler ton premier fichier, tu dois avoir dans le dossier Debut un fichier qui s'appelle Debut.hex, c'est celui-ci que tu mettras dans ton Pic.

Comme tu n'as pas encore le programmeur, n'y le microcontrôleur, on peu pas le faire.

D'autre par il existe un autre fichier qui s'appelle Debut.err dans le dossier Debut c'est celui ou son marqué les erreurs que tu as pu faire.

Si tu n'as pas fait d'erreur il doit faire zéro octet, toujours vérifier si celui-ci et à  zéro octet.

Maintenant on va travailler sur chaque registre, on réalité on utilise généralement ceux qu'on a besoin.
Mais certain registre même si on les utilises pas on besoin d'être configuré pour divers raison.




Comme tu peux le voir en haut du fichier *.asm il y a ceci

Errorlevel-302                         ; Supprime le message "Ensure that bank bits are correct"


list      p=16F887                  ; processeur utilisé

#include    <p16F887.inc>          ; Définitions des constantes





__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT

__CONFIG _CONFIG2, _WRT_OFF & _BOR21V


Pour l'instant je vais pas t'expliquer à  quoi ça sert, tu le laisse comme telle, car bien d'autre chose à  voir avant.

La prochaine fois on regarderas les déclarations des variables.

D'après toi c'est quoi une variable ?  ;)

Je te propose de faire un premier programme pour faire clignoter une LED, pour commencer.

A+

Arckont

Bonjour Curiosus!

Alors, j'ai bien mon petit fichier .hex, rien dans le log d'erreur tout va bien :)

vu que je suis system engineer je suis plutôt habitué à  tout ce qui est scripting, enfin en powershell, du moins.

donc tout ce qui est variables,boucles, traitement, parsing etc... ça devrait aller :) juste que d'un langage à  l'autre c'est pas forcément simple de s'adapter, mais je vais m'en sortir ^^
on peut tout à  fait commencer par un petit programme qui fait blink une led, effectivement c'est le "Hello World!" de l'électronique si j'ai bien compris :)

ça me permettra de comprendre en pratique comment ça se passe...
j'ai reçu le programmateur pickit , mais toujours pas les microcontrôleurs, ni les breadboards, on va donc devoir faire preuve de patience... mais j'ai déjà  une pièce c'est pas mal en soi :)

Bonne journée et à  bientôt!

Curiosus

#24
Bonjour bidouilleurs, bidouilleuses,

Maintenant on va déclarer nos variables

Microchip utilise des directives qui seront traduit par le compilateur, les directives serve à  nous simplifier la vie.

Pour les déclarations de nos variables ont utilisera la directive qui se nome CBLOCK 

Toute zone définie par l’utilisateur comme « déclarant » des variables commence avec la directive CBLOCK,
suivie par l’adresse du début de la zone.

Pour placer nos variables, qui sont des emplacements mémoires auxquels on a donné un nom, nous consultons
de nouveau la page 25.(celle que tu as étudié.)   

Nous voyons que la zone SRAM est librement utilisable à  l'adresse H'20', pour la bank0

Notre zone de variable contiendra donc la directive

  CBLOCK H'20'                        ; début de la zone variables

Ensuite, tu peux utiliser 80 emplacements mémoire, qui répondront à  la syntaxe Suivante :

Nom de la variable suivi du signe « : » (les espaces sont ignorés) suivi de la taille utilisée.

Par exemple :

loop1 : 1                 ; Zone de 1 octets qui représente 8 bits
boucle :4                ; Zone de 4 octets qui représente 32 bits
temps : 8                 ; zone de 8 octets qui représente 64 bits

Ensuite, tu dois préciser la fin de la zone en cours à  l’aide de la directive ENDC 

Exemple complet :

CBLOCK H'20'              ; début de la zone de la sdram en bank0   
      ok : 1                     
      tourner : 2
      hello : 4
ENDC




Peux tu me refaire la même chose pour le début de la bank1, bank2, bank3 et bank commune, en mettant des variables du non de ton choix avec 1 octet, 2 octets, 5 octet ?




Là , on va passer pas mal de temps, mais c'est nécessaire, de toute façon comme il faut faire pas mal de théorie
le microcontrôleur n'est pas forcément important, pour l'instant, car encore plein de chose à  voir.

Citation
effectivement c'est le "Hello World!" de l'électronique si j'ai bien compris :)

Oui, bien vu, c'est la première chose que l'on doit faire avec un microcontrôleur, même si on n'est pas débutant. ;)

Bon pour l'instant j'attends de voir si tu as compris, c'est pas évident, je le reconnais, c'est pas mon métier l'électronique
je suis juste un passionner.
.
  A+

Arckont

Bonjour, Cher Curiosus,

voilà  voilà , je prend une petite pose pour lire l'énoncé et y répondre.

donc je vois que la définition des variables est comme dans le bon vieux basic, on doit définir le "tiroir" dans lequel on store le contenu, c'est pas sélectionné au fur et à  mesure.

donc je dirais que pour donner les premiers emplacements de variablbes utilisables sur les bank 1 , 2 et 3 ce serait:

bank1 : h'A0'
bank2 : h'110'
bank3 : h'190'
donc je dirais que pour répondre à  la question, ce serait:

bank1:
CBLOCK H'A0'
     oiseau : 1
     felin    : 2
     reptile : 5
ENDC

bank2:
CBLOCK H'110'
     porcelaine : 1
     metal       : 2
     bois         : 5
ENDC

bank3:
CBLOCK H'190'
     liquide  : 1
     solide   : 2
     gaz      : 5
ENDC

et aussi du coup pour les emplacements communs...

je ne vois pas de "file address" commun, même si je vois des registres communs...

tu peux m'en dire plus ?
j'ai cherché un peu sur google mais je ne suis pas sûr de comprendre, je m'y perds... je vois des gens qui parlent de créer un nouveau registre commun en définissant des plages dans chaque bank qu'on veut mettre en commun... mais vu là  ou on en est ça me semble un peu trop avancé...

sinon est-ce possible de déclarer une variable au même nom dans trois ou quatre bank différente?
par exemple

CBLOCK H'04'
test : 1
ENDC
CBLOCK H'84'
test : 1
ENDC
CBLOCK H'104'
test : 1
ENDC
CBLOCK H'184'
test : 1
ENDC

je suis toute ouie :)
désolé si je semble être lent à  apprendre, j'avoue que je découvre un petit monde là  et c'est pas si simple pour mon vieux cerveau d'intégrer tout ça...

Curiosus

#26
Bonjour Arckont, et tout le forum

Un peu fatigué cette semaine, ce qui explique mon retard, je vais essayer de répondre à  toutes tes questions.




bank1:

CBLOCK H'A0'
     oiseau : 1
     felin    : 2
     reptile : 5
ENDC




bank2:

CBLOCK H'110'
     porcelaine : 1
     metal       : 2
     bois         : 5
ENDC




bank3:

CBLOCK H'190'
     liquide  : 1
     solide   : 2
     gaz      : 5
ENDC




C'est parfait pour la déclaration de la bank1, bank2, bank3, en ce qui concerne la bank commune elle commence
à  H'70' et fini H'7F', ce qui fait H'7F -  H'70' = 16 octets

Regarde bien à  la page 25 du datasheet, tu vas vite comprendre, voila la solution.

CBLOCK H'70'
    solution:1       1 octet
    trouver :2      2 octets
    bravo :5        5 octets
ENDC

ce qui fait au total
1+2+5 = 8 octets, il te reste 8 octets

En réalité quand tu déclares une variables elle prend un emplacement mémoire qu'on appelle adresse

Exemple :


CBLOCK H'110'                                     ; bank2:
     porcelaine : 1                               
     metal       : 2
     bois         : 5
     ok           : 1
ENDC

Porcelaine  se trouve au début à   H'110' , car elle fait 1 octet

metal        se trouve au début à  H'111' et H'112', car elle fait 2 octets

bois          se trouve au début à  H'113' et H'114' et H'115', et H'116' et H'117' , car elle fait 5 octets

ok           se trouve à  H'118'

Suffit d'additionner pour savoir l'emplacement de ton adresse mémoire, en suivant l'ordre de tes déclarations.

Attention c'est de l'hexadécimal, si tu fais une opération sert toi de la calculatrice de Windows, en mode
scientifique.

Par pitié ne confond pas les registres avec les variables, laisse les de coté pour l'instant.

Dans une variable on peut y mettre une valeur dans un emplacement que tu lui as attribué
nous verrons plus loin comment faire.

Citation sinon est-ce possible de déclarer une variable au même nom dans trois ou quatre bank différente ?

Non c'est pas possible de déclarer le même non de variable dans chaque bank.

Attention de ne pas s'écarter dans les adresses mémoires, comme tu l'as fait dans ton exemple, car là 
tu n'es plus dans la mémoire que tu as le doit d'utiliser.

CBLOCK H'04'
test : 1
ENDC




Maintenant je vais te parler de la directive ORG




La directive ORG, suivie de l’adresse, précise à  quelle adresse l’instruction suivante sera
placée dans la mémoire programme du PIC.

Il est important de savoir 2 choses :

Après un reset ou une mise sous tension, le PIC démarre toujours à  l’adresse H'0'

Le début de ton programme doit donc se situer là .

L’adresse H'4' est l’adresse utilisée par les interruptions pour ce Pic (nous verrons le principe plus tard).


  ORG H'0'                                 ; Adresse de départ après reset
goto debut   

La première ligne est notre directive ORG, qui indique que la ligne suivante sera placée à  l’adresse H'0'

La seconde ligne est une instruction, goto

Si tu as fait du basic tu dois savoir à  quoi sert un goto suivit du non de l’étiquette.

Après le reset le PIC exécute donc l’instruction qui se trouve à  l’adresse H'0' suivie par l’instruction qui se trouve
à  l’adresse goto debut plus bas dans le programme (donc juste en dessous de l’étiquette goto debut

Exemple :

ORG H'0'
  goto salut

salut

Alors essaye de me faire une étiquette qui n’arrête pas de se renvoyer l'un vers l'autre avec l'instruction goto

Si ça commence à  être hard tu m'arrêtes et tu m'explique ou tu butes.

   A+

Arckont

Bonjour, Bonjour!

désolé pour le délai, j'ai été surchargé de boulot ces derniers temps et je n'ai pas pris le temps de passer...

Donc...
*replace ses lunettes*

En gros c'est assez simple ce que tu me demande...

ORG H'0'
firstloop
echo "coucou"(*)
  goto secondloop
secondloop
echo "bouh"(*)
  goto firstlooop

(*) exemple de commande à  réaliser, je ne connais pas encore ce qui peut être éxécuté...
à  la place de "echo "coucou"" et "echo "bouh"" on peut mettre les deux commandes qui vont définir une durée d'alimentation sur une porte pour allumer une led X milisecondes et dans l'autre une période de pause sans alimentation pour représenter la phase éteinte?

est-ce que c'était bien le but de l'éxercice ou j'ai rien "bité"  ? :)

Merci et à  bientôt Curiosus!
merci d'être là  pour m'apprendre tout ça :)

Curiosus

#28
Bonjour Arckont, et tout le forum,

Comme je suis dans la plantation de mon potager, j'ai pour l'instant pas toujours du temps pour répondre.   

Bon maintenant on y est, tu vas apprendre les instructions au nombre de 35 pour c'est PIC là .

On va déjà  apprendre l’essentiel qui est plutôt simple.

goto ok tu sais ton servir

Fais moi par de toutes les instructions que tu connais.

ADDLW

ADDWF

ANDLW

ANDWF

BCF

BSF

BTFSC

BTFSS

CALL

CLRF

CLRW

CLRWDT

COMF

DECF

DECFSZ

GOTO     

INCF

INCFSZ

IORLW

IORWF

MOVF

MOVFW

MOVLW

MOVWF

NOP

RETFIE

RETLW

RETURN

RLF

RRF

SLEEP

SUBLW

SUBWF

SWAPF

XORLW

XORWF


Ne t’inquiète pas, on va apprendre les instructions on fonction de notre besoin, et je t'expliquerais celle-ci.


As tu reçu ton PicKit3 et ton microcontrôleur ?












Arckont

Coucou Curiosus,
pas de souci je suis également en train de préparer le potager ;)

Alors... j'en connais très peu...

GOTO
SLEEP
je connais...

CALL je suis pas sûr dans notre cas...

et j'ai les breadboards (j'en ai commandé une grande sur support aluminium aussi entretemps que j'ai reçu)
et j'ai reçu mes microcontroleurs ce mardi! :)
j'ai le reste du matériel.
là  je suis juste en train de bâtir mon atelier au fond du garage, cas mon épouse a légèrement ... "peu apprécié" la colonisation du bureau par les étagères de rangement de composants... :p donc là  je suis en phase menuiserie pour avoir un plan de travail propre et adapté, ainsi qu'un éclairage approprié. je devrais avoir fini demain, ensuite il faudra laisser l'huile faire son travail dans le bois...
A bientôt! :)
j'ai hâte de commencer :D