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!!!
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
>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
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
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.
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!
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
>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
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.
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
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
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.
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
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.
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).
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.
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.