Pour les fans de microcontroleur.... PIC et DSPIC
Vous chercher a produire un bruit blanc a moindre frai? Il vous suffit d'un PIC 12FXX. Ce circuit est pourvu d'un oscillateur interne... Donc avec un pic alimenter en 5 v, une resistance variable (10 ohms), un condensateur chimique 100uF et un haut parleur vous pouvez faire un bruit blanc ressemblant a un bruit de vapeur qui s'echappe d'un conduit.
Voici de prog qui permet de realiser ceci: Je precise qu'il est sous MPLAB
LIST p=12F675 ; Définition de processeur
#include <p12F675.inc> ; fichier include pour la compilation
****************************************
;** Registre **
;** configuration **
;****************************************
VALOPTION EQU B'10000000' ;page 19 du datasheet
;****************************************
;** PORT I/O **
;** configuration **
;****************************************
VALGPIO EQU B'00000000' ;port en sortie
;****************************************
;** Definition **
;** des macros **
;****************************************
;----------------------------------------
;Macro des banks (pour simplifier le programme)
;----------------------------------------
BANK0 macro
bcf STATUS,RP0
bcf STATUS,RP1
endm
BANK1 macro
bsf STATUS,RP0
bcf STATUS,RP1
endm
;****************************************
;** Declaration des **
;** variables **
;****************************************
CBLOCK 0x20 ; début de la zone variables en SRAM
temp :1
PCLtemp :1
donne :1
multi :1
multitemp :1
PCLATHtemp :1
saved :1
endc ;fin de zone
;****************************************
;** Origine d'écriture en mémoire **
;** Demarrage **
;****************************************
org 0x000
goto init ; Initialiser
;****************************************
;** Initialisation **
;****************************************
init
BANK0 ; sélectionner banque0 nettoyage des ports
clrf GPIO
clrf PCLATHtemp
clrf PCLtemp
;on configure les registres décris précèdement
BANK1
movlw VALOPTION
movwf OPTION_REG
movlw VALANSEL
movwf ANSEL
movlw VALGPIO
movwf TRISIO
BANK0
call reinit
goto start ; programme principal
reinit
movlw 0xB3 ;reinitialise les premieres valeurs d'adresse
movwf PCLtemp
clrf PCLATHtemp
return
start
call adress ;lecture valeur en flash a envoyer
movwf donne ;charge la valeur dans donne
btfss donne,0 ;on test tous les bits que l'on envoi en serie sur GPIO,2
bcf GPIO,2
btfsc donne,0
bsf GPIO,2
call tempo
btfss donne,1
bcf GPIO,2
btfsc donne,1
bsf GPIO,2
call tempo
btfss donne,2
bcf GPIO,2
btfsc donne,2
bsf GPIO,2
call tempo
btfss donne,3
bcf GPIO,2
btfsc donne,3
bsf GPIO,2
call tempo
btfss donne,4
bcf GPIO,2
btfsc donne,4
bsf GPIO,2
call tempo
btfss donne,5
bcf GPIO,2
btfsc donne,5
bsf GPIO,2
call tempo
btfss donne,6
bcf GPIO,2
btfsc donne,6
bsf GPIO,2
call tempo
btfss donne,7
bcf GPIO,2
btfsc donne,7
bsf GPIO,2
movfw PCLtemp
sublw 0xFF
btfsc STATUS,Z
call usf
movfw PCLATHtemp ;test fin de zone memoire flash atteinte
sublw 0x03
btfsc STATUS,Z
call reinit
bsf GPIO,4 ;mettre a un la sortie 4 de GPIO pour signaler le fonctionnement
goto start ; refaire la boucle principal
tempo
movfw TMR0 ; on charge a la volé la valeur courante du timer 0
andlw 0x0F ; cette tempo etant entre chaques données, cela va faire varier la vitesse d'envoi des bits
addwf donne,w ; de facon pseudo aleatoire
movwf temp
blcc decf temp,f
btfss STATUS,Z ; on repete la boucle un nb de foi aleatoire
goto blcc
return
usf
movlw 0x00
movwf PCLtemp
incf PCLATHtemp,f ;incremente PCLATH
return
org 0x00AA ;debut des variables
adress
movfw PCLtemp
sublw 0xFF ;test si PCL est a FF, fin de zone memoire
btfsc STATUS,Z
call usf
incf PCLtemp,f
movfw PCLATHtemp
movwf PCLATH ;charge octet fort adresse
movfw PCLtemp ;charge octet faible d'adresse
movwf PCL ;on force le CPU à sauter a l'adresse PCLATHtemp/PCLtemp
retlw #0x11 ; liste des valeurs aléatoires utilisées pour produire le bruit blanc
retlw #0x0C
retlw #0x04
retlw #0x07
retlw #0x16
retlw #0x18
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x03
retlw #0x08
retlw #0x0F
retlw #0x18
retlw #0x1C
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x09
retlw #0x10
retlw #0x10
retlw #0x0E
retlw #0x13
retlw #0x0A
retlw #0x0A
retlw #0x0E
retlw #0x11
retlw #0x13
retlw #0x1B
retlw #0x18
retlw #0x12
retlw #0x1A
retlw #0x1C
retlw #0x10
retlw #0x03
retlw #0x0A
retlw #0x0A
retlw #0x0C
retlw #0x09
retlw #0x0E
retlw #0x15
retlw #0x1B
retlw #0x0E
retlw #0x0E
retlw #0x06
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x11
retlw #0x06
retlw #0x0E
retlw #0x0E
retlw #0x0A
retlw #0x13
retlw #0x13
retlw #0x13
retlw #0x06
retlw #0x03
retlw #0x01
retlw #0x07
retlw #0x18
retlw #0x16
retlw #0x11
retlw #0x1C
retlw #0x15
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x06
retlw #0x0A
retlw #0x13
retlw #0x09
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x10
retlw #0x1A
retlw #0x13
retlw #0x11
retlw #0x10
retlw #0x10
retlw #0x0D
retlw #0x10
retlw #0x18
retlw #0x10
retlw #0x18
retlw #0x13
retlw #0x03
retlw #0x08
retlw #0x10
retlw #0x0B
retlw #0x05
retlw #0x11
retlw #0x10
retlw #0x09
retlw #0x0F
retlw #0x18
retlw #0x12
retlw #0x0A
retlw #0x10
retlw #0x1A
retlw #0x1A
retlw #0x0A
retlw #0x13
retlw #0x0E
retlw #0x05
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x07
retlw #0x15
retlw #0x09
retlw #0x02
retlw #0x10
retlw #0x1A
retlw #0x14
retlw #0x16
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x09
retlw #0x14
retlw #0x16
retlw #0x06
retlw #0x0B
retlw #0x05
retlw #0x0B
retlw #0x13
retlw #0x05
retlw #0x06
retlw #0x13
retlw #0x08
retlw #0x0A
retlw #0x13
retlw #0x11
retlw #0x19
retlw #0x0A
retlw #0x09
retlw #0x0A
retlw #0x0C
retlw #0x18
retlw #0x11
retlw #0x14
retlw #0x14
retlw #0x13
retlw #0x16
retlw #0x15
retlw #0x10
retlw #0x09
retlw #0x14
retlw #0x0A
retlw #0x02
retlw #0x0A
retlw #0x0F
retlw #0x09
retlw #0x0C
retlw #0x04
retlw #0x11
retlw #0x0F
retlw #0x0B
retlw #0x1A
retlw #0x15
retlw #0x07
retlw #0x05
retlw #0x0C
retlw #0x15
retlw #0x0E
retlw #0x0A
retlw #0x0F
retlw #0x10
retlw #0x0F
retlw #0x09
retlw #0x0E
retlw #0x14
retlw #0x0D
retlw #0x0C
retlw #0x14
retlw #0x11
retlw #0x07
retlw #0x09
retlw #0x09
retlw #0x0A
retlw #0x09
retlw #0x0C
retlw #0x13
retlw #0x0C
retlw #0x02
retlw #0x06
retlw #0x0C
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x0B
retlw #0x03
retlw #0x07
retlw #0x10
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x02
retlw #0x01
retlw #0x04
retlw #0x14
retlw #0x09
retlw #0x09
retlw #0x18
retlw #0x0E
retlw #0x07
retlw #0x0C
retlw #0x12
retlw #0x18
retlw #0x08
retlw #0x03
retlw #0x11
retlw #0x0A
retlw #0x0F
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x16
retlw #0x1C
retlw #0x13
retlw #0x04
retlw #0x11
retlw #0x13
retlw #0x0C
retlw #0x0E
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x06
retlw #0x0A
retlw #0x08
retlw #0x06
retlw #0x0A
retlw #0x02
retlw #0x08
retlw #0x0E
retlw #0x17
retlw #0x1C
retlw #0x11
retlw #0x05
retlw #0x07
retlw #0x0E
retlw #0x0F
retlw #0x16
retlw #0x13
retlw #0x05
retlw #0x06
retlw #0x0C
retlw #0x15
retlw #0x1A
retlw #0x1C
retlw #0x13
retlw #0x16
retlw #0x09
retlw #0x02
retlw #0x07
retlw #0x12
retlw #0x08
retlw #0x15
retlw #0x14
retlw #0x10
retlw #0x15
retlw #0x10
retlw #0x0C
retlw #0x11
retlw #0x13
retlw #0x1A
retlw #0x1C
retlw #0x16
retlw #0x10
retlw #0x05
retlw #0x06
retlw #0x0D
retlw #0x0C
retlw #0x04
retlw #0x06
retlw #0x11
retlw #0x12
retlw #0x13
retlw #0x13
retlw #0x1C
retlw #0x10
retlw #0x06
retlw #0x13
retlw #0x1A
retlw #0x1C
retlw #0x11
retlw #0x0E
retlw #0x18
retlw #0x0C
retlw #0x06
retlw #0x15
retlw #0x1A
retlw #0x13
retlw #0x16
retlw #0x10
retlw #0x13
retlw #0x13
retlw #0x15
retlw #0x12
retlw #0x18
retlw #0x12
retlw #0x15
retlw #0x1A
retlw #0x1C
retlw #0x16
retlw #0x0E
retlw #0x0B
retlw #0x18
retlw #0x10
retlw #0x02
retlw #0x0A
retlw #0x11
retlw #0x11
retlw #0x1C
retlw #0x12
retlw #0x16
retlw #0x16
retlw #0x14
retlw #0x13
retlw #0x10
retlw #0x15
retlw #0x1B
retlw #0x17
retlw #0x15
retlw #0x11
retlw #0x0C
retlw #0x14
retlw #0x0D
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x0F
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x01
retlw #0x05
retlw #0x0D
retlw #0x0E
retlw #0x03
retlw #0x09
retlw #0x09
retlw #0x0E
retlw #0x11
retlw #0x0F
retlw #0x04
retlw #0x06
retlw #0x13
retlw #0x07
retlw #0x0A
retlw #0x0A
retlw #0x02
retlw #0x0E
retlw #0x17
retlw #0x0A
retlw #0x11
retlw #0x11
retlw #0x0E
retlw #0x0E
retlw #0x04
retlw #0x07
retlw #0x12
retlw #0x09
retlw #0x13
retlw #0x11
retlw #0x18
retlw #0x1B
retlw #0x1C
retlw #0x1B
retlw #0x13
retlw #0x10
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x15
retlw #0x12
retlw #0x18
retlw #0x13
retlw #0x04
retlw #0x11
retlw #0x0D
retlw #0x0A
retlw #0x10
retlw #0x13
retlw #0x05
retlw #0x0C
retlw #0x0F
retlw #0x0E
retlw #0x09
retlw #0x02
retlw #0x09
retlw #0x0E
retlw #0x11
retlw #0x18
retlw #0x11
retlw #0x0B
retlw #0x06
retlw #0x0D
retlw #0x0C
retlw #0x11
retlw #0x1A
retlw #0x11
retlw #0x04
retlw #0x07
retlw #0x0F
retlw #0x0E
retlw #0x0E
retlw #0x0C
retlw #0x08
retlw #0x0E
retlw #0x0C
retlw #0x0C
retlw #0x08
retlw #0x09
retlw #0x0B
retlw #0x03
retlw #0x13
retlw #0x14
retlw #0x0C
retlw #0x0C
retlw #0x03
retlw #0x02
retlw #0x10
retlw #0x1A
retlw #0x15
retlw #0x11
retlw #0x10
retlw #0x0E
retlw #0x10
retlw #0x05
retlw #0x0B
retlw #0x11
retlw #0x0A
retlw #0x0B
retlw #0x04
retlw #0x12
retlw #0x11
retlw #0x15
retlw #0x13
retlw #0x1C
retlw #0x13
retlw #0x0D
retlw #0x0A
retlw #0x10
retlw #0x10
retlw #0x05
retlw #0x02
retlw #0x06
retlw #0x14
retlw #0x09
retlw #0x03
retlw #0x11
retlw #0x17
retlw #0x07
retlw #0x0C
retlw #0x11
retlw #0x09
retlw #0x14
retlw #0x09
retlw #0x13
retlw #0x0A
retlw #0x0C
retlw #0x06
retlw #0x02
retlw #0x02
retlw #0x10
retlw #0x10
retlw #0x18
retlw #0x11
retlw #0x0C
retlw #0x0A
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x1C
retlw #0x15
retlw #0x14
retlw #0x11
retlw #0x15
retlw #0x1A
retlw #0x0D
retlw #0x0B
retlw #0x0E
retlw #0x08
retlw #0x02
retlw #0x06
retlw #0x09
retlw #0x0C
retlw #0x14
retlw #0x0F
retlw #0x06
retlw #0x02
retlw #0x03
retlw #0x10
retlw #0x10
retlw #0x0B
retlw #0x02
retlw #0x0A
retlw #0x18
retlw #0x1B
retlw #0x0E
retlw #0x07
retlw #0x11
retlw #0x11
retlw #0x13
retlw #0x0A
retlw #0x0D
retlw #0x14
retlw #0x10
retlw #0x0E
retlw #0x16
retlw #0x1B
retlw #0x1A
retlw #0x13
retlw #0x0F
retlw #0x17
retlw #0x19
retlw #0x0A
retlw #0x09
retlw #0x16
retlw #0x1A
retlw #0x1C
retlw #0x1A
retlw #0x12
retlw #0x0C
retlw #0x0A
retlw #0x0F
retlw #0x10
retlw #0x0E
retlw #0x18
retlw #0x18
retlw #0x0C
retlw #0x0E
retlw #0x0C
retlw #0x11
retlw #0x18
retlw #0x0B
retlw #0x13
retlw #0x1A
retlw #0x15
retlw #0x0D
retlw #0x0C
retlw #0x18
retlw #0x0E
retlw #0x03
retlw #0x05
retlw #0x0C
retlw #0x13
retlw #0x0F
retlw #0x02
retlw #0x0C
retlw #0x18
retlw #0x1C
retlw #0x16
retlw #0x13
retlw #0x18
retlw #0x13
retlw #0x15
retlw #0x0F
retlw #0x11
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x14
retlw #0x09
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x0F
retlw #0x12
retlw #0x0C
retlw #0x06
retlw #0x0D
retlw #0x05
retlw #0x05
retlw #0x0C
retlw #0x04
retlw #0x0C
retlw #0x05
retlw #0x04
retlw #0x0D
retlw #0x03
retlw #0x07
retlw #0x0C
retlw #0x02
retlw #0x08
retlw #0x13
retlw #0x07
retlw #0x02
retlw #0x09
retlw #0x17
retlw #0x11
retlw #0x0F
retlw #0x13
retlw #0x12
retlw #0x13
retlw #0x12
retlw #0x1C
retlw #0x12
retlw #0x05
retlw #0x08
retlw #0x13
retlw #0x0E
retlw #0x08
retlw #0x11
retlw #0x10
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x10
retlw #0x05
retlw #0x0C
retlw #0x06
retlw #0x03
retlw #0x0D
retlw #0x0E
retlw #0x0D
retlw #0x10
retlw #0x18
retlw #0x13
retlw #0x0E
retlw #0x18
retlw #0x13
retlw #0x05
retlw #0x0A
retlw #0x13
retlw #0x0F
retlw #0x06
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x1C
retlw #0x14
retlw #0x05
retlw #0x06
retlw #0x0C
retlw #0x13
retlw #0x0E
retlw #0x10
retlw #0x13
retlw #0x09
retlw #0x15
retlw #0x0B
retlw #0x11
retlw #0x1B
retlw #0x10
retlw #0x04
retlw #0x11
retlw #0x11
retlw #0x14
retlw #0x13
retlw #0x17
retlw #0x11
retlw #0x19
retlw #0x11
retlw #0x16
retlw #0x1C
retlw #0x16
retlw #0x04
retlw #0x10
retlw #0x10
retlw #0x0C
retlw #0x18
retlw #0x0E
retlw #0x0D
retlw #0x0E
retlw #0x09
retlw #0x0A
retlw #0x0B
retlw #0x0A
retlw #0x0C
retlw #0x0A
retlw #0x0D
retlw #0x05
retlw #0x02
retlw #0x00
retlw #0x0A
retlw #0x08
retlw #0x07
retlw #0x0A
retlw #0x0B
retlw #0x18
retlw #0x1C
retlw #0x10
retlw #0x04
retlw #0x02
retlw #0x03
retlw #0x0C
retlw #0x0C
retlw #0x11
retlw #0x11
retlw #0x0A
retlw #0x18
retlw #0x0E
retlw #0x0D
retlw #0x1A
retlw #0x14
retlw #0x13
retlw #0x18
retlw #0x12
retlw #0x08
retlw #0x08
retlw #0x11
retlw #0x11
retlw #0x18
retlw #0x11
retlw #0x15
retlw #0x06
retlw #0x0A
retlw #0x09
retlw #0x0A
retlw #0x08
retlw #0x16
retlw #0x1B
retlw #0x19
retlw #0x13
retlw #0x13
retlw #0x12
retlw #0x18
retlw #0x12
retlw #0x0A
retlw #0x11
retlw #0x10
retlw #0x04
retlw #0x03
retlw #0x0A
retlw #0x0E
retlw #0x13
retlw #0x11
retlw #0x0C
retlw #0x12
retlw #0x13
retlw #0x1A
retlw #0x1A
retlw #0x0C
retlw #0x12
retlw #0x12
retlw #0x16
retlw #0x1C
retlw #0x15
retlw #0x11
retlw #0x07
retlw #0x02
retlw #0x09
retlw #0x18
retlw #0x1B
retlw #0x13
retlw #0x16
retlw #0x1A
retlw #0x11
retlw #0x0A
retlw #0x06
retlw #0x14
retlw #0x0A
retlw #0x11
retlw #0x0E
retlw #0x05
retlw #0x15
retlw #0x13
retlw #0x0C
retlw #0x0C
retlw #0x02
retlw #0x0A
retlw #0x18
retlw #0x16
retlw #0x0C
retlw #0x0E
retlw #0x0E
retlw #0x0D
retlw #0x13
retlw #0x18
retlw #0x1C
retlw #0x18
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x09
retlw #0x10
retlw #0x10
retlw #0x0E
retlw #0x13
retlw #0x0A
retlw #0x0A
retlw #0x0E
retlw #0x11
retlw #0x13
retlw #0x1B
retlw #0x18
retlw #0x12
retlw #0x1A
retlw #0x1C
retlw #0x10
retlw #0x03
retlw #0x0A
retlw #0x0A
retlw #0x0C
retlw #0x09
retlw #0x0E
retlw #0x15
retlw #0x1B
retlw #0x0E
retlw #0x0E
retlw #0x06
retlw #0x04
retlw #0x0C
retlw #0x09
retlw #0x16
retlw #0x11
retlw #0x06
retlw #0x0E
retlw #0x0E
retlw #0x0A
retlw #0x13
retlw #0x13
retlw #0x13
retlw #0x06
retlw #0x03
retlw #0x01
retlw #0x07
retlw #0x18
retlw #0x16
retlw #0x11
retlw #0x1C
retlw #0x15
retlw #0x0C
retlw #0x0C
retlw #0x0A
retlw #0x06
retlw #0x0A
retlw #0x13
retlw #0x09
retlw #0x13
retlw #0x10
retlw #0x09
retlw #0x10
retlw #0x1A
retlw #0x13
retlw #0x11
retlw #0x10
retlw #0x10
retlw #0x0D
end
Voila.... Si vous voyez des modifs a apporter n'hesiter pas...
Vive l'open source!!!!
Guillaume Marceau alias Stormy