Forum: Mikrocontroller und Digitale Elektronik Flash-Speicher vom ATTINY25 beschreiben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael S. (misax)


Bewertung
0 lesenswert
nicht lesenswert
Hallo;
kann mir jemand ein kleines übersichtliches Beispielprogramm posten wie 
man den Flash-Speicher im ATTINY25 beschreiben kann ?
Ich weiss dass man das Fusebit auf Null setzen muss um den SPM Befehl 
zuzulassen und dass man erst die Register beschreiben muss und dann ein 
Steuerbit setzen muss um dann inerhalb von 4 Taktzyklen den SPM Befehl 
abzusetzen sowie dass die Register R30 und R31 die Adresse beinhalten 
und das Register R0 den Wert aber ich kriegs nicht hin.
Dann habe ich gelesen dass man erst einen Erase-Befehl absetzen muss und 
danach erst das Beschreiben. Ausserdem dass der Flash seitenweise 
beschrieben wird. Da verstehe ich nicht ganz wieso die beiden Z-Register 
(30 und 31) doch genau auf EIN Wort hinweisen und nicht auf 16.
Oder ?
Ach so: Bitte keine Fragen wieso und warum und was ist der Sinn. Es ist 
einfach ein Interesse von mir ohne praktischen Nutzen. Mich interessiert 
einfach nur wie das geht.
Danke

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es den Hersteller zu befragen:
http://ww1.microchip.com/downloads/en/AppNotes/Atmel-2575-C-Functions-for-Reading-and-Writing-to-Flash-Memory_ApplicationNote_AVR106.pdf
Zwar kein Beispielprogramm, aber die Programmiersprache hattest Du ja 
auch nicht genannt.

von Michael S. (misax)


Bewertung
0 lesenswert
nicht lesenswert
danke der Link ist schonmal gut.
Ich programmiere in Assember.

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Am besten mal einen Bootloader anschauen. Da wird ja ausgiebig davon 
Gebrauch gemacht, z.B. hier:
Beitrag "Re: UART Bootloader ATtiny13 - ATmega644"

von My T. (mtram)


Bewertung
0 lesenswert
nicht lesenswert
Im Gegensatz zu bekannten Bootloader-Projekten hat mir sehr geholfen:
g-heinrichs.de/attiny/Bootloader.pdf
Daraus entstand das ASM f.T45:
;avrdude -P /dev/ttyUSB0 -c stk500v2 -p t45 -V -Uflash:w:boot1.hex:i
;avrdude -P /dev/ttyUSB0 -c stk500v2 -p t45 -F -V -Uefuse:w:0xfe:m
.include "tn45def.inc"
.def wert  = r16
.def seite  = r17
.def RWCount  = r23
.def spmcsrval  = r22
.def A     = r27
.org 32
Anfang:
  ldi seite,14; oder andere Testwerte
Testen:
  inc seite
 Rrcall WrPage 
 rjmp  -1 ; oder bis ? Testen
WrPage:
  ; rcall Zhl ;Berechnen Z 
  ldi ZH,1; 2 sind dann 32 word weiter
  ldi ZL,0 ; oder 16 32 48 bei t45
  ldi RWCount, 32
; Puffer fuellen
Schreib_schleife:   
 ;  rcall getByte
  ldi wert,11 ; zum Test: Festwert
  mov r0, wert 
  rcall getByte
  mov r1, wert ; einlesen
  ldi spmcsrval, 1
; 1 Wort in Puffer schreiben
  out spmcsr, spmcsrval
  spm
  inc ZL ; Adresse + 1 Word 
  inc ZL
  dec RWCount
  brne Schreib_schleife
; SeiteLoeschen:
  subi ZL,64
  ldi spmcsrval, 3 
  out spmcsr, spmcsrval
  spm
; evtl.hier Pause 
; Puffer in FLASH-Seite schreiben
  ldi spmcsrval, 5
  out spmcsr, spmcsrval
  spm
  ret ;WrPage
Mein Leseprogramm funktioniert leider nicht, deshalb will ich das hier 
auch nicht komplett einstellen.
Hoffe, dass beim Entfernen einiger Code-Teile nichts falsch geworden 
ist.
Fuer t25 sind wohl die Pages nur halb so grosz, also ZL 8 mal erhoehen 
bis zum naechsten ZH.

von Michael S. (misax)


Bewertung
0 lesenswert
nicht lesenswert
Für diese sehr konkrete Hilfestellung bedanke ich mich schonmal vorab 
und melde mich wieder wenn ich alles ausprobiert habe.

von S. Landolt (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
'What else is there to do on a Saturday, when your girl-friend has left 
you, your TV-set is broken and your jogging-suit is in the wash?'

(Corona blieb Charles M. Schulz erspart)

von S. Landolt (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung, noch mal.
(falscher Sprung in §page_checking)

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.

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