- Page 1: LA PROGRAMMATION DES PICSPAR BIGONO
- Page 4 and 5: 9. LES DIFFÉRENTS TYPES DE RESET .
- Page 6 and 7: 20.8 EXERCICE 2 : UNE MÉTHODE PLUS
- Page 8 and 9: 25.1.1 Le start-bit................
- Page 10 and 11: Je suis toujours à l’écoute de
- Page 12 and 13: Nous nous intéresserons donc dans
- Page 16 and 17: 0 : hors service (_BODEN_OFF)- PWRT
- Page 18 and 19: 3.2.2 L’adressage indirectL’adr
- Page 20 and 21: Une de celle-ci, la plus gênante,
- Page 22 and 23: NOTES : ...22
- Page 24 and 25: Cliquez « OK » dans la fenêtre
- Page 26 and 27: ; 0= horloge interne; TOSE b4 : 1=
- Page 28 and 29: w_temp : 1status_temp : 1FSR_temp :
- Page 30 and 31: de la page 15 du datasheet nous app
- Page 32 and 33: LE REGISTRE PCLATH N’EST JAMAIS M
- Page 34 and 35: Pour lui faire croire que le saut s
- Page 36 and 37: Bon, ici que va-t-on faire ? Et bie
- Page 38 and 39: IF BIT3 ; si page 1 ou 3bsf PCLATH
- Page 40 and 41: La macro va générer 5 lignes de c
- Page 42 and 43: Notes : …42
- Page 44 and 45: - Registre : Registre auquel le fla
- Page 46 and 47: - Le bit PEIE du registre INTCON do
- Page 48 and 49: clrf STATUS ; pointer sur la banque
- Page 50 and 51: IMPORTANT : la routine d’interrup
- Page 52 and 53: ; Interruption convertisseur A/D; -
- Page 54 and 55: Trois remarques :- Comme c’est pr
- Page 56 and 57: Notes : …56
- Page 58 and 59: d’insérer ce support dans le sup
- Page 61 and 62: Notes : …61
- Page 63 and 64: 7. Migration du 16F84 vers le 16F87
- Page 65 and 66:
Exemple :movlw 0x10 ; pointer sur 0
- Page 67 and 68:
7.3.3 La méthode conseilléeVous l
- Page 69 and 70:
OPTIONVAL EQUH'0087'INTERMASK EQUH'
- Page 71 and 72:
;**********************************
- Page 73 and 74:
Nous voyons donc qu’il nous suffi
- Page 75 and 76:
sf INTCON,GIE ; valider interruptio
- Page 77 and 78:
Notes : …77
- Page 79 and 80:
8. Optimisons un peuPlusieurs d’e
- Page 81 and 82:
movlw D’20’ ; pour 20 bouclesmo
- Page 83 and 84:
Je vais effectuer un copier/coller
- Page 85 and 86:
movwf w_temp; sauver registre Wswap
- Page 87 and 88:
Nous pouvons dire que pour la presq
- Page 89 and 90:
La ligne suivante peut être suppri
- Page 91 and 92:
; ----------------CBLOCK 0x70ENDC;
- Page 93 and 94:
Il n’y a pas une seule optimisati
- Page 95 and 96:
call traitreg ; mettre le double da
- Page 97 and 98:
; Interruption TMR0; --------------
- Page 99 and 100:
Si vous analysez bien, vous remarqu
- Page 101 and 102:
ORG 0x00startmovlw D'14' ; nombre d
- Page 103 and 104:
Notes : …103
- Page 105 and 106:
9. Les différents types de resetNo
- Page 107 and 108:
Dans votre programme, vous détecte
- Page 109 and 110:
Certains registres sont en effet af
- Page 111 and 112:
10. Les ports entrée/sortieNous al
- Page 113 and 114:
Une fois de plus, ce PORT fonctionn
- Page 115 and 116:
Notes : …115
- Page 117 and 118:
11. Le PORTD en mode PSP11.1 A quoi
- Page 119 and 120:
En fait, la procédure est simple,
- Page 121 and 122:
- Au minimum 20 à 25 ns plus tard,
- Page 123 and 124:
12. Les accès à la mémoire eepro
- Page 125 and 126:
12.3 L’accès en écritureProcéd
- Page 127 and 128:
13. Les accès à la mémoire progr
- Page 129 and 130:
13.3 Les accès en écritureLa proc
- Page 131 and 132:
Ceci explique que je vais réaliser
- Page 133 and 134:
Afin d’avoir une idée de ce que
- Page 135 and 136:
; lumdat.inc *; *;*****************
- Page 137 and 138:
; Changement de banques; ----------
- Page 139 and 140:
eturn; fin d'interruptionPassons à
- Page 141 and 142:
; Attend que le flag soit positionn
- Page 143 and 144:
DA B'00000100'DA B'00001000'DA B'00
- Page 145 and 146:
sf EECON1,EEPGD ; accès à la mém
- Page 147 and 148:
Notes : …147
- Page 149 and 150:
14. Le timer 014.1 GénéralitésNo
- Page 151 and 152:
On voit alors tout de suite que si
- Page 153 and 154:
Si maintenant, nous désirons que l
- Page 155 and 156:
15. Le timer 1Voici un sujet qui m
- Page 157 and 158:
Le timer 1 peut, tout comme le time
- Page 159 and 160:
15.5 Le timer 1 en mode « timer »
- Page 161 and 162:
Donc, le timer 1 utilisé en mode
- Page 163 and 164:
Vous notez donc la présence de 2 q
- Page 165 and 166:
La philosophie utilisée est donc l
- Page 167 and 168:
clrf TMR1L ; effacer timer 1, 8 lsb
- Page 169 and 170:
Nous pouvons utiliser l’algorithm
- Page 171 and 172:
Nous retrouvons donc le même type
- Page 173 and 174:
15.12.1 Un peu de mathsJe pourrais
- Page 175 and 176:
Donc, comme I = U/R,I R2 = Vdd / (R
- Page 177 and 178:
Interruption timer 1Inverser LEDRec
- Page 179 and 180:
;**********************************
- Page 181 and 182:
Ceux qui s’en sont souvenus sont
- Page 183 and 184:
Notes : …183
- Page 185 and 186:
16. Le debuggage « pin-stimulus »
- Page 187 and 188:
- Un requester s’ouvre alors, vou
- Page 189 and 190:
17. Le timer 2Dans ce chapitre, nou
- Page 191 and 192:
- Chaque fois que le contenu du pos
- Page 193 and 194:
6 b5 b4 b3 Postdiviseur0 0 0 0 10 0
- Page 195 and 196:
Qu’à cela ne tienne, il nous suf
- Page 197 and 198:
; 0,2µs * 16 * 10 * 125 * 125 = 50
- Page 199 and 200:
18. Récapitulatif sur les timers18
- Page 201 and 202:
Vous voyez donc qu’avec cette mé
- Page 203 and 204:
19. Le convertisseur analogique/num
- Page 205 and 206:
Si maintenant notre valeur analogiq
- Page 207 and 208:
Plus les photos sont rapprochées d
- Page 209 and 210:
- La pin est déconnectée du conde
- Page 211 and 212:
Tc maximal = 20,12 µsMaintenant le
- Page 213 and 214:
- Le numéro de page est-il inféri
- Page 215 and 216:
Nous voici donc arrivé à la quest
- Page 217 and 218:
A ceci nous ajoutons 2Tad, soit 200
- Page 219 and 220:
Val numérisée = ((V IN - V REF- )
- Page 221 and 222:
On voit très bien sur ce schéma q
- Page 223 and 224:
Les résistances seront calculées
- Page 225 and 226:
Nous allons donc devoir nous arrang
- Page 227 and 228:
C = 1 / (2 * π * 50Hz * 500Ohms) =
- Page 229 and 230:
La première colonne contient les 1
- Page 231 and 232:
ADCS1 ADCS0 Diviseur Fréquence max
- Page 233 and 234:
9) Lisez les registres ADRESH et si
- Page 235 and 236:
éférence externe. Nous choisirons
- Page 237 and 238:
Donc, notre potentiomètre devra fa
- Page 239 and 240:
;**********************************
- Page 241 and 242:
BANK2 macrobcf STATUS,RP0bsf STATUS
- Page 243 and 244:
simplifier facilement le programme,
- Page 245 and 246:
Ensuite, la somme des 8 valeurs obt
- Page 247 and 248:
; démarrage du convertisseur; ----
- Page 249 and 250:
Notes : …249
- Page 251 and 252:
20. Les modules CCP1 et CCP220.1 G
- Page 253 and 254:
CCPM Fonctionnement0000 Module CCPx
- Page 255 and 256:
20.4.2 Champs d’applicationVous v
- Page 257 and 258:
- Dans le cas où la pin CCPx serai
- Page 259 and 260:
Autour de ce fonctionnement de base
- Page 261 and 262:
0xFFFF. Dans ce dernier cas, le pos
- Page 263 and 264:
Je développe un peu ce dernier poi
- Page 265 and 266:
20.6 Le mode « PWM »Nous voici da
- Page 267 and 268:
Voyons maintenant un rapport cycliq
- Page 269 and 270:
Comme vous constatez, nous avons d
- Page 271 and 272:
Comme notre PR2, et donc le temps T
- Page 273 and 274:
PR2 = (TC / (prédiviseur * 4 * Tos
- Page 275 and 276:
Je commente un peu. Vous voyez en d
- Page 277 and 278:
Remarquez que votre servo dispose d
- Page 279 and 280:
Et bien zut, ça ne marche pas. C
- Page 281 and 282:
Partie entière = B’00111101’ =
- Page 283 and 284:
Donc, D’255’ = B’ 00000000111
- Page 285 and 286:
__CONFIG _CP_OFF & _DEBUG_OFF & _WR
- Page 287 and 288:
;**********************************
- Page 289 and 290:
; sauver les 2 bits fractionnaires;
- Page 291 and 292:
Lancez l’assemblage, placez le fi
- Page 293 and 294:
Nous utiliserons pour cet exercice
- Page 295 and 296:
Nous allons donc décider de multip
- Page 297 and 298:
;_HS_OSCOscillateur haute vitesse (
- Page 299 and 300:
PCLATH_temp : 1ENDC; sauvegarde PCL
- Page 301 and 302:
; -------------------------------mo
- Page 303 and 304:
Donc, MPLAB a beau vous indiquer qu
- Page 305 and 306:
Ensuite, on configure notre convert
- Page 307 and 308:
Notes : …307
- Page 309 and 310:
21. Le module MSSP en mode SPI21.1
- Page 311 and 312:
Vous constatez que :- La lecture s
- Page 313 and 314:
Ces registres contiennent des bits
- Page 315 and 316:
A l’inverse, pour obtenir la réc
- Page 317 and 318:
la ligne en question, au niveau int
- Page 319 and 320:
Pour communiquer, le PIC maître s
- Page 321 and 322:
Vous constatez que la sélection d
- Page 323 and 324:
Vous constatez que l’émission de
- Page 325 and 326:
capture du bit concerné. Ceci impo
- Page 327 and 328:
21.5.7 Le mode sleepLe passage en m
- Page 329 and 330:
SSPSTAT en mode SPI SLAVEb7 : doit
- Page 331 and 332:
21.6.5 Choix et chronogrammesNous p
- Page 333 and 334:
- On initialise CKP en fonction de
- Page 335 and 336:
Ce montage n’est guère compliqu
- Page 337 and 338:
LIST p=16F876 ; Définition de proc
- Page 339 and 340:
;**********************************
- Page 341 and 342:
movwf T2CON ; lancer timer 2Viennen
- Page 343 and 344:
cf PIR1,SSPIF ; effacer flagmovf nu
- Page 345 and 346:
sf STATUS,RP1movwf EEADR; pointer s
- Page 347 and 348:
; de l'octet suivant;restaurer regi
- Page 349 and 350:
- On réceptionne l’octet corresp
- Page 351 and 352:
Ensuite, les variables. Il suffit p
- Page 353 and 354:
; initialiser SPI; ---------------m
- Page 355 and 356:
Notes : …355
- Page 357 and 358:
22. Le bus I 2 C22.1 IntroductionJ
- Page 359 and 360:
Imaginons que vous désiriez allume
- Page 361 and 362:
ATTENTION : souvenez-vous que la ma
- Page 363 and 364:
22.2.4 L’acknowledgeVoici de nouv
- Page 365 and 366:
Nous avons vu tous les signaux poss
- Page 367 and 368:
A ce stade, nous avons choisi notre
- Page 369 and 370:
Vous voyez que de nouveau, tout est
- Page 371 and 372:
La première question qui se pose e
- Page 373 and 374:
d’écrire un « 1 », et lira «
- Page 375 and 376:
On notera une dernière pin, WP, qu
- Page 377 and 378:
Je n’ai représenté que les lign
- Page 379 and 380:
qu’il n’a pas terminé l’opé
- Page 381 and 382:
+ B’0000 0000 0000 0010’-------
- Page 383 and 384:
Ou, sous forme de chronogramme simp
- Page 385 and 386:
Sur une 24C64, on a :- start-condit
- Page 387 and 388:
23. Le module MSSP en mode I²C23.1
- Page 389 and 390:
- En I²C esclave, il vous indique
- Page 391 and 392:
Commençons par le mode esclave. C
- Page 393 and 394:
23.5 Le registre SSPCON2Voici un re
- Page 395 and 396:
- On positionne SMP (slew rate cont
- Page 397 and 398:
clrwdt; effacer watchdogbtfsc SSPST
- Page 399 and 400:
Cette procédure ne lance aucune co
- Page 401 and 402:
Si vous avez tout compris, vous con
- Page 403 and 404:
- On envoie NOACK- On attend que l
- Page 405 and 406:
L’astuce utilisée ici permet de
- Page 407 and 408:
Donc, puisque la transmission peut
- Page 409 and 410:
En réalité, pas tout à fait. Si
- Page 411 and 412:
movwf SSPBUF ; dans le bufferbtfsc
- Page 413 and 414:
R_W = 1BF = 0D_A = 1; il s’agit d
- Page 415 and 416:
xorlw B’00001100’ ; demande d
- Page 417 and 418:
- On écrit le second octet d’adr
- Page 419 and 420:
Notez sur ce schéma la présence d
- Page 421 and 422:
uflen : 1cmpt : 1flags : 1eepa : 2E
- Page 423 and 424:
; initialiser I2C; ---------------c
- Page 425 and 426:
; envoyer buffer dans eeprom; -----
- Page 427 and 428:
- Vous pouvez ajouter un nouveau p
- Page 429 and 430:
;----------------------------------
- Page 431 and 432:
;**********************************
- Page 433 and 434:
Malheureusement, ce bug affecte act
- Page 435 and 436:
24. Le module USART en mode série
- Page 437 and 438:
Je vous donne un petit exemple de
- Page 439 and 440:
CREN lance la réception continue.
- Page 441 and 442:
Initbsf STATUS,RP0 ; passer en banq
- Page 443 and 444:
placez votre dernier octet à envoy
- Page 445 and 446:
Le fonctionnement est donc relative
- Page 447 and 448:
24.10 La réception en mode esclave
- Page 449 and 450:
Vous remarquez que c’est par logi
- Page 451 and 452:
CBLOCK 0x20cmpt : 1ENDC; Début de
- Page 453 and 454:
BANKSEL PORTA; sélectionner banque
- Page 455 and 456:
clrwdt; effacer watchdogbtfss TXSTA
- Page 457 and 458:
;**********************************
- Page 459 and 460:
CBLOCK 0x70w_temp : 1status_temp :
- Page 461 and 462:
utiliserons que 8, j’ai choisi d
- Page 463 and 464:
sf TXSTA,TX9D ; oui, positionner 9e
- Page 465 and 466:
- Vous écrivez une seconde fois l
- Page 467 and 468:
25. Le module USART en mode asynchr
- Page 469 and 470:
On enverra donc :B’001101001’:
- Page 471 and 472:
La réception est par contre imposs
- Page 473 and 474:
25.1.6 Les erreurs de synchronisati
- Page 475 and 476:
A cette erreur, pour être précis,
- Page 477 and 478:
Ne vous y trompez pas : il y a 2 fi
- Page 479 and 480:
CREN lance la réception continue.
- Page 481 and 482:
Je vous livre donc simplement un pe
- Page 483 and 484:
25.8 L’erreur de frameL’erreur
- Page 485 and 486:
Imaginons alors une autre technique
- Page 487 and 488:
Comme celle-ci est stoppée durant
- Page 489 and 490:
Il n’y a pas de grandes difficult
- Page 491 and 492:
Nous pouvons penser être amenés
- Page 493 and 494:
J’ai posé que nous pouvons recev
- Page 495 and 496:
- Si RCIF est positionné,- On trai
- Page 497 and 498:
Vous pourriez penser qu’on aurait
- Page 499 and 500:
;----------------------------------
- Page 501 and 502:
; autoriser interruptions (banque 0
- Page 503 and 504:
- On attend que le message soit com
- Page 505 and 506:
pour vous laisser le temps de trait
- Page 507 and 508:
987654321Tout se passe bien, jusqu
- Page 509 and 510:
Le fait que suite à l’erreur, on
- Page 511 and 512:
26. Norme ISO7816 et PIC16F87626.1
- Page 513 and 514:
26.3 La succession « piccard2 ».L
- Page 515 and 516:
Par contre, vous constatez en premi
- Page 517 and 518:
- Soit vous connaissez la vitesse d
- Page 519 and 520:
27. Le mode sleep27.1 Généralité
- Page 521 and 522:
- Module CCP1 en mode capture (CCP1
- Page 523 and 524:
28. Le reste du datasheet28.1 Intro
- Page 525 and 526:
Je vous conseille également de tou
- Page 527 and 528:
De plus, si vous n’utilisez pas l
- Page 529 and 530:
Annexe1 : Questions fréquemment po
- Page 531 and 532:
Contribution sur base volontaireLa
- Page 533 and 534:
B. Utilisation du présent document
- Page 535:
- Edition terminée en révision be