Sida 5 av 5
Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 20 januari 2012, 18:16:53
av vfr
Beklagar!
Husdjur kan vara nog så tillgivna. Vi har också katt med mycket personlighet. Bävar för den dagen hon inte finns längre...
Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 8 oktober 2012, 19:24:24
av squiz3r
Nu har även jag fått tummen ur och börjat leka med minnena. Det var ju inte alls svårt, varför har jag skjutit upp det? Eller tja, det fungerar inte...
Jag försökte att (sätta CE låg) först skicka 06h (WREN) och sedan sätta CE hög och sätta den låg igen varefter jag skickade 05h och en dummybyte (sen satte jag CE hög igen). Men under samtliga av dessa tre sändningar fick jag tillbaks 00111000, dvs BP3, BP2 och BP1 höga, de andra låga. Men så bör det ju inte se ut.. Och jag bör inte få någon data tillbaksskickad då jag sänder 06h och 05h, utan bara när jag sänder dummybyten efter 05h?
Efter detta inträffade en annan lustig sak.. Utgången från minnet blev nertonad så att det bara kommer brus med 0,5v amplitud när den skall sända.. Detta kom och gick i början, sen blev det så på heltid.. Någon glappkontakt kan jag ej hitta och avkopplat är det.. Någon som upplevt något liknande? Jag kör allt på 3,3 volt från Pickit 2. Jag har kört på både ca 1MHz klockfrekvens (Fosc/4, fast detta borde ju bli 2MHz då intosc tickar i 8MHz... men 1MHz enligt oscilloskopet..) och runt 100kHz (Fosc/64).
Min kod till PIC16F886:
Kod: Markera allt
list p=16f886
#include <p16F886.inc>
__CONFIG _CONFIG1, _FOSC_INTRC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR4V_BOR21V & _WRT_OFF
; Definiera adress till variabler..
dly1 equ 0x20
dly2 equ dly1 + 1
dly3 equ dly2 + 1
dat equ dly3 + 1
; Definiera pinnar
#define minneCE PORTC,2
#define led PORTA,0
reset_vector CODE 0x000
goto start
int_vector CODE 0x004
start CODE 0x006
start
banksel OSCCON
movlw 0xff
movwf OSCCON ; Sätt intern klocka till 8MHz..
banksel ANSEL
clrf ANSEL ; Alla digitala..
banksel TRISA
clrf TRISA
banksel PORTA
movlw 0xff
movwf PORTA
call init_spi ; Initsiera SPI-modulen..
main
bcf minneCE ; Sätt Chip Enable hög..
nop
nop
movlw 0x06 ; Skicka 06h (WREN)
call spi_send_byte
nop
nop
bsf minneCE
nop
nop
bcf minneCE
nop
nop
movlw 0x05 ; Skicka 05h (Read status-reg)
call spi_send_byte
movlw 0x00
call spi_send_byte ; Skicka dummybyte bara för att få en klocksignal (mottag data)
movwf dat ; Spara mottagen data.
nop
nop
bsf minneCE
call delay
goto main
; **************************************
; SPI-rutiner..
; INIT
init_spi
banksel TRISC
bcf TRISC,5 ; Gör SDO till utgång
bcf TRISC,3 ; Gör SCK till utgång
bcf TRISC,2 ; Gör Chip-select till utgång..
banksel PORTC
bsf PORTC,2
; Data samlas in av SST25VF080B-minnet på den stigande flanken av klocksignalen (Mode 3 eller Mode 0),
; därför är läge CKP = 0, CKE = 1 lämpligt. Datautgång på minnet ändras efter fallande flank => läs på stigande flank, SMP = 0.
banksel SSPSTAT
movlw b'01000000' ; SMP, CKE, .(i2c only).., status (BF)
movwf SSPSTAT
banksel SSPCON
movlw b'00000010' ; SSPEN = 0, CKP = 0, clock = Fosc/4
movwf SSPCON
bsf SSPCON,SSPEN
; (SSPCON ligger i bank 0..)
return
; SKICKA BYTE
spi_send_byte
movwf SSPBUF ; Skicka värde i W-reg.
banksel SSPSTAT
spi_send_byte_a
btfss SSPSTAT,BF ; Vänta på att Buffer Full flaggan skall sättas (Den gör tydligen det också när den blivit tömd av hårdvaran (data skickad)?)
goto spi_send_byte_a
banksel SSPBUF
movfw SSPBUF ; Lägg mottagen data i arbetsreg.
return
; **********************************
; Fördröjningsrutiner..
delay
movlw 0
movwf dly2
delay_2
movlw 0
movwf dly1
delay_1
decfsz dly1,1
goto delay_1
decfsz dly2,1
goto delay_2
return
delay_w
movwf dly2
delay_w_2
movlw 0
movwf dly1
delay_w_1
decfsz dly1,1
goto delay_w_1
decfsz dly2,1
goto delay_w_2
return
end
Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 14 oktober 2012, 17:40:14
av BEEP
Jag har plockat fram ett minne och gjort ett test.
06h, 05h utan dummy byte returnerar 00000000
06h, 05h med dummy byte returnerar 00011110
Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 15 oktober 2012, 13:20:12
av jesse
Jag har "drivrutiner" för denna minneskrets för ATmegaxx om någon är intresserad.
Inte helt komplett (saknar vissa funktioner) men duger till att skriva och läsa i alla fall.
Bifogar källkod:
flashmem.h
flashmem.c
Dessa kräver även SPI-drivrutiner:
spi.h
spi.c
SPI-drivrutinerna är utformade lite oflexibelt - de förutsätter att man använder vissa pinnar på PORTB som SS (chip select) och som väljare av SPI-enhet. Men det är ju lätt ändrat om man vill. SPI.h kräver även att det ska finnas en main.h där vissa parametrar anges (macron med SPI-hastighet med mera)
ehh.. nu får jag ungefär en miljon fel när jag försöker kompilera ett minimalistiskt testprogram som skriver och läser från flashminnet....
Ska försöka få ordning på det. Skickar källfilerna i alla fall så länge (de fungerar ju ihop med mitt originalprogram).
EDIT2:
Har nu fixat lite och gjort ett "testprogram" . main.h innehåller en del parametrar man måste ha med. F_CPU måste också vara definierad.
Programmet är gjort för ATMega644A men fungerar nog på de flesta mega-AVR.
Kan hantera bl.a. SST25VF080B och AT25DF041A.
Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 15 oktober 2012, 21:22:45
av BEEP
@jesse
Är det något fel på min och gurgalofs kod på sidan 4

Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 15 oktober 2012, 22:39:04
av jesse
Säkert inget fel alls (Men jag hade glömt att det fanns där).
Nu finns det fler alternativ för den som vill välja

Re: Tips eller Samköp? SPI-Flash SST25VF080B
Postat: 15 oktober 2012, 23:48:21
av BEEP
Alltid trevligt med mera kod
Ska titta på den så fort jag får tid.