Re: Tips eller Samköp? SPI-Flash SST25VF080B

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av gurgalof »

och jag får false = LED släckt, med 0x01 t.ex...
Missade att skriva det, sorry!

0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Jag ska koppla in 8 LED's, så är det lättare att se vad man får ut för bitar...
En enkel slags debug...


EDIT: Vart tog BEEP's inlägg som jag svarade på innan mig vägen?
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Inlägget var inte bra så jag tänkte att det var bäst att göra ett nytt innan någon hann läsa det :)
Här är inlägget.
"Och för att bekräfta att det inte är 0xFF som kommer ut, så har jag provat med (status & 0x01) osv.."

Om status är 0xFF så kommer "if (status & 0x01)" att vara sant.
Alla jämförelser som inte ger resultatet noll kommer att vara sant.
Senast redigerad av BEEP 21 mars 2009, 11:32:48, redigerad totalt 2 gånger.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

"if(status & 0x02)"
Alla jämförelser med "status" där bit 1 är satt till 1 kommer att vara sanna.

"och jag får false = LED släckt, med 0x01 t.ex..."
Om "status" är 0x01 så blir det falskt för att bit 1 är noll.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

"Kör du systemklocka på 8MHz?"
Ja.

"Det som händer är att status blir 0xFF både med eller utan minnet inkopplat, vilket gör att "if (status & 0x02)" tänder lysdioden."
Jag hade glömt att ta bort programmeringskabeln så nu blir status 0x00 (stendöd). Får ta och koppla in oscilloscopet och se hur signalerna ser ut.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av jesse »

Kan det verkligen vara så svårt? Jag trodde SPI var ganska enkelt (jämfört med I²C t.ex. som jag fasar för)... Är det så också att själva protokollet (instruktionerna till FLASH-minnet) är så komplicerat att det är svårt att veta om det är fel på själva SPI överföringen eller om man skickar felaktiga koder till minnet? En del minnen verkar ju vara jättejobbiga när det gäller att få dom att göra något överhuvudtaget.
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av gurgalof »

Jag har nu fixat ihop ett videoklipp som visar att det fungerar!

FILM!

Kod: Markera allt

void WREN_Check(void)
{
	unsigned char status = 0;
	status = RDSR();
	PORTD = status;              //Lade till denna! För att visa vad jag får ut för data!
	if (status & 0x02)
	{
		PORTB |= (1<<PORTB0);
	}else{
		PORTB &= ~(1<<PORTB0);
	}
}
Något mer jag ska visa?
Kanske ska rita ett schema också... :D
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Jag hänger inte alls med på vad du gör för att om man direkt kör WREN och WREN_Check utan något hokus pokus före så ska bara "status" bit.1 vara 1 (0x02).
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av gurgalof »

Titta på sidan 6 i databladet....
Och på sidan 7 står det också: "Default at power-up for BP2, BP1, and BP0 is ‘111’. (All Blocks Protected)"

Jag får ju ut i filmen 00011110 där bit 1 är WEL biten 2,3,4 är BP 0,1 och 2. Allt precis så det ska vara!

Därför jag kör en AND för att kolla att just bit 1 är satt!
Jag såg att du hade == 0x02 i din SPIN kod, och det blir ju false eftersom bit 2,3,4 är satta från början vid uppstart.

Inget Hokus Pokus utan det är så enligt databladet.
Hänger du med nu?
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Du har fått liv i minnet :bravo: :yeahright: :whoho:

"Och på sidan 7 står det också: "Default at power-up for BP2, BP1, and BP0 is ‘111’. (All Blocks Protected)""

Okej, då är jag med :)

"Jag såg att du hade == 0x02 i din SPIN kod, och det blir ju false eftersom bit 2,3,4 är satta från början vid uppstart."

Jag har haft lysdioder inkopplade för att se bitarna men om minnet ska köras i minst 4 MHz så fungerar det inte med min SPIN kod.

Tyvärr så är minnet lika dött med din kod på AVR sidan så jag ska ta och prova med ett nytt minne, kanske var det min katt Lucas som släckte ljuset när han var framme och nosade på kopplingarna.

