mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Flash als Speicher für DAten verwenden (ATtiny13)


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich arbeite mit den ATtiny13 und habe das Problem, dass der EEPROM zu 
klein ist.
Ich möchte nämlich einen Text über die serielle Schnittstelle ausgeben, 
wenn der Text immer gleich ist, kann ich ihm im Programm einfach so 
schreiben, er steht dann irgendwo im Flash. Das Problem ist nun, dass 
der Text dem Mikrocontroller übermittelt werden soll, und der 
Mikrocontroller diesen dann speicher soll, möglichst aber am Ende des 
Flashs.
Ist das über haupt möglich?
Vielen Dank!!!

Autor: Guido Scheidat (flintstone)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

ich vermute, dass es möglich ist, da ein Bootloader auch nichts anderes 
macht. Ist es aber nicht einfacher einen externen EEPROM anzuschliessen? 
Ich denke da an einen Chip der z.B. mit TWI (I2C) arbeitet.

Gruß
Guido

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat überhaupt jemand verstanden, was ich machen will?
Schätze, ich hab mich unklar ausgedrückt, oder?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat überhaupt jemand verstanden, was ich machen will?
>Schätze, ich hab mich unklar ausgedrückt, oder?

Schätze, du hast es selber noch nicht ganz verstanden.

Die Stichworte von Guido sind alle richtig, such dir das für dich 
passende aus.

Oliver

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das geht, kuckst Du ins Datenblatt [1] ins Kapitel "16. 
Self-Programming the Flash".

Obs sinnvoll ist sei mal dahingestellt. Überlegenswert wäre wie schon 
angesprochen ein externer Speicher, eeprom/flash/sram/..

HTH

[1] http://atmel.com/dyn/resources/prod_documents/doc8126.pdf

Autor: Gast 57 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

verstanden habe ich schon, was Du machen willst.

Gehen wird es, im Prinzip ja (Radio Eriwan, wer kennt das noch)
ABER:
Du mußt halt auf einiges achten:

Der Flash wird Pageweise geschrieben. (Pagegröße siehe Datenblatt)
Der Flash ist nicht gerade sehr häufig überschreibbar.
Die Daten müssen irgendwie in den µC kommen.
(Gilt auch für ein externes EEPROM)

Ich halte die Lösung die Texte im Flash "zwischenzuspeichern"
für eher suboptimal. Ein kleines serielles EEPROM wie auch
von Guido Scheidat dürfte die sinnvollere Lösung sein.

Autor: Matthias Keller (mkeller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im AVR-Gcc Tut gibts zumindest mal den Ansatz:

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Ich denke wenn du einen ATtiny13 einsetzt, kommt es auf die Größe an. 
Also kein externes EEPROM möglich.

Wie oft wird der Text denn übertragen? Einmal? Oder ständig?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,
tut mir leid Guido, unsere Posts haben sich überkreuzt!

Einen externen EEPROM möchte ich nicht anschließen, ich hab dafür keinen 
Platz.
Ja, so was wie ein Bootloader soll es werden, nur das ich eben diese 
geschriebenen Bytes nicht ausführen, sondern lesen möchte.
Gibt es was in BASCOM, das mir helfen könnte?
Vielen Dank!

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Text wird nur einmal geschrieben, aber oft ausgelesen.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Bascom kann ich Dir nicht helfen, aber zumindest ein Grundgerüst (in 
C :-) liefern - die eigentlich einzige Herausforderung ist, dafür zu 
sorgen, dass die Flashseite(n) nicht anderweitig benutzt wird(werden). 
In C ist das ganz einfach zu erreichen: eine eigenen Section anlegen, 
eine Variable hinreichender Größe (ein ganzzahliges Vielfaches der 
Seitengröße) ebendort hineinpacken, die Section beim Linken z.B. 'ganz 
nach hinten' legen. Fertig.

Zum Lesen: pgm_read_byte() und co.
Zum Schreiben: Gemäß Datenblatt die Seite löschen, den neuen Text in den 
Puffer legen, die Seite neu schreiben.

Jetzt viel Spaß beim Umsetzen auf Bascom ;-)

HTH

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es was in BASCOM, das mir helfen könnte?

Die Bascom-Hilfe, das Datenblatt zu deinem Controller, dazu aus dem 
Tuturial hier ein Kapitel über Daten im Flash.

Oliver

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver schrieb:
>>Gibt es was in BASCOM, das mir helfen könnte?
>
> Die Bascom-Hilfe,

In diesem Fall, ausnahmsweise, würde mich das sehr wundern, wenn die 
Hilfe dazu irgendetwas zu sagen hätte.

