www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega flash beschreiben via SPI


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
void softspi_loadFlashPage(char wordl, char wordh, char wordaddr)
{

    // write low
    softspi_rwb(0x40);
    softspi_rwb(0x00);
    softspi_rwb(wordaddr);
    softspi_rwb(wordl);

    // write high
    softspi_rwb(0x48);
    softspi_rwb(0x00);
    softspi_rwb(wordaddr);
    softspi_rwb(wordh);

}
void softspi_saveFlashPage(uint16_t pageAddress) {
      char addrh,addrl;

      addrh = (char)(pageAddress >> 8);
      addrl = (char)(pageAddress);

      softspi_rwb(0x4C);
      softspi_rwb(addrh);  //high-byte of page address
      softspi_rwb(addrl);  //low-byte  of page address
      softspi_rwb(0x00);
      _delay_ms(20);
}


Also laut Datenblatt ( 
http://www.atmel.com/dyn/resources/prod_documents/... 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!

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur, es sind natürlich 16 Words per Page!

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Erase kannst du nur eine 1 auf eine 0 ändern aber nicht umgekehrt.

Autor: Rik Langobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, darf ich mal fragen, was du dir da baust?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.