Bonjour, j'ai bien une petite idée : en utilisant la liaison série. Mais le problème c'est comment recevoir octet par octet ce fichier ?
du coté picaxe 28x2, un programme de ce style pour une mémoire flash en25qh16 (http://www.alldatasheet.com/datasheet-pdf/pdf/458188/EON/EN25QH16.html), le fichier est envoyé avec hyperterminal.
Bien sûre rien ne se passe... Connaissez-vous un petit soft coté pc qui enverrait octet par octet le fichier ?? Je pense que mon problème vient de là ! ou un bug dans mon code du 28x2 ?
Merci d'avance pour votre aide.
du coté picaxe 28x2, un programme de ce style pour une mémoire flash en25qh16 (http://www.alldatasheet.com/datasheet-pdf/pdf/458188/EON/EN25QH16.html), le fichier est envoyé avec hyperterminal.
Bien sûre rien ne se passe... Connaissez-vous un petit soft coté pc qui enverrait octet par octet le fichier ?? Je pense que mon problème vient de là ! ou un bug dans mon code du 28x2 ?
Merci d'avance pour votre aide.
Code:
; cablage
; 1 = CS = PICAXE B.7
; 2 = SO = PICAXE C.4
; 3 = WP = +3.3V
; 4 = Vss = 0V
; 5 = SI = PICAXE C.5
; 6 = SCK = PICAXE C.3
; 7 = HOLD = +3.3V
; 8 = Vdd = +3.3V
;
symbol cs = b.7 ' chip select PICAXE b.7
; Commands
symbol WRSR = 1 ; write status register
symbol PP = 2 ; page programming
symbol RD = 3 ; read
symbol WRDI = 4 ; write disable
symbol RDSR = 5 ; read status register
symbol WREN = 6 ; write enable
symbol RSTEN = $66 ; reset enable
symbol RST = $99 ; reset
symbol CE = $c7 ; chip erase
; Variables
symbol add_0 = b0
symbol add_1 = b1 ;
symbol add_2 = b2
symbol test_data1 = b3 ; test data 1
Symbol lec_data1 = b7 ; lecture data 1
symbol SR_Value1 = b11 ; lecture état du registre 1
symbol SR_Value2 = b12 ; lecture état du registre 2
init:
high cs
pause 50
add_0 = 0 ; adresse de début
add_1 = 0
add_2 = 0
;********** setup spi mode - mode 0,0 **********
hspisetup spimode00,spislow
pause 50
;************* reset memoire *****************
low cs
hspiout (RSTEN)
high cs
pause 50 ;tCHSH
low cs
hspiout (RST)
high cs
pause 50
; *******************************************
; ********* permettre l'écriture en désactivant la protection
; write enable
low cs
hspiout (WREN)
high cs
; write status register à 0 pour enlever block protect
low cs
hspiout (WRSR,0)
high cs
pause 5 ; wait write time
;**********************************************
; gosub efface ; efface complètement la mémoire
main:
serin [1000], c.7 ,N4800,(test_data1) ; <===================== récupère un caractère du port série
; write enable
low cs
hspiout (WREN)
high cs
;write
low cs
hspiout (PP,add_2,add_1,add_0,test_data1) <= programme à l'adresse $add_2add_1add_0 l'octet test_data1
high cs
pause 5 ; le temps d'écrire
;read
low cs
hspiout (RD,add_2,add_1,add_0)
hspiin (lec_data1)
high cs
pause 5 ; le temps de lire
; affich lecture données
debug
; serout c.6,N4800,(lec_data1," ") ; <============== renvoie le caractère programmé sur le port série
; pause 1000
; ********************** increment pointeur d'adresse jusqu'à $1fffff *****************************
if add_0 = $ff then bcl
add_0 = add_0 + 1
goto finbcl
bcl:
add_0 = 0
if add_1 = $ff then bcl2
inc add_1
goto finbcl
bcl2:
add_1 = 0
if add_2 = $1f then bcl3
inc add_2
*******************************************************************
finbcl:
goto main
bcl3:
high b.4 ; allume la del si fin du travaille
pause 10000
end
; **************** efface mémire *********************
efface:
low cs
hspiout (WREN)
high cs
low cs
hspiout (CE)
high cs
st2:
;lecture si wip (bit0) = 0 fin de l'effacement
low cs
hspiout (RDSR)
hspiin (SR_Value2)
high cs
SR_Value2 = %00000001 and SR_Value2
if SR_Value2 = 0 then st1
goto st2
st1:
high b.4
pause 1000
low b.4
return
;*********************************************************