Das Problem ist auch in C schon so speziell, dass man höchst 
wahrscheinlich erst mal 3 Tage Recherche im Forum benötigt, ehe da 
irgendetwas Brauchbares dabei rauskommt.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> In diesem Fall, ausnahmsweise, würde mich das sehr wundern, wenn die
>
> Hilfe dazu irgendetwas zu sagen hätte.

Das wäre ja die dabie zu gewinnenden Erkenntnis, ob das mit Bascom geht, 
oder auch nicht.

Für jemanden, für den schon nicht-auszuführende Daten im Flash Neuland 
sind, enthält die Aufgabestellung sowieso noch einige größere 
Herausforderungen. C zu lernen, dürfte dabei noch nicht einmal die 
schwierigste davon sein.

Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht den ATtiny85 nehmen, der hat 512Bytes EEPROM.

Beim ATtiny13 werden die Schreibroutinen ne Menge des winzigen Flash 
(512 Words) verbrauchen, da wird kaum was zum Speichern übrig bleiben.
Und Deine Applikation wird ja auch nicht nur aus Luft bestehen.


Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,
das ist ne gute Idee, so kann ich es lösen.
Nur ist der Versand bei Reichelt recht hoch, gibt es nich einen 
ähnlichen Tiny-Controller, der die Größe des tiny13 hat und der was 
billiger ist, und den es auch bei Conrad gibt?
Ich brauche nur 100Byte, die 64 reichen ganz knapp nicht aus.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick schrieb:
> Ich brauche nur 100Byte, die 64 reichen ganz knapp nicht aus.

Dann sollte schon der ATtiny25 reichen (CSD: 1,40€).

CSD verschickt die als Brief, der Versand ist also recht günstig.
Einfach mal anrufen, was es genau kostet.


Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peter,
der ist genau das richtige.
Der lässt sich doch genauso programmieren wie der tiny13 (auch von der 
Hardware)?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was empfiehlt sich denn als Speichermöglichkeit für Daten, die sich oft 
ändern?

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RAM

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... Was empfiehlt sich denn als Speichermöglichkeit für Daten, die sich 
oft
ändern? ...

Wie oft?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
minütlich

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Intern: RAM - oder reihum durch's EEPROM wandern, wenn nur wenig Bytes. 
Ausrechnen, bei wieviel Daten und wieviel EEPROM das wie lange 
mindestens hält.

Extern: FRAM - oder EEPROM/Dataflash mit gleicher Strategie wie oben.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schon was externes..

also etwa jede Minute 1kb schreiben
und 2-5 jahre solltes schon halten

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also 1KB insgesamt und nur der letzte Block wird benötigt?

1/Minute gibt bei 2 Jahren 1 Mio Schreibvorgänge. Ein externes EEPROM 
kann 1 Mio Schreibzyklen, bereits einige KB solchen EEPROM reichen dafür 
also aus.

Ideal ist FRAM, ist auch gut verfügbar (z.B. bei TME).

Autor: didadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
60  24  365,25 = 525960 Schreibvorgänge pro Jahr

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1kb insgesamt, aber verteilt und nicht als 1kb block.

okay, ich schau mal, was ich zu fram finde, ansonsten halt doch 
"normales" eeprom.

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit einem Tiny 25, 45 oder 85? Die haben 2, 4 bzw. 8x soviel 
RAM und EEPROM-Speicher an Bord und sind zumindest Pinkompatibel.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FM24C16A: 2KB FRAM (TME). Schreibt sich wie I2C-EEPROM, nur ohne 
Schreib/Löschzeit und beliebig oft.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas K. schrieb:

> Wie wärs mit einem Tiny 25, 45 oder 85? Die haben 2, 4 bzw. 8x soviel
> RAM und EEPROM-Speicher an Bord und sind zumindest Pinkompatibel.

Aber nur 100000 mal (sicher) beschreibbar. Ergibt bei 2 Jahren eine
Mindestkapazität von 10KB. Ausserdem wurde der ältere Thread von Klaus
gekapert, insofern ist offen ob ebenfalls 8-Pin Zwerg.

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Aber nur 100000 mal (sicher) beschreibbar.

Guck, der Arbeitsspeicher wächst im selben Verhältnis, wenn er groß 
genug ist müssen die Daten nicht ins EEPROM.
Wäre eigentlich eine tolle Lösung für sein Problem, wenn er nicht schon 
selbst drauf gekommen ist und es sich gespart hat, uns freundlicherweise 
zu unterrichten, um dem Thread ein vernünftiges Ende zu spendieren.

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.