Probleme mit SPI-Flash Schaltung (Code)

OP #1198403
Hallo,
Ich bin Grade dabei ein Flash SST25VF016B an einen ATMEGA88 zu 
betreiben.
Das ganze lief erst recht gut aber hat dann schlagartig den Geist 
aufgegeben, habe die Schaltung 2 mal neu aufgebaut alle Bauteile 
ausgetauscht.
Ich versuche erstmal nur die Seriennummer auszulesen , wiegesagt hat 
alles wunderbar geklappt.

Habe das Flash folgendermaßen angeschlossen:
CE  -> PB1(+Pullup 10k)
SO  -> MISO
SI -> MOSI
WP -> VCC
HOLD -> VCC
SCK -> SCK


Brauche da eine Anstoß einzige Idee die ich habe ist das evtl. mein 
Programmer USBprog mir mit den 5V den Flash zerstört . da die ja an 
selben SPI-BUS sind . Flash kann max 3.6V

Danke hoffe jemand kann mir helfen, wie gesagt das ganze ging vorher, 
hängt jetzt beim lesen..
Angehängte Dateien:
Gast #1198419
Aeh, ja. Die Spannung ... Da sollte man allenfalls einen Levelkonverter 
zwischenschalten. Du hast in echter Kamikatze Manier einfach mal 
probiert ? Ja. das kann man machen...
Gast #1198429
Tja. Ich weiss es nicht, aber wenn die Teile nur 3.6V koennen... weshalb 
wuerde der Hersteller eine so niedrige Spannung anschreiben wenn mehr 
drinliegen wuerde ? Um die Entwickler zu knechten ?
OP #1198467
Habe den Controller jetzt ohne Flash(Neues Flash) Programmiert, ihn ca 
20 mal Resetet einmal habe ich die richtigen Registerwerte bekommen.
Ich verstehe das alles nicht irgend eine Idee was ich falsch mache 
Schaltung wird mit 16mhz betrieben
OP #1198644
Momentan schlecht. habe den Quarz getauscht, und einen 1uf Keramik 
Kondensator  diereckt an das VSS/VDD vom Flash
habe jetzt bemerkt wenn ich das Flash mit den Finger
berühre empfängt er etwas aber nur Schrott, andernfalls macht er nichts 
erhängt halt immer beim lesen.
OP #1199670
juhuu lalalala...
heute schmeiss ich ne Party!
Also CE auf PB2 muss als Ausgang definiert werden auch wenn ich  PB1 
verwende .. keine Ahnung warum jemand Ahnung wo das im Datenblatt steht 
.
es geht ! .. alle meine Flashs sind trotz überdosis  nicht gestorben.


Hier die abgeänderte SpiINIT

[code]
void SPI_MasterInit(void)
{
  /* Set MOSI and SCK output, && SS all others input */
  DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<PB1)|(1<<PB2);

  Flash_Disable();

  for(unsigned char a=0;a<200;a++){
  nop(); //#define nop()  _asm__ __volatile_ ("nop" ::)
  };    //Wartennn

  /* Enable SPI, Master, set clock rate fck/2 */
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPI2X);

}
[code/]

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.