EDIT:
"Inget Hokus Pokus utan det är så enligt databladet."
Det var inte din kod som jag kallade för "hokus pokus" för vad jag menade med det var att om man inte skickade något annat ("hokus pokus") till minnet före WREN och WREN_Check så skulle "status" vara 0x02.
Senast redigerad av BEEP 22 mars 2009, 02:17:45, redigerad totalt 2 gånger.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av sodjan »

> kanske var det min katt Lucas som släckte ljuset

Tja, det sägs ju att det var Lucas som uppfann mörkret... :-)
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Jag hade en bil med ett Lucas elsystem och nästan varje gång jag startade bilen så gick 3-4 säkringar sönder. En eller två av dom var till ljuset :)
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Bild
Användarvisningsbild
gurgalof
EF Sponsor
Inlägg: 1311
Blev medlem: 18 februari 2004, 22:15:06
Ort: Göteborg
Kontakt:

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av gurgalof »

Success!
Vad var felet?

Nästa steg är väl att skriva något till minnet, och sedan försöka läsa av det igen...
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Båda minnena var trasiga.

Min lödkolv går på 230 V så det kanske är den som är boven så nu drar jag för säkerhets skull ur kontakten medans jag löder på minnena.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Tips eller Samköp? SPI-Flash SST25VF080B

Inlägg av BEEP »

Jag har lödat fast ett nytt minne på kontakten till Propellern och det fungerar.
Hastigheten verkar inte vara något problem för det går att köra minnet väldigt långsamt.

Bild

Kod: Markera allt

CON
  '--- 80 MHz ---                                                       
  _clkmode = xtal1 + pll16x ' PLL
  _xinfreq = 5_000_000      ' Crystal 5 MHz
                            
  SI  = 0                   ' Serial Data Input
  SCK = 1                   ' Serial Clock
  SO  = 2                   ' Serial Data Output
  CE  = 3                   ' Chip Enable
  LED_DEBUG = 7             ' Led                      
  PIN_MASK = 1<<SI | 1<<SCK | 1<<CE | 1<<LED_DEBUG

PUB Main
  Init                          ' Set pin and initialize SCK   
  WREN                          ' Enable Write Enable Latch
  WREN_Check                    ' WEL check
 
  repeat                                 
                                                                 
PUB Init                                                           
  dira |= PIN_MASK              ' Set output       
  outa[SCK] := 0                ' Set clock to low initial state

PUB WREN
'' This procedure enables the Write Enable Latch.
'' It can also be used to Enables Write Status Register.
  outa[CE] := 0                 ' Enable device, clear CE low
  Send_Byte($06)                ' Send WREN command
  outa[CE] := 1                 ' Disable device, set CE high

PUB WREN_Check | byte_
'' This procedure checks to see if WEL bit set before program/erase.
  byte_ := Read_Status_Register ' Read the status register

  '--- Status leds ---
  dira |= $FF00                  
  outa |= (byte_<<8)

  if byte_ & $02               ' Verify that WEL bit is set
    outa[LED_DEBUG]~~     
  else                 
    outa[LED_DEBUG]~                                                        
                     
PUB Read_Status_Register | byte_         
  outa[CE] := 0                 ' Enable device, clear CE low
  Send_Byte($05)                ' Send RDSR command
  byte_ := Get_Byte             ' Receive byte
  outa[CE] := 1                 ' Disable device, set CE high
  result := byte_
 
PRI Send_Byte(out) | i
  repeat i from 0 to 7          ' for (i = 0 i < 8 i++)   
    if (out & $80) == $80       ' check if MSB is high
      outa[SI] := 1
    else
      outa[SI] := 0             ' if not, set to low           
    outa[SCK] := 1              ' toggle clock high   
    out := (out << 1)           ' shift 1 place for next bit   
    outa[SCK] := 0              ' toggle clock low   
   
PRI Get_Byte | i,in,temp
  in := 0
  repeat i from 0 to 7          ' for (i = 0 i < 8 i++) 
    in := (in << 1)             ' shift 1 place to the left or shift in 0
    temp := ina[SO]    
    outa[SCK] := 1              ' toggle clock high
    if temp == 1                ' check to see if bit is high
      in := in | $01            ' if high, make bit high      
    outa[SCK] := 0              ' toggle clock low               
  result := in             
                                                 
Senast redigerad av BEEP 23 mars 2009, 18:54:36, redigerad totalt 1 gång.
Skriv svar