Atmega flash beschreiben via SPI

Gast #1289410
Hallo Leute,

bin mit meiner software SPI nun soweit vorgedrungen, dass ich 
erfolgreich in den Programmiermodus eines zweiten Atmega8 wechseln kann, 
das Flash richtig auslesen kann, EEprom programmieren und lesen 
funktioniert ebenfalls.

Probleme bereitet mir allerdings das programmieren des Flashspeichers 
(was ja in Pages geschieht)...
Ich kann davon ausgehen, dass die Kommunikation passt (alle möglichen 
anderen Befehle kann ich wunderbar ausführen) und auch nicht aus der 
synchronisation kommt (nach dem Versuch der Programmierung des 
Flashsspeichers funktionieren alle anderen Befehle noch).

Die Methoden hab ich größtenteils analog zu den sourcen aus usbprog, 
irgendwas passt aber anscheinend nicht.

Vorgehensweise:

-> enable programming
-> Page im Atmega mit 32 Words füllen
-> Write page
-> 20ms warten, nächste Page
1
void softspi_loadFlashPage(char wordl, char wordh, char wordaddr)
2
{
3

4
    // write low
5
    softspi_rwb(0x40);
6
    softspi_rwb(0x00);
7
    softspi_rwb(wordaddr);
8
    softspi_rwb(wordl);
9

10
    // write high
11
    softspi_rwb(0x48);
12
    softspi_rwb(0x00);
13
    softspi_rwb(wordaddr);
14
    softspi_rwb(wordh);
15

16
}
1
void softspi_saveFlashPage(uint16_t pageAddress) {
2
      char addrh,addrl;
3

4
      addrh = (char)(pageAddress >> 8);
5
      addrl = (char)(pageAddress);
6

7
      softspi_rwb(0x4C);
8
      softspi_rwb(addrh);  //high-byte of page address
9
      softspi_rwb(addrl);  //low-byte  of page address
10
      softspi_rwb(0x00);
11
      _delay_ms(20);
12
}


Also laut Datenblatt ( 
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf Seite 240) 
sollte das schon so funktionieren...


Achja, mit nem avrispmkII lässt sich der mega8 wunderbar beschreiben, 
die fehlerfreiheit der leseroutine für den flash hab ich damit auch 
geprüft.

Nach dem Versuch der Programmierung auf diesem Wege ist der Flash 
verändert. Allerdings egal nach welchem zu programmierenden Muster 
gleich.

Hab mir schon die einzelnen Bytes, die auf der SPI ausgegeben werden 
angesehen, ist alles richtig und laut Datenblatt (meiner Meinung nach).


Falls irgendjemand sowas ähnliches schonmal gemacht hat. Help! ;)


Danke euch!
Gast
Ich wieder... (etwas glücklicher als vorhin ;) )

Wenn ich nen chipErase vor dem Programmieren mache, dann klappt's!


Ääääääääääääääh, das steht im Datenblatt nur unter Parallel 
Programming......

Naja, jetzt klappts :)

